Azure PaaS Überwachung mit Log Analytics
Platform as a Service ermöglicht den Kunden gemanagte Dienste zu konsumieren. Hierbei muss sich nicht um die unterliegende Infrastruktur gekümmert werden, dies wird von der Plattform übernommen. Dadurch, dass die unterliegenden Komponenten für den Kunden transparent sind ist die gezielte Überwachung schwierig. In der Vergangenheit konnten einige PaaS-Dienste ihre Status- und Loginformationen über Storage-Accounts ablegen - dies war aber nicht durchgängig umgesetzt.
Auf der Ignite im September wurden einige Neuerungen im Backend von Log Analytics vorgestellt. Nun ist es möglich die Metriken und Loginformationen von vielen PaaS-Diensten nicht nur in Storage Accounts sondern auch in Event Hubs oder direkt an Log Analytics zu senden. In diesem Artikel wird die beispielhafte Integration von Event Hubs in Log Analytics beschrieben. Eine vollständige Liste von zur Zeit unterstützten Diensten für die Lieferung von Metriken und von Loginformationen.
Metriken und Logs an Log Analytics übertragen
Um Metriken und Logs an Log Analytics zu übertragen, muss natürlich ein entsprechender Workspace angelegt sein. Dieser kann entweder über das OMS Portal, das Azure Portal oder ARM Templates angelegt werden.
Konfiguration über Azure Portal
Eine einfache Möglichkeit die Datenübertragung zu konfigurieren ist über das Azure Portal. Über den Menüpunkt Monitor
gelangt man zum Azure Monitor. Hier können die Activity Logs, Metriken und Diagnostic Logs eingesehen werden. Unter Activity Logs
findet man jegliche Aktivitäten rund um die Ressourcen innerhalb einer Subscription. Diese Logs können auch gesondert an Log Analytics übertragen werden. Metrics
bietet die Möglichkeit Performancedaten von PaaS-Diensten zu rendern und einzusehen. Über Diagnostic Logs
letztendlich kann der Transfer von Metriken und Diagnoseinformationen von einzelnen Ressourcen konfiguriert werden.
Nach einem Klick auf Diagnostic Logs
erhält man eine Übersicht über die Ressourcen in den ausgewählten Subscriptions, für die eine Konfiguration
vorgenommen werden kann. Derzeit sind noch nicht alle Ressourcen an Azure Monitor angeschlossen - dies wird sich aber sukzessive ändern, wenn die Unterstützung für Azure Monitor in neue Versionen der PaaS-Dienste integriert wird.
Die Übersicht gibt auch Aufschluss darüber, für welche Ressourcen Diagnostic Logs aktiviert und an welchen Kanal die Daten geliefert werden.
Nach einem Klick auf eine Ressource (in diesem Fall ein Event Hub) sieht man die konkrete Einstellung für Diagnostic Logs. In diesem Fall wurde noch keine Konfiguration vorgenommen und man hat die Möglichkeit diese vorzunehmen. Durch einen Klick auf Turn on diagnostics
öffnet sich ein neuer Blade mit den generischen Konfigurationsmöglichkeiten für Diagnoseinformationen.
Grundsätzlich besteht die Möglichkeit Diagnoselogs und Performancedaten an Storage-Accounts, Event Hubs und Log Analytics zu schreiben. Über einen Storage-Account ließe sich eine Langzeitspeicherung von Daten bewerkstelligen - eine direkte Auswertung ist aber nicht ohne weiteres möglich. Über einen Event Hub können die Daten direkt gestreamt werden und von verarbeitenden Systemen abgegriffen werden. Dies ermöglicht eine sehr zeitnahe verarbeitung der Daten. Als dritte Möglichkeit können die Daten direkt an Log Analytics geschickt werden.
Des Weiteren kann entschieden werden welche Daten übertragen werden. Zum einen stehen Diagnosdaten und zum andere Metriken zur Verfügung. Bei den Metriken kann das Intervall ausgewählt werden. Bei den Diagnosedaten können in Abhängigkeit des Dienstes die Art der Logdaten ausgewählt werden.
Nach der Anbindung von Log Analytics als Ziel für die Diagnosedaten und Metriken tauchen diese als AzureDiagnostic und AzureMetric in Log Analytics auf und können für Queries und eigene Visualisierungen genutzt werden.
Konfiguration über ARM Templates
Die Konfiguration von Diagnostic Logs für Ressourcen kann selbstverständlich auch über ARM Templates automatisiert werden, sodass die Informationen direkt nach dem Deployment an Log Analytics (oder eine der anderen Schnittstellen) geliefert werden. Die Instrumentierung ist denkbar einfach und erfolgt als contained resource einer Azure Ressource. Das folgende Snippit zeigt wie die Instrumentierung erfolgen muss. Zu beachten ist aber, dass nicht alle Dienste Logs bzw. Metriken liefern.
"resources": [
{
"type": "providers/diagnosticSettings",
"name": "Microsoft.Insights/service",
"dependsOn": [
"[resourceId('!!!TYPE!!!', '!!!NAME!!!')]"
],
"apiVersion": "2015-07-01",
"properties": {
"workspaceId": "!!!WORKSPACE ID!!!",
"logs": [
{
"category": "!!!TYPE!!!",
"enabled": true,
"retentionPolicy": {
"enabled": false,
"days": 0
}
},
],
"metrics": [
{
"timeGrain": "PT1M",
"enabled": true,
"retentionPolicy": {
"enabled": false,
"days": 0
}
}
]
}
}
]
Weitere konkrete Beispiele stehen auf GitHub bereit.