Zugreifen auf Diagnoseprotokolle für Azure Data Lake Storage Gen1
Erfahren Sie, wie Sie die Diagnoseprotokollierung für Ihr Azure Data Lake Storage Gen1-Konto aktivieren und wie Sie die für Ihr Konto erfassten Protokolle anzeigen.
Organisationen können die Diagnoseprotokollierung für ihre Azure Data Lake Storage Gen1-Konten zum Erfassen von Datenzugriffs-Überwachungspfaden aktivieren, die Informationen wie die Liste der Benutzer, die auf die Daten zugreifen, die Häufigkeit des Zugriffs auf die Daten, die Größe der im Konto gespeicherten Datenmenge usw. liefern. Wenn die Diagnose- und/oder Anforderungsprotokollierung aktiviert ist, erfolgt diese auf Grundlage der besten Leistung. Protokolleinträge für Anforderungen und Diagnose werden nur erstellt, wenn Anforderungen für den Dienstendpunkt vorhanden sind.
Voraussetzungen
- Ein Azure-Abonnement. Siehe Kostenlose Azure-Testversion.
- Ein Azure Data Lake Storage Gen1-Konto. Befolgen Sie die Anweisungen unter Erste Schritte mit Azure Data Lake Storage Gen1 über das Azure-Portal.
Aktivieren der Diagnoseprotokollierung für Ihr Data Lake Storage Gen1-Konto
Melden Sie sich am neuen Azure-Portalan.
Öffnen Sie Ihr Data Lake Storage Gen1-Konto, und klicken Sie auf Ihrem Data Lake Storage Gen1-Kontoblatt auf Diagnoseeinstellungen.
Klicken Sie auf dem Blatt Diagnoseeinstellungen auf Diagnose aktivieren.
Nehmen Sie auf dem Blatt Diagnoseeinstellungen die folgenden Änderungen vor, um die Diagnoseprotokollierung zu konfigurieren.
Geben Sie unter Name einen Wert für die Konfiguration des Diagnoseprotokolls ein.
Sie können die Daten auf verschiedene Arten speichern/verarbeiten.
Wählen Sie die Option zum Archivieren in einem Speicherkonto, um Protokolle in einem Azure Storage-Konto zu speichern. Verwenden Sie diese Option, wenn Sie die Daten archivieren möchten, die zu einem späteren Zeitpunkt der Batchverarbeitung unterzogen werden sollen. Bei Auswahl dieser Option müssen Sie ein Azure Storage-Konto zum Speichern der Protokolle bereitstellen.
Wählen Sie die Option zum Streamen an einen Event Hub, um die Protokolldaten an einen Azure Event Hub zu streamen. Wahrscheinlich werden Sie diese Option verwenden, wenn Sie eine Downstreamverarbeitungs-Pipeline einsetzen, um eingehende Protokolle in Echtzeit zu analysieren. Wenn Sie diese Option auswählen, müssen Sie die Details für den Azure Event Hub angeben, den Sie verwenden möchten.
Wählen Sie die Option zum Senden an Log Analytics, um die generierten Protokolldaten mithilfe des Azure Monitor-Diensts zu analysieren. Wenn Sie diese Option auswählen, müssen Sie die Details für den Log Analytics-Arbeitsbereich angeben, den Sie zum Ausführen der Protokollanalyse verwenden. Informationen zum Verwenden von Azure Monitor-Protokollen finden Sie unter Anzeigen oder Analysieren der mit Azure Monitor-Protokollen gesammelten Daten.
Geben Sie an, ob Sie Überwachungsprotokolle oder Anforderungsprotokolle oder beides abrufen möchten.
Geben Sie die Anzahl der Tage an, für die die Daten beibehalten werden müssen. Die Aufbewahrung ist nur zutreffend, wenn Sie Azure-Speicherkonten zum Archivieren von Protokolldaten verwenden.
Klicken Sie auf Speichern.
Nachdem Sie die Diagnoseeinstellungen aktiviert haben, können Sie die Protokolle auf der Registerkarte Diagnoseprotokolle verfolgen.
Anzeigen der Diagnoseprotokolle für Ihr Data Lake Storage Gen1-Konto
Es gibt zwei Möglichkeiten, die Protokolldaten Ihres Data Lake Storage Gen1-Kontos anzuzeigen.
- Über die Ansicht „Einstellungen“ des Data Lake Storage Gen1-Kontos
- Über das Azure Storage-Konto, in dem die Daten gespeichert sind
Verwenden der Ansicht „Einstellungen“ von Data Lake Storage Gen1
Klicken Sie in Ihrem Data Lake Storage Gen1-Konto auf dem Blatt Einstellungen auf Diagnoseprotokolle.
Auf dem Blatt Diagnoseprotokolle sollten die Protokolle nach Überwachungsprotokollen und Anforderungsprotokollen kategorisiert sein.
- Anforderungsprotokolle erfassen jede API-Anforderung im Data Lake Storage Gen1-Konto.
- Überwachungsprotokolle ähneln Anforderungsprotokollen, bieten aber eine viel detailliertere Aufschlüsselung der Vorgänge, die auf dem Data Lake Storage Gen1-Konto ausgeführt werden. Ein einzelner API-Hochladeaufruf in Anforderungsprotokollen könnte möglicherweise in den Überwachungsprotokollen in mehreren „Anfügen“-Vorgängen resultieren.
Klicken Sie zum Herunterladen der Protokolle für jeden Protokolleintrag auf den Link Herunterladen.
Im Azure Storage-Konto, das die Protokolldaten enthält
Öffnen Sie das Azure Storage-Kontoblatt, das Data Lake Storage Gen1 zur Protokollierung zugeordnet ist, und klicken Sie dann auf „Blobs“. Auf dem Blatt Blob-Dienst werden zwei Container aufgelistet.
- Der Container insights-logs-audit enthält die Überwachungsprotokolle.
- Der Container insights-logs-requests enthält die Anforderungsprotokolle.
Innerhalb dieser Container werden die Protokolle in der folgenden Struktur gespeichert.
Der vollständige Pfad zu einem Überwachungsprotokoll könnte z.B. folgendermaßen lauten:
https://adllogs.blob.core.windows.net/insights-logs-audit/resourceId=/SUBSCRIPTIONS/<sub-id>/RESOURCEGROUPS/myresourcegroup/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/mydatalakestorage/y=2016/m=07/d=18/h=04/m=00/PT1H.json
Entsprechend kann der vollständige Pfad zu einem Anforderungsprotokoll wie folgt lauten:
https://adllogs.blob.core.windows.net/insights-logs-requests/resourceId=/SUBSCRIPTIONS/<sub-id>/RESOURCEGROUPS/myresourcegroup/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/mydatalakestorage/y=2016/m=07/d=18/h=14/m=00/PT1H.json
.
Grundlegendes zur Struktur der Protokolldaten
Die Überwachungs- und Anforderungsprotokolle liegen im JSON-Format vor. In diesem Abschnitt betrachten wir die Struktur von JSON für Anforderungs- und Überwachungsprotokolle.
Anforderungsprotokolle
Hier ist ein Beispiel für einen Eintrag im JSON-formatierten Anforderungsprotokoll. Jedes Blob hat ein Stammobjekt namens records , das ein Array mit Protokollobjekten enthält.
{
"records":
[
. . . .
,
{
"time": "2016-07-07T21:02:53.456Z",
"resourceId": "/SUBSCRIPTIONS/<subscription_id>/RESOURCEGROUPS/<resource_group_name>/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/<data_lake_storage_gen1_account_name>",
"category": "Requests",
"operationName": "GETCustomerIngressEgress",
"resultType": "200",
"callerIpAddress": "::ffff:1.1.1.1",
"correlationId": "4a11c709-05f5-417c-a98d-6e81b3e29c58",
"identity": "1808bd5f-62af-45f4-89d8-03c5e81bac30",
"properties": {"HttpMethod":"GET","Path":"/webhdfs/v1/Samples/Outputs/Drivers.csv","RequestContentLength":0,"StoreIngressSize":0 ,"StoreEgressSize":4096,"ClientRequestId":"3b7adbd9-3519-4f28-a61c-bd89506163b8","StartTime":"2016-07-07T21:02:52.472Z","EndTime":"2016-07-07T21:02:53.456Z","QueryParameters":"api-version=<version>&op=<operationName>"}
}
,
. . . .
]
}
Anforderungsprotokollschema
Name | Typ | BESCHREIBUNG |
---|---|---|
time | String | Der Zeitstempel (UTC) des Protokolls. |
resourceId | String | Die ID der Ressource, auf der der Vorgang stattfand. |
category | String | Die Protokollkategorie. Beispiel: Anforderungen. |
operationName | String | Der Name des protokollierten Vorgangs. Beispielsweise „getfilestatus“. |
resultType | String | Der Status des Vorgangs, beispielsweise 200. |
callerIpAddress | String | Die IP-Adresse des Clients, der die Anforderung gestellt hat. |
correlationId | String | Die ID des Protokolls, die verwendet werden kann, um einen Satz verwandter Protokolleinträge zu gruppieren. |
identity | Object | Die Identität, die das Protokoll erstellt hat. |
properties | JSON | Weitere Informationen siehe unten. |
Eigenschaftenschema des Anforderungsprotokolls
Name | Typ | BESCHREIBUNG |
---|---|---|
HttpMethod | String | Die HTTP-Methode, die für den Vorgang verwendet werden. Beispiel: GET. |
`Path` | String | Der Pfad, in dem der Vorgang durchgeführt wurde. |
RequestContentLength | INT | Die Inhaltslänge der HTTP-Anforderung. |
ClientRequestId | String | Die ID, die diese Anforderung eindeutig identifiziert. |
StartTime | String | Der Zeitpunkt, zu dem der Server die Anforderung empfangen hat. |
EndTime | String | Der Zeitpunkt, zu dem der Server eine Antwort gesendet hat. |
StoreIngressSize | Long | Größe der in Data Lake Store eingehenden Bytes |
StoreEgressSize | Long | Größe der aus Data Lake Store ausgehenden Bytes |
QueryParameters | String | Beschreibung: Dabei handelt es sich um die HTTP-Abfrageparameter. Beispiel 1: api-version=2014-01-01&op=getfilestatus Beispiel 2: op=APPEND&append=true&syncFlag=DATA&filesessionid=bee3355a-4925-4435-bb4d-ceea52811aeb&leaseid=bee3355a-4925-4435-bb4d-ceea52811aeb&offset=28313319&api-version=2017-08-01 |
Überwachungsprotokolle
Hier ist ein Beispiel für einen Eintrag im JSON-formatierten Überwachungsprotokoll. Jeder Blob hat ein Stammobjekt namens records , das ein Array von Protokollobjekten enthält.
{
"records":
[
. . . .
,
{
"time": "2016-07-08T19:08:59.359Z",
"resourceId": "/SUBSCRIPTIONS/<subscription_id>/RESOURCEGROUPS/<resource_group_name>/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/<data_lake_storage_gen1_account_name>",
"category": "Audit",
"operationName": "SeOpenStream",
"resultType": "0",
"resultSignature": "0",
"correlationId": "381110fc03534e1cb99ec52376ceebdf;Append_BrEKAmg;25.66.9.145",
"identity": "A9DAFFAF-FFEE-4BB5-A4A0-1B6CBBF24355",
"properties": {"StreamName":"adl://<data_lake_storage_gen1_account_name>.azuredatalakestore.net/logs.csv"}
}
,
. . . .
]
}
Überwachungsprotokollschema
Name | Typ | BESCHREIBUNG |
---|---|---|
time | String | Der Zeitstempel (UTC) des Protokolls. |
resourceId | String | Die ID der Ressource, auf der der Vorgang stattfand. |
category | String | Die Protokollkategorie. Beispiel: Überwachung. |
operationName | String | Der Name des protokollierten Vorgangs. Beispielsweise „getfilestatus“. |
resultType | String | Der Status des Vorgangs, beispielsweise 200. |
resultSignature | String | Weitere Details zum Vorgang |
correlationId | String | Die ID des Protokolls, die verwendet werden kann, um einen Satz verwandter Protokolleinträge zu gruppieren. |
identity | Object | Die Identität, die das Protokoll erstellt hat. |
properties | JSON | Weitere Informationen siehe unten. |
Eigenschaftenschema des Überwachungsprotokolls
Name | Typ | BESCHREIBUNG |
---|---|---|
StreamName | String | Der Pfad, in dem der Vorgang durchgeführt wurde. |
Beispiele für die Verarbeitung der Protokolldaten
Beim Senden von Protokollen aus Azure Data Lake Storage Gen1 an Azure Monitor-Protokolle (Informationen zum Verwenden von Azure Monitor-Protokollen finden Sie unter Anzeigen oder Analysieren der mit der Azure Monitor-Protokollsuche gesammelten Daten) gibt die folgende Abfrage eine Tabelle mit einer Liste der Benutzeranzeigenamen, die Uhrzeit der Ereignisse, die Anzahl von Ereignissen zur Zeit des Ereigniseintritts sowie ein visuelles Diagramm zurück. Diese kann ganz einfach bearbeitet werden, sodass Benutzer-GUIDs oder weitere Attribute angezeigt werden:
search *
| where ( Type == "AzureDiagnostics" )
| summarize count(TimeGenerated) by identity_s, TimeGenerated
Azure Data Lake Storage Gen1 stellt ein Muster bereit, nach dem die Protokolldaten verarbeitet und analysiert werden sollen. Sie finden das Beispiel unter https://github.com/Azure/AzureDataLake/tree/master/Samples/AzureDiagnosticsSample.