Freigeben über


Überwachen von Azure Batch

Dieser Artikel beschreibt Folgendes:

  • Die Arten von Überwachungsdaten, die Sie für diesen Dienst sammeln können
  • Möglichkeiten zum Analysieren dieser Daten.

Hinweis

Wenn Sie bereits mit diesem Dienst und/oder Azure Monitor vertraut sind und nur wissen möchten, wie Überwachungsdaten analysiert werden, lesen Sie den Abschnitt Analysieren am Ende dieses Artikels.

Wenn Sie über unternehmenskritische Anwendungen und Geschäftsprozesse verfügen, die auf Azure-Ressourcen basieren, müssen Sie diese überwachen und Warnungen für Ihr System abrufen. Der Azure Monitor-Dienst sammelt und aggregiert Metriken und Protokolle aus jeder Komponente Ihres Systems. Azure Monitor bietet Ihnen eine Übersicht über Verfügbarkeit, Leistung und Resilienz und benachrichtigt Sie über Probleme. Sie können das Azure-Portal, PowerShell, die Azure CLI, die REST-API oder Clientbibliotheken verwenden, um Überwachungsdaten einzurichten und anzuzeigen.

Ressourcentypen

Azure verwendet das Konzept von Ressourcentypen und IDs, um alles in einem Abonnement zu identifizieren. Ressourcentypen sind auch Teil der Ressourcen-IDs für jede Ressource, die in Azure ausgeführt wird. Beispiel: Ein Ressourcentyp für eine VM ist Microsoft.Compute/virtualMachines. Eine Liste der Dienste und ihrer zugehörigen Ressourcentypen finden Sie unter Ressourcenanbieter.

Ähnliche organisiert Azure Monitor die Kernüberwachungsdaten in Metriken und Protokollen basierend auf Ressourcentypen, die auch als Namespaces bezeichnet werden. Für unterschiedliche Ressourcentypen stehen unterschiedliche Metriken und Protokolle zur Verfügung. Ihr Dienst ist möglicherweise mehr als einem Ressourcentyp zugeordnet.

Weitere Informationen zu den Ressourcentypen für Batch finden Sie unter Batchüberwachungsdatenverweis.

Datenspeicher

For Azure Monitor:

  • Metrikdaten werden in der Azure Monitor-Metrikendatenbank gespeichert.
  • Protokolldaten werden im Azure Monitor-Protokollspeicher gespeichert. Log Analytics ist ein Tool im Azure-Portal zum Abfragen dieses Speichers.
  • Das Azure-Aktivitätsprotokoll ist ein separater Speicher mit eigener Schnittstelle im Azure-Portal.

Optional können Sie Metrik- und Aktivitätsprotokolldaten an den Azure Monitor-Protokollspeicher weiterleiten. Anschließend können Sie Log Analytics verwenden, um die Daten abzufragen und mit anderen Protokolldaten zu korrelieren.

Viele Dienste können Diagnoseeinstellungen verwenden, um Metrik- und Protokolldaten an andere Speicherorte außerhalb von Azure Monitor zu senden. Beispiele umfassen Azure Storage, gehostete Partnersysteme und Nicht-Azure-Partnersysteme, die Event Hubs verwenden.

Detaillierte Informationen dazu, wie Azure Monitor Daten speichert, finden Sie unter Azure Monitor-Datenplattform.

Zugreifen auf Diagnoseprotokolle im Speicher

Wenn Sie Batch-Diagnoseprotokolle in einem Speicherkonto archivieren, wird ein Speichercontainer im Speicherkonto erstellt, sobald ein verwandtes Ereignis auftritt. Blobs werden gemäß dem folgenden Benennungsmuster erstellt:

insights-{log category name}/resourceId=/SUBSCRIPTIONS/{subscription ID}/
RESOURCEGROUPS/{resource group name}/PROVIDERS/MICROSOFT.BATCH/
BATCHACCOUNTS/{Batch account name}/y={four-digit numeric year}/
m={two-digit numeric month}/d={two-digit numeric day}/
h={two-digit 24-hour clock hour}/m=00/PT1H.json

Zum Beispiel:

insights-metrics-pt1m/resourceId=/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/
RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.BATCH/
BATCHACCOUNTS/MYBATCHACCOUNT/y=2018/m=03/d=05/h=22/m=00/PT1H.json

Jede Blobdatei vom Typ PT1H.json enthält Ereignisse im JSON-Format, die innerhalb der in der Blob-URL angegebenen Stunde (Beispiel: h=12) aufgetreten sind. Während der aktuellen Stunde werden Ereignisse an die Datei PT1H.json angefügt, sobald sie auftreten. Der Minutenwert (m=00) ist immer 00, da Diagnoseprotokollereignisse stundenweise in einzelne Blobs unterteilt werden. Alle Zeitangaben sind in UTC.

Das folgende Beispiel zeigt einen PoolResizeCompleteEvent-Eintrag in einer PT1H.json-Protokolldatei. Der Eintrag enthält Informationen über die aktuelle und die vorgegebene Anzahl von dedizierten Knoten und Knoten mit niedriger Priorität und die Start- und Endzeit des Vorgangs.

{ "Tenant": "65298bc2729a4c93b11c00ad7e660501", "time": "2019-08-22T20:59:13.5698778Z", "resourceId": "/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.BATCH/BATCHACCOUNTS/MYBATCHACCOUNT/", "category": "ServiceLog", "operationName": "PoolResizeCompleteEvent", "operationVersion": "2017-06-01", "properties": {"id":"MYPOOLID","nodeDeallocationOption":"Requeue","currentDedicatedNodes":10,"targetDedicatedNodes":100,"currentLowPriorityNodes":0,"targetLowPriorityNodes":0,"enableAutoScale":false,"isAutoPool":false,"startTime":"2019-08-22 20:50:59.522","endTime":"2019-08-22 20:59:12.489","resultCode":"Success","resultMessage":"The operation succeeded"}}

Verwenden Sie zum programmgesteuerten Zugriff auf die Protokolle in Ihrem Speicherkonto die Storage-APIs.

Azure Monitor-Plattformmetriken

Azure Monitor stellt Plattformmetriken für die meisten Dienste bereit. Diese Metriken sind:

  • Einzeln für jeden Namespace definiert.
  • In der Azure Monitor-Datenbank für Zeitreihenmetriken gespeichert.
  • Einfach strukturiert und in der Lage, Warnmeldungen in Quasi-Echtzeit zu unterstützen.
  • Verwendet zum Nachverfolgen der Leistung einer Ressource im Zeitverlauf.

Erfassung: Azure Monitor sammelt Plattformmetriken automatisch. Es ist keine Konfiguration erforderlich.

Routing: Sie können einige Plattformmetriken auch an Azure Monitor-Protokolle/Log Analytics weiterleiten, damit Sie diese mit anderen Protokolldaten abfragen können. Überprüfen Sie anhand der Einstellung DS-Export für die einzelnen Metriken, ob Sie eine Diagnoseeinstellung zum Weiterleiten der jeweiligen Metrik an Azure Monitor-Protokolle/Log Analytics verwenden können.

Eine Liste aller Metriken, die für alle Ressourcen in Azure Monitor gesammelt werden können, finden Sie unter Unterstützte Metriken in Azure Monitor.

Zu den Beispielmetriken in einem Batch-Konto zählen „Poolerstellungsereignisse“, „Anzahl der Knoten mit niedriger Priorität“ und „Taskabschlussereignisse“. Diese Metriken können dabei helfen, Trends zu identifizieren, und lassen sich zudem für die Datenanalyse verwenden.

Hinweis

Metriken, die in den letzten drei Minuten ausgegeben wurden, werden möglicherweise immer noch aggregiert, sodass Werte während dieses Zeitraums möglicherweise zu niedrig angegeben werden. Die Metrikbereitstellung ist nicht garantiert und kann durch Störungen in der Bereitstellung, Datenverlust oder Datenduplizierung beeinflusst werden.

Eine vollständige Liste der verfügbaren Metriken für Batch finden Sie unter Batchüberwachungsdatenreferenz.

Azure Monitor-Ressourcenprotokolle

Ressourcenprotokolle bieten Einblicke in Vorgänge, die von einer Azure-Ressourcen ausgeführt wurden. Protokolle werden automatisch generiert, aber Sie müssen sie an Azure Monitor-Protokolle weiterleiten, um sie zu speichern oder abzufragen. Protokolle sind in Kategorien organisiert. Ein bestimmter Namespace verfügt möglicherweise über mehrere Ressourcenprotokollkategorien.

Sammlung: Ressourcenprotokolle werden erst gesammelt und gespeichert, nachdem Sie eine Diagnoseeinstellung erstellt und die Protokolle an mindestens einen Speicherort weitergeleitet haben. Wenn Sie eine Diagnoseeinstellung erstellen, legen Sie fest, welche Kategorien von Protokollen gesammelt werden sollen. Es gibt mehrere Möglichkeiten zum Erstellen und Verwalten von Diagnoseeinstellungen, u. a. das Azure-Portal, programmgesteuert und über Azure Policy.

Routing: Der vorgeschlagene Standard besteht darin, Ressourcenprotokolle an Azure Monitor-Protokolle weiterzuleiten, damit Sie diese mit anderen Protokolldaten abfragen können. Andere Speicherorte wie z. B. Azure Storage, Azure Event Hubs und bestimmte Microsoft-Überwachungspartner sind ebenfalls verfügbar. Weitere Informationen finden Sie unter Azure-Ressourcenprotokolle und Ressourcenprotokollziele.

Ausführliche Informationen zum Sammeln, Speichern und Weiterleiten von Ressourcenprotokollen finden Sie unter Diagnoseeinstellungen in Azure Monitor.

Eine Liste aller verfügbaren Ressourcenprotokollkategorien in Azure Monitor finden Sie unter Unterstützte Ressourcenprotokolle in Azure Monitor.

Alle Ressourcenprotokolle in Azure Monitor enthalten dieselben Headerfelder, gefolgt von dienstspezifischen Feldern. Das allgemeine Schema wird in Azure Monitor-Ressourcenprotokollschema beschrieben.

Die verfügbaren Ressourcen-Protokollkategorien, die zugehörigen Log Analytics-Tabellen und die Protokollschemata für Batch finden Sie unter Batchüberwachungsdatenreferenz.

Sie müssen die Diagnoseeinstellungen für jedes Batch-Konto, das Sie überwachen möchten, explizit aktivieren.

Für den Batchdienst können Sie die folgenden Protokolle erfassen:

  • ServiceLog: Ereignisse, die während der Lebensdauer einer einzelnen Ressource, z. B. eines Pools oder einer Task, vom Batch-Dienst ausgegeben wurden.
  • AllMetrics: Metriken auf Batch-Kontoebene.

Der folgende Screenshot zeigt eine Beispieldiagnoseeinstellung, die allLogs und AllMetrics an einen Log Analytics-Arbeitsbereich sendet.

Screenshot: Seite für Diagnoseeinstellungen mit einem Beispiel

Wenn Sie einen Azure Batch-Pool erstellen, können Sie eine der folgenden überwachungsbezogenen Erweiterungen auf den Serverknoten installieren, um Daten zu sammeln und zu analysieren:

Einen Vergleich der verschiedenen Erweiterungen und Agents und der gesammelten Daten finden Sie unter Vergleichen von Agents.

Azure-Aktivitätsprotokoll

Das Aktivitätsprotokoll enthält Ereignisse auf Abonnementebene, die Vorgänge für jede Azure-Ressource nachverfolgen, so wie sie von außerhalb dieser Ressource gesehen werden, z. B. das Erstellen einer neuen Ressource oder das Starten einer VM.

Sammlung: Aktivitätsprotokollereignisse werden automatisch generiert und in einem separaten Speicher für die Anzeige im Azure-Portal gesammelt.

Routing: Sie können Aktivitätsprotokolldaten an Azure Monitor-Protokolle senden, damit Sie diese zusammen mit anderen Protokolldaten analysieren können. Andere Speicherorte wie z. B. Azure Storage, Azure Event Hubs und bestimmte Microsoft-Überwachungspartner sind ebenfalls verfügbar. Weitere Informationen zum Weiterleiten von Aktivitätsprotokollen finden Sie unter Übersicht über das Azure-Aktivitätsprotokoll.

Speziell für Batch-Konten werden Ereignisse im Zusammenhang mit der Kontoerstellung/-löschung und der Schlüsselverwaltung erfasst.

Analysieren von Überwachungsdaten

Es gibt viele Tools zum Analysieren von Überwachungsdaten.

Azure Monitor-Tools

Azure Monitor unterstützt die folgenden grundlegenden Tools:

Zu den Tools, die eine komplexere Visualisierung ermöglichen, gehören:

  • Dashboards, mit denen Sie verschiedene Typen von Daten in einen einzelnen Bereich im Azure-Portal kombinieren können.
  • Arbeitsmappen, anpassbare Berichte, die Sie im Azure-Portal erstellen können. Arbeitsmappen können Text, Metriken und Protokollabfragen enthalten.
  • Grafana, ein Tool auf einer offenen Plattform, das für operationale Dashboards ideal ist. Sie können Grafana verwenden, um Dashboards zu erstellen, die Daten aus mehreren anderen Quellen als Azure Monitor enthalten.
  • Power BI ist ein Geschäftsanalysedienst, der interaktive Visualisierungen für verschiedene Datenquellen bereitstellt. Sie können Power BI für den automatischen Import von Protokolldaten aus Azure Monitor konfigurieren, um diese Visualisierungen zu nutzen.

Wenn Sie zählbasierte Batchmetriken wie Dedicated Core Count oder Low-Priority Node Count analysieren, verwenden Sie die Aggregation Avg. Verwenden Sie für ereignisbasierte Metriken, wie z. B. „Ereignisse zum Abschluss der Größenänderung von Pools“ die Aggregation Anzahl. Vermeiden Sie die Verwendung der Aggregation Summe, mit der die Werte aller über den Zeitraum des Diagramms empfangenen Datenpunkte addiert werden.

Exporttools für Azure Monitor

Sie können Daten aus Azure Monitor in andere Tools abrufen, indem Sie die folgenden Methoden verwenden:

Informationen zu den ersten Schritten mit der REST-API für Azure Monitor finden Sie in der exemplarischen Vorgehensweise für die Azure-Überwachungs-REST-API.

Kusto-Abfragen

Sie können Überwachungsdaten im Azure Monitor Logs / Log Analytics Store mithilfe der Kusto-Abfragesprache (KQL) analysieren.

Wichtig

Wenn Sie Protokolle im Menü des Diensts im Portal auswählen, wird Log Analytics geöffnet, wobei der Abfragebereich auf den aktuellen Dienst festgelegt ist. Dieser Bereich bedeutet, dass Protokollabfragen nur Daten aus diesem Ressourcentyp umfassen. Wenn Sie eine Abfrage durchführen möchten, die Daten aus anderen Azure-Diensten enthält, wählen Sie im Menü Azure Monitor die Option Protokolle aus. Ausführliche Informationen finden Sie unter Protokollabfragebereich und Zeitbereich in Azure Monitor Log Analytics.

Eine Liste häufiger Abfragen für alle Dienste finden Sie unter Log Analytics-Abfrageschnittstelle.

Beispielabfragen

Hier sind einige Beispielprotokollabfragen für Batch:

Größe des Pools: Listet die Größe nach Pool und Ergebniscode (Erfolg oder Fehler) auf:

AzureDiagnostics
| where OperationName=="PoolResizeCompleteEvent"
| summarize operationTimes=make_list(startTime_s) by poolName=id_s, resultCode=resultCode_s

Vorgangsdauer: Gibt die verstrichene Zeit von Vorgängen in Sekunden, vom Vorgangsanfang bis zum Abschluss des Vorgangs, an.

AzureDiagnostics
| where OperationName=="TaskCompleteEvent"
| extend taskId=id_s, ElapsedTime=datetime_diff('second', executionInfo_endTime_t, executionInfo_startTime_t) // For longer running tasks, consider changing 'second' to 'minute' or 'hour'
| summarize taskList=make_list(taskId) by ElapsedTime

Fehlgeschlagene Aufgaben pro Auftrag: Listet fehlgeschlagene Aufgaben nach übergeordnetem Auftrag auf.

AzureDiagnostics
| where OperationName=="TaskFailEvent"
| summarize failedTaskList=make_list(id_s) by jobId=jobId_s, ResourceId

Alerts

Azure Monitor-Warnungen informieren Sie proaktiv, wenn bestimmte Bedingungen in Ihren Überwachungsdaten auftreten. Warnungen ermöglichen Ihnen, Probleme in Ihrem System zu identifizieren und zu beheben, bevor Ihre Kunden sie bemerken. Weitere Informationen finden Sie unter Azure Monitor-Warnungen.

Es gibt viele Quellen allgemeiner Warnungen für Azure-Ressourcen. Beispiele für häufige Warnungen für Azure-Ressourcen finden Sie in den Beispielabfragen für Protokollwarnungen. Die Website Azure Monitor-Baselinewarnungen (Azure Monitor Baseline Alerts, AMBA) stellt eine halbautomatisierte Methode für die Implementierung wichtiger Metrikwarnungen der Plattform, Dashboards und Richtlinien bereit. Die Website gilt für eine fortlaufend erweiterte Teilmenge von Azure-Diensten, einschließlich aller Dienste, die Teil der Azure-Zielzone (Azure Landing Zone, ALZ) sind.

Mit dem allgemeinen Warnungsschema wird die Benutzeroberfläche für Warnungsbenachrichtigungen in Azure Monitor standardisiert. Weitere Informationen finden Sie unter Allgemeines Warnungsschema.

Warnungstypen

Sie können zu jeder Metrik oder Protokolldatenquelle der Azure Monitor-Datenplattform Warnungen erhalten. Es gibt viele verschiedene Typen von Warnungen, abhängig von den Diensten, die Sie überwachen, und den Überwachungsdaten, die Sie sammeln. Verschiedene Typen von Warnungen haben jeweils ihre Vor- und Nachteile. Weitere Informationen finden Sie unter Auswählen des richtigen Warnungsregeltyps.

In der folgenden Liste werden die Typen von Azure Monitor-Warnungen beschrieben, die Sie erstellen können:

  • Metrikwarnungen bewerten Ressourcenmetriken in regelmäßigen Abständen. Metriken können Plattformmetriken, benutzerdefinierte Metriken, in Metriken konvertierte Protokolle aus Azure Monitor oder Application Insights-Metriken sein. Metrikwarnungen können auch mehrere Bedingungen und dynamische Schwellwerte anwenden.
  • Protokollwarnungen ermöglichen es Benutzern, eine Log Analytics-Abfrage zum Auswerten von Ressourcenprotokollen in vordefinierten Frequenz zu verwenden.
  • Aktivitätsprotokollwarnungen werden ausgelöst, wenn ein neues Aktivitätsprotokollereignis eintritt, das definierte Bedingungen erfüllt. Resource Health- und Service Health-Warnungen sind Aktivitätsprotokollwarnungen, die über die Dienst- und Ressourcenintegrität berichten.

Einige Azure-Dienste unterstützen auch intelligente Erkennungswarnungen, Prometheus-Warnungen oder empfohlene Warnungsregeln.

Einige Dienste können Sie im großen Stil überwachen, indem Sie dieselbe Metrikwarnungsregel auf mehrere Ressourcen desselben Typs anwenden, die sich in derselben Azure-Region befinden. Für jede überwachte Ressource werden einzelne Benachrichtigungen gesendet. Unterstützte Azure-Dienste und -Clouds finden Sie unter Überwachen mehrerer Ressourcen mit einer Warnungsregel.

Hinweis

Wenn Sie eine Anwendung erstellen oder ausführen, die in Ihrem Dienst ausgeführt wird, stellt Azure Monitor Application Insights möglicherweise andere Warnungstypen zur Verfügung.

Batchwarnungsregeln

Da bei der Metrikbereitstellung Inkonsistenzen durch Störungen bei der Bereitstellung, Datenverlust oder Datenduplizierung auftreten können, sollten Sie Warnungen vermeiden, die bei einem einzelnen Datenpunkt ausgelöst werden. Verwenden Sie stattdessen Schwellenwerte, um diese Inkonsistenzen über einen bestimmten Zeitraum zu berücksichtigen.

Beispielsweise können Sie eine Metrikwarnung konfigurieren, wenn die Anzahl von Kernen mit niedriger Priorität unter einen bestimmten Grenzwert fällt. Diese Warnung können Sie dann verwenden, um die Zusammensetzung Ihrer Pools anzupassen. Die besten Ergebnisse werden erzielt, indem Sie einen Zeitraum von mindestens 10 Minuten festlegen, in dem Warnungen ausgelöst werden, wenn die durchschnittliche Anzahl von Kernen mit niedriger Priorität unter den Schwellenwert für den gesamten Zeitraum fällt. Dadurch bleibt genügend Zeit für die Aggregation der Metriken, sodass Sie genauere Ergebnisse erhalten.

In der folgenden Tabelle sind einige Warnungsregelauslöser für Batch aufgeführt. Diese Warnungsregeln sind nur Beispiele. Sie können Warnungen für alle Metriken, Protokolleinträge oder Aktivitätsprotokolleinträge festlegen, die in der Batchüberwachungsdatenreferenz aufgeführt sind.

Warnungstyp Bedingung BESCHREIBUNG
Metrik Anzahl nicht verwendbarer Knoten Immer wenn die Anzahl nicht verwendbarer Knoten größer als 0 ist
Metrik Taskfehlerereignisse Wenn die Gesamtanzahl der Vorgangsfehlerereignisse größer als der dynamische Schwellenwert ist

Advisor-Empfehlungen

Wenn in einigen Diensten während eines Ressourcenvorgangs kritische Bedingungen oder unmittelbar bevorstehende Änderungen auftreten, wird auf der Dienstseite Übersicht im Portal eine Warnung angezeigt. Weitere Informationen und empfohlene Korrekturen für die Warnung finden Sie in Advisor-Empfehlungen unter Überwachung im linken Menü. Während des normalen Betriebs werden keine Advisor-Empfehlungen angezeigt.

Weitere Informationen zu Azure Advisor finden Sie unter Azure Advisor – Übersicht.

Weitere Batchüberwachungsoptionen

Der Batch Explorer ist ein kostenloses eigenständiges Clienttool mit zahlreichen Features, das Sie beim Erstellen, Debuggen und Überwachen von Azure Batch-Anwendungen unterstützt. Sie können Azure Batch Insights mit Batch-Explorer verwenden, um Systemstatistiken für Ihre Batchknoten abzurufen, z. B. Leistungsindikatoren für virtuelle Computer (VM).

In Ihren Batchanwendungen können Sie die Batch-.NET-Bibliothek verwenden, um den Status Ihrer Ressourcen einschließlich Aufträgen, Aufgaben, Knoten und Pools zu überwachen oder abzufragen. Zum Beispiel:

Mithilfe der Batch-APIs können Sie Listenabfragen für Batchaufträge, Aufgaben, Serverknoten und andere Ressourcen erstellen. Weitere Informationen zum Filtern von Listenabfragen finden Sie unter Erstellen von Abfragen zum effizienten Auflisten von Batch-Ressourcen.

Anstelle von potenziell zeitaufwändigen Listenabfragen, die detaillierte Informationen über große Sammlungen von Tasks oder Knoten zurückgeben, können Sie auch die Vorgänge Task-Zahlen abrufen und Poolknoten-Zahlen auflisten verwenden, um Zählungen für Batch-Tasks und Serverknoten zu erhalten. Weitere Informationen finden Sie unter Überwachen von Batch-Lösungen durch Zählen von Tasks und Knoten nach Status.

Erkenntnisse

Einige Dienste in Azure verfügen über ein integriertes Überwachungsdashboard im Azure-Portal, das einen Ausgangspunkt für die Überwachung Ihres Diensts bietet. Diese Dashboards werden als Erkenntnisse bezeichnet, und Sie finden sie im Erkenntnishub von Azure Monitor im Azure-Portal.

Application Insights

Sie können Application Insights in Ihre Azure Batch-Anwendungen integrieren, um Ihren Code mit benutzerdefinierten Metriken und Ablaufverfolgung zu instrumentieren. Eine ausführliche exemplarische Vorgehensweise zum Hinzufügen von Application Insights zu einer Batch.NET-Lösung, zum Instrumentieren von Anwendungscode, zum Überwachen der Anwendung im Azure-Portal und zum Erstellen benutzerdefinierter Dashboards finden Sie unter Überwachen und Debuggen einer Azure Batch.NET-Anwendung mit Application Insights und dem dazugehörigen Codebeispiel.