Schemat rozszerzenia diagnostyki systemu Windows

Diagnostyka Azure rozszerzenie to agent w usłudze Azure Monitor, który zbiera dane monitorowania z systemu operacyjnego gościa i obciążeń zasobów obliczeniowych platformy Azure. W tym artykule szczegółowo przedstawiono schemat używany do konfiguracji rozszerzenia diagnostycznego na maszynach wirtualnych z systemem Windows i innych zasobach obliczeniowych.

Uwaga

Schemat w tym artykule jest prawidłowy dla wersji 1.3 i nowszych (zestaw Azure SDK 2.4 i nowsze). Nowsze sekcje konfiguracji są komentowane, aby pokazać, w jakiej wersji zostały dodane. Wersje 1.0 i 1.2 schematu zostały zarchiwizowane i nie są już dostępne.

Schemat pliku konfiguracji publicznej

Pobierz definicję schematu pliku konfiguracji publicznej, wykonując następujące polecenie programu PowerShell:

(Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File –Encoding utf8 -FilePath 'C:\temp\WadConfig.xsd'  

Typowe typy atrybutów

scheduledTransferPeriod atrybut pojawia się w kilku elementach. Jest to interwał między zaplanowanym transferem do magazynu zaokrąglonym do najbliższej minuty. Wartość to XML "Duration Data Type" (Typ danych czasu trwania).

DiagnosticsConfiguration, element

Drzewo: Główny — DiagnostykaKonfiguracja

Dodano element w wersji 1.3.

Element najwyższego poziomu pliku konfiguracji diagnostyki.

Xmlns atrybutów — przestrzeń nazw XML pliku konfiguracji diagnostyki to:
http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration

Elementy podrzędne Opis
Konfiguracja publiczna Wymagane. Zobacz opis gdzie indziej na tej stronie.
Konfiguracja prywatna Opcjonalny. Zobacz opis gdzie indziej na tej stronie.
IsEnabled Boolean. Zobacz opis gdzie indziej na tej stronie.

PublicConfig, element

Drzewo: Root — DiagnosticsConfiguration — PublicConfig

Opisuje konfigurację diagnostyki publicznej.

Elementy podrzędne Opis
WadCfg Wymagane. Zobacz opis gdzie indziej na tej stronie.
StorageAccount Nazwa konta usługi Azure Storage do przechowywania danych. Można również określić jako parametr podczas wykonywania polecenia cmdlet Set-AzureServiceDiagnosticsExtension.
Typ magazynu Może to być tabela, obiekt blob lub obiekt TableAndBlob. Tabela jest domyślna. Po wybraniu tabeli TableAndBlob dane diagnostyczne są zapisywane dwa razy — raz do każdego typu.
LocalResourceDirectory Katalog na maszynie wirtualnej, na której agent monitorowania przechowuje dane zdarzeń. Jeśli nie, ustaw, zostanie użyty katalog domyślny:

W przypadku roli Proces roboczy/sieć Web: C:\Resources\<guid>\directory\<guid>.<RoleName.DiagnosticStore\

W przypadku maszyny wirtualnej: C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\<WADVersion>\WAD<WADVersion>

Wymagane atrybuty to:

- path — katalog w systemie, który ma być używany przez Diagnostyka Azure.

- expandEnvironment — określa, czy zmienne środowiskowe są rozwinięte w nazwie ścieżki.

WadCFG, element

Drzewo: Root — DiagnosticsConfiguration — PublicConfig — WadCFG

Identyfikuje i konfiguruje dane telemetryczne do zebrania.

DiagnosticMonitorConfiguration, element

Drzewo: root — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration

Wymagane

Atrybuty Opis
overallQuotaInMB Maksymalna ilość miejsca na dysku lokalnym, który może być używany przez różne typy danych diagnostycznych zebranych przez Diagnostyka Azure. Ustawieniem domyślnym jest 4096 MB.
useProxyServer Skonfiguruj Diagnostyka Azure do używania ustawień serwera proxy zgodnie z ustawieniami programu IE.
Zlewozmywaki Dodano element w wersji 1.5. Opcjonalny. Wskazuje lokalizację ujścia, aby również wysyłać dane diagnostyczne dla wszystkich elementów podrzędnych, które obsługują ujścia. Przykład ujścia to Application Insights lub Event Hubs. Pamiętaj, że musisz dodać właściwość resourceId w elemecie Metrics , jeśli zdarzenia przekazane do usługi Event Hubs mają identyfikator zasobu.



Elementy podrzędne Opis
CrashDumps Zobacz opis gdzie indziej na tej stronie.
DiagnosticInfrastructureLogs Włącz zbieranie dzienników generowanych przez Diagnostyka Azure. Dzienniki infrastruktury diagnostycznej są przydatne do rozwiązywania problemów z samym systemem diagnostycznym. Atrybuty opcjonalne to:

- scheduledTransferLogLevelFilter — konfiguruje minimalny poziom ważności zebranych dzienników.

- scheduledTransferPeriod — interwał między zaplanowanym transferem do magazynu zaokrąglonym w górę do najbliższej minuty. Wartość to XML "Duration Data Type" (Typ danych czasu trwania).
Katalogów Zobacz opis gdzie indziej na tej stronie.
EtwProviders Zobacz opis gdzie indziej na tej stronie.
Metryki Zobacz opis gdzie indziej na tej stronie.
Liczniki wydajności Zobacz opis gdzie indziej na tej stronie.
WindowsEventLog Zobacz opis gdzie indziej na tej stronie.
DockerSources Zobacz opis gdzie indziej na tej stronie.

CrashDumps, element

Drzewo: root — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration — CrashDumps

Włącz zbieranie zrzutów awaryjnych.

Atrybuty Opis
containerName Opcjonalny. Nazwa kontenera obiektów blob na koncie usługi Azure Storage do przechowywania zrzutów awaryjnych.
crashDumpType Opcjonalny. Konfiguruje Diagnostyka Azure do zbierania mini lub pełnych zrzutów awaryjnych.
directoryQuotaPercentage Opcjonalny. Konfiguruje wartość procentową ogólnej liczby obiektówQuotaInMB , która ma być zarezerwowana dla zrzutów awaryjnych na maszynie wirtualnej.
Elementy podrzędne Opis
CrashDumpConfiguration Wymagane. Definiuje wartości konfiguracji dla każdego procesu.

Wymagany jest również następujący atrybut:

processName — nazwa procesu, dla którego chcesz Diagnostyka Azure zebrać zrzut awaryjny.

Katalogi, element

Drzewo: Root — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration — Katalogi

Włącza zbieranie zawartości katalogu, dzienniki żądań dostępu usług IIS, które nie powiodły się i/lub dzienniki usług IIS.

Opcjonalny atrybut scheduledTransferPeriod . Zobacz wyjaśnienie wcześniej.

Elementy podrzędne Opis
Dzienniki usług IIS Uwzględnienie tego elementu w konfiguracji umożliwia zbieranie dzienników usług IIS:

containerName — nazwa kontenera obiektów blob na koncie usługi Azure Storage do przechowywania dzienników usług IIS.
FailedRequestLogs Uwzględnienie tego elementu w konfiguracji umożliwia zbieranie dzienników dotyczących żądań, które zakończyły się niepowodzeniem w witrynie lub aplikacji usług IIS. Należy również włączyć opcje śledzenia w systemie. Serwer sieci Web w Web.config.
Datasources Lista katalogów do monitorowania.

DataSources, element

Drzewo: Katalog główny — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration — Katalogi — DataSources

Lista katalogów do monitorowania.

Elementy podrzędne Opis
DirectoryConfiguration Wymagane. Wymagany atrybut:

containerName — nazwa kontenera obiektów blob na koncie usługi Azure Storage, które mają być używane do przechowywania plików dziennika.

DirectoryConfiguration, element

Drzewo: Root — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration — Katalogi — DataSources — DirectoryConfiguration

Może zawierać element Bezwzględny lub LocalResource , ale nie oba.

Elementy podrzędne Opis
Bezwzględna Ścieżka bezwzględna do katalogu do monitorowania. Wymagane są następujące atrybuty:

- Ścieżka — ścieżka bezwzględna do katalogu do monitorowania.

- expandEnvironment — określa, czy zmienne środowiskowe w ścieżce są rozwinięte.
LocalResource Ścieżka względem zasobu lokalnego do monitorowania. Wymagane atrybuty to:

- Nazwa — zasób lokalny zawierający katalog do monitorowania

- relativePath — ścieżka względna względem nazwy zawierającej katalog do monitorowania

EtwProviders, element

Drzewo: Root — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration — EtwProviders

Konfiguruje kolekcję zdarzeń ETW od dostawców opartych na źródłach zdarzeń i/lub etW manifestu.

Elementy podrzędne Opis
EtwEventSourceProviderConfiguration Konfiguruje zbieranie zdarzeń generowanych na podstawie klasy EventSource. Wymagany atrybut:

provider — nazwa klasy zdarzenia EventSource.

Atrybuty opcjonalne to:

- scheduledTransferLogLevelFilter — minimalny poziom ważności do przeniesienia na konto magazynu.

- scheduledTransferPeriod — interwał między zaplanowanym transferem do magazynu zaokrąglonym do najbliższej minuty. Wartość to XML "Duration Data Type" (Typ danych czasu trwania).
EtwManifestProviderConfiguration Wymagany atrybut:

provider — identyfikator GUID dostawcy zdarzeń

Atrybuty opcjonalne to:

- scheduledTransferLogLevelFilter — minimalny poziom ważności do przeniesienia na konto magazynu.

- scheduledTransferPeriod — interwał między zaplanowanym transferem do magazynu zaokrąglonym do najbliższej minuty. Wartość to XML "Duration Data Type" (Typ danych czasu trwania).

EtwEventSourceProviderConfiguration, element

Drzewo: Root — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration — EtwProviders — EtwEventSourceProviderConfiguration

Konfiguruje zbieranie zdarzeń generowanych na podstawie klasy EventSource.

Elementy podrzędne Opis
Defaultevents Atrybut opcjonalny:

eventDestination — nazwa tabeli do przechowywania zdarzeń w
Zdarzenie Wymagany atrybut:

id — identyfikator zdarzenia.

Atrybut opcjonalny:

eventDestination — nazwa tabeli do przechowywania zdarzeń w

EtwManifestProviderConfiguration, element

Drzewo: Root — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration — EtwProviders — EtwManifestProviderConfiguration

Elementy podrzędne Opis
Defaultevents Atrybut opcjonalny:

eventDestination — nazwa tabeli do przechowywania zdarzeń w
Zdarzenie Wymagany atrybut:

id — identyfikator zdarzenia.

Atrybut opcjonalny:

eventDestination — nazwa tabeli do przechowywania zdarzeń w

Metrics, element

Drzewo: root — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration — Metryki

Umożliwia wygenerowanie tabeli liczników wydajności zoptymalizowanej pod kątem szybkich zapytań. Każdy licznik wydajności zdefiniowany w elemecie PerformanceCounters jest przechowywany w tabeli Metrics (Metryki) oprócz tabeli Licznik wydajności.

Atrybut resourceId jest wymagany. Identyfikator zasobu maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych wdrażanych Diagnostyka Azure. Pobierz identyfikator resourceID z Azure Portal. Wybierz pozycję Przeglądaj ->Grupy zasobów -><Name>. Kliknij kafelek Właściwości i skopiuj wartość z pola IDENTYFIKATOR . Ta właściwość resourceID jest używana zarówno do wysyłania metryk niestandardowych, jak i dodawania właściwości resourceID do danych wysyłanych do usługi Event Hubs. Pamiętaj, że musisz dodać właściwość resourceId w elemecie Metrics , jeśli zdarzenia przekazane do usługi Event Hubs mają identyfikator zasobu.

Elementy podrzędne Opis
MetricAggregation Wymagany atrybut:

scheduledTransferPeriod — interwał między zaplanowanym transferem do magazynu zaokrąglonym w górę do najbliższej minuty. Wartość to XML "Duration Data Type" (Typ danych czasu trwania).

PerformanceCounters, element

Drzewo: root — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration — PerformanceCounters

Włącza zbieranie liczników wydajności.

Atrybut opcjonalny:

Opcjonalny atrybut scheduledTransferPeriod . Zobacz wyjaśnienie wcześniej.

Element podrzędny Opis
PerformanceCounterConfiguration Wymagane są następujące atrybuty:

- counterSpecifier — nazwa licznika wydajności. Na przykład \Processor(_Total)\% Processor Time. Aby uzyskać listę liczników wydajności na hoście, uruchom polecenie typeperf.

- sampleRate — jak często należy próbkować licznik.

Atrybut opcjonalny:

unit — jednostka miary licznika. Wartości są dostępne w klasie UnitType
Zlewozmywaki Dodano element w wersji 1.5. Opcjonalny. Wskazuje lokalizację ujścia, aby również wysyłać dane diagnostyczne. Na przykład usługa Azure Monitor lub Event Hubs. Pamiętaj, że musisz dodać właściwość resourceId w elemecie Metrics , jeśli zdarzenia przekazane do usługi Event Hubs mają identyfikator zasobu.

WindowsEventLog, element

Drzewo: root — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration — WindowsEventLog

Włącza zbieranie dzienników zdarzeń systemu Windows.

Opcjonalny atrybut scheduledTransferPeriod . Zobacz wyjaśnienie wcześniej.

Element podrzędny Opis
DataSource Dzienniki zdarzeń systemu Windows do zebrania. Wymagany atrybut:

name — zapytanie XPath opisujące zdarzenia systemu Windows do zebrania. Przykład:

Application!*[System[(Level <=3)]], System!*[System[(Level <=3)]], System!*[System[Provider[@Name='Microsoft Antimalware']]], Security!*[System[(Level <= 3)]

Aby zebrać wszystkie zdarzenia, określ wartość "*"
Zlewozmywaki Dodano element w wersji 1.5. Opcjonalny. Wskazuje lokalizację ujścia, aby również wysyłać dane diagnostyczne dla wszystkich elementów podrzędnych, które obsługują ujścia. Przykład ujścia to Application Insights lub Event Hubs.

Logs, element

Drzewo: root — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration — Dzienniki

Wersja 1.0 i 1.1. Brak w wersji 1.2. Dodano ponownie w wersji 1.3.

Definiuje konfigurację buforu dla podstawowych dzienników platformy Azure.

Atrybut Typ Opis
bufferQuotaInMB Unsignedint Opcjonalny. Określa maksymalną ilość magazynu systemu plików, która jest dostępna dla określonych danych.

Wartość domyślna to 0.
scheduledTransferLogLevelFilter Ciąg Opcjonalny. Określa minimalny poziom ważności dla wpisów dziennika, które są przenoszone. Wartość domyślna to Niezdefiniowane, która przesyła wszystkie dzienniki. Inne możliwe wartości (w kolejności od większości do najmniejszych informacji) to Pełne, Informacje, Ostrzeżenie, Błąd i Krytyczne.
scheduledTransferPeriod Długość Opcjonalny. Określa interwał między zaplanowanymi transferami danych zaokrąglonymi w górę do najbliższej minuty.

Wartość domyślna to PT0S.
Zlewozmywaki ciąg Dodano element w wersji 1.5. Opcjonalny. Wskazuje lokalizację ujścia, aby również wysyłać dane diagnostyczne. Na przykład usługa Application Insights lub usługa Event Hubs. Pamiętaj, że musisz dodać właściwość resourceId w elemecie Metrics , jeśli zdarzenia przekazane do usługi Event Hubs mają identyfikator zasobu.

DockerSources

Drzewo: root — DiagnosticsConfiguration — PublicConfig — WadCFG — DiagnosticMonitorConfiguration — DockerSources

Dodano element w wersji 1.9.

Nazwa elementu Opis
Statystyki Informuje system o zbieraniu statystyk dla kontenerów platformy Docker

SinksConfig, element

Drzewo: root — DiagnosticsConfiguration — PublicConfig — WadCFG — SinksConfig

Lista lokalizacji do wysyłania danych diagnostycznych do i konfiguracja skojarzona z tymi lokalizacjami.

Nazwa elementu Opis
Ujście Zobacz opis w innym miejscu na tej stronie.

Element ujścia

Drzewo: Root — DiagnosticsConfiguration — PublicConfig — WadCFG — SinksConfig — SinksConfig

Dodano w wersji 1.5.

Definiuje lokalizacje do wysyłania danych diagnostycznych. Na przykład usługa Application Insights.

Atrybut Typ Opis
Nazwa ciąg Ciąg identyfikujący nazwę ujścia.
Element Typ Opis
Application Insights ciąg Używane tylko podczas wysyłania danych do usługi Application Insights. Zawiera klucz instrumentacji dla aktywnego konta usługi Application Insights, do którego masz dostęp.
Kanały ciąg Jeden dla każdego dodatkowego filtrowania przesyłanego strumieniowo

Channel, element

Drzewo: Root — DiagnosticsConfiguration — PublicConfig — WadCFG — SinksConfig — Sinks — Kanały

Dodano w wersji 1.5.

Definiuje filtry strumieni danych dziennika przechodzących przez ujście.

Element Typ Opis
Kanał ciąg Zobacz opis w innym miejscu na tej stronie.

Channel, element

Drzewo: Katalog główny — DiagnostykaKonfiguracja — PublicConfig — WadCFG — SinksConfig — Sink — Kanały — Kanał

Dodano w wersji 1.5.

Definiuje lokalizacje do wysyłania danych diagnostycznych. Na przykład usługa Application Insights.

Atrybuty Typ Opis
Loglevel ciąg Określa minimalny poziom ważności dla wpisów dziennika, które są przenoszone. Wartość domyślna to Niezdefiniowana, która przesyła wszystkie dzienniki. Inne możliwe wartości (w kolejności od większości do najmniejszych informacji) to Pełne, Informacje, Ostrzeżenie, Błąd i Krytyczne.
Nazwa ciąg Unikatowa nazwa kanału do odwoływania się do

PrivateConfig, element

Drzewo: Katalog główny — DiagnostykaKonfiguracja — PrivateConfig

Dodano w wersji 1.3.

Opcjonalne

Przechowuje prywatne szczegóły konta magazynu (nazwę, klucz i punkt końcowy). Te informacje są wysyłane do maszyny wirtualnej, ale nie można ich pobrać.

Elementy podrzędne Opis
StorageAccount Konto magazynu do użycia. Wymagane są następujące atrybuty

- name — nazwa konta magazynu.

- key — klucz do konta magazynu.

- endpoint — punkt końcowy umożliwiający dostęp do konta magazynu.

-sasToken (dodano 1.8.1) — możesz określić token SAS zamiast klucza konta magazynu w prywatnej konfiguracji. Jeśli zostanie podany, klucz konta magazynu zostanie zignorowany.
Wymagania dotyczące tokenu SAS:
— Obsługuje tylko token SAS konta
- b, typy usług t są wymagane.
- a, c, u, w uprawnienia są wymagane.
- c, typy zasobów o są wymagane.
— Obsługuje tylko protokół HTTPS
- Czas rozpoczęcia i wygaśnięcia musi być prawidłowy.

IsEnabled, element

Drzewo: Katalog główny — DiagnostykaKonfiguracja — IsEnabled

Boolean. Użyj true polecenia , aby włączyć diagnostykę lub false wyłączyć diagnostykę.

Przykładowa konfiguracja

Poniżej przedstawiono pełną przykładową konfigurację rozszerzenia diagnostyki systemu Windows pokazaną zarówno w formacie JSON, jak i w formacie XML.

JSON

Funkcja PublicConfig i PrivateConfig są oddzielone, ponieważ w większości przypadków użycia JSON są przekazywane jako różne zmienne. Te przypadki obejmują szablony Resource Manager, program PowerShell i program Visual Studio.

Uwaga

Publiczna definicja ujścia usługi Azure Monitor ma dwie właściwości, resourceId i region. Są one wymagane tylko w przypadku klasycznych maszyn wirtualnych i klasycznych usług w chmurze. Właściwość regionu nie powinna być używana dla innych zasobów. Właściwość resourceId jest używana na maszynach wirtualnych usługi ARM w celu wypełnienia pola resourceID w dziennikach przekazanych do usługi Event Hubs.

"PublicConfig" {
    "WadCfg": {
        "DiagnosticMonitorConfiguration": {
            "overallQuotaInMB": 10000,
            "DiagnosticInfrastructureLogs": {
                "scheduledTransferLogLevelFilter": "Error"
            },
            "PerformanceCounters": {
                "scheduledTransferPeriod": "PT1M",
                "sinks": "AzureMonitorSink",
                "PerformanceCounterConfiguration": [
                    {
                        "counterSpecifier": "\\Processor(_Total)\\% Processor Time",
                        "sampleRate": "PT1M",
                        "unit": "percent"
                    }
                ]
            },
            "Directories": {
                "scheduledTransferPeriod": "PT5M",
                "IISLogs": {
                    "containerName": "iislogs"
                },
                "FailedRequestLogs": {
                    "containerName": "iisfailed"
                },
                "DataSources": [
                    {
                        "containerName": "mynewprocess",
                        "Absolute": {
                            "path": "C:\\MyNewProcess",
                            "expandEnvironment": false
                        }
                    },
                    {
                        "containerName": "badapp",
                        "Absolute": {
                            "path": "%SYSTEMDRIVE%\\BadApp",
                            "expandEnvironment": true
                        }
                    },
                    {
                        "containerName": "goodapp",
                        "LocalResource": {
                            "relativePath": "..\\PeanutButter",
                            "name": "Skippy"
                        }
                    }
                ]
            },
            "EtwProviders": {
                "sinks": "",
                "EtwEventSourceProviderConfiguration": [
                    {
                        "scheduledTransferPeriod": "PT5M",
                        "provider": "MyProviderClass",
                        "Event": [
                            {
                                "id": 0
                            },
                            {
                                "id": 1,
                                "eventDestination": "errorTable"
                            }
                        ],
                        "DefaultEvents": {
                        }
                    }
                ],
                "EtwManifestProviderConfiguration": [
                    {
                        "scheduledTransferPeriod": "PT2M",
                        "scheduledTransferLogLevelFilter": "Information",
                        "provider": "5974b00b-84c2-44bc-9e58-3a2451b4e3ad",
                        "Event": [
                            {
                                "id": 0
                            }
                        ],
                        "DefaultEvents": {
                        }
                    }
                ]
            },
            "WindowsEventLog": {
                "scheduledTransferPeriod": "PT5M",
                "DataSource": [
                    {
                        "name": "System!*[System[Provider[@Name='Microsoft Antimalware']]]"
                    },
                    {
                        "name": "System!*[System[Provider[@Name='NTFS'] and (EventID=55)]]"
                    },
                    {
                        "name": "System!*[System[Provider[@Name='disk'] and (EventID=7 or EventID=52 or EventID=55)]]"
                    }
                ]
            },
            "Logs": {
                "scheduledTransferPeriod": "PT1M",
                "scheduledTransferLogLevelFilter": "Verbose",
                "sinks": "ApplicationInsights.AppLogs"
            },
            "CrashDumps": {
                "directoryQuotaPercentage": 30,
                "dumpType": "Mini",
                "containerName": "wad-crashdumps",
                "CrashDumpConfiguration": [
                    {
                        "processName": "mynewprocess.exe"
                    },
                    {
                        "processName": "badapp.exe"
                    }
                ]
            }
        },
        "SinksConfig": {
            "Sink": [
                {
                    "name": "AzureMonitorSink",
                    "AzureMonitor":
                    {
                        "ResourceId": "{insert resourceId if a classic VM or cloud service, else property not needed}",
                        "Region": "{insert Azure region of resource if a classic VM or cloud service, else property not needed}"
                    }
                },
                {
                    "name": "ApplicationInsights",
                    "ApplicationInsights": "{Insert InstrumentationKey}",
                    "Channels": {
                        "Channel": [
                            {
                                "logLevel": "Error",
                                "name": "Errors"
                            },
                            {
                                "logLevel": "Verbose",
                                "name": "AppLogs"
                            }
                        ]
                    }
                },
                {
                    "name": "EventHub",
                    "EventHub": {
                        "Url": "https://myeventhub-ns.servicebus.windows.net/diageventhub",
                        "SharedAccessKeyName": "SendRule",
                        "usePublisherId": false
                    }
                },
                {
                    "name": "secondaryEventHub",
                    "EventHub": {
                        "Url": "https://myeventhub-ns.servicebus.windows.net/secondarydiageventhub",
                        "SharedAccessKeyName": "SendRule",
                        "usePublisherId": false
                    }
                },
                {
                    "name": "secondaryStorageAccount",
                    "StorageAccount": {
                        "name": "secondarydiagstorageaccount",
                        "endpoint": "https://core.windows.net"
                    }
                }
            ]
        }
    },
    "StorageAccount": "diagstorageaccount",
    "StorageType": "TableAndBlob"
}

Uwaga

Definicja ujścia prywatnej konfiguracji usługi Azure Monitor ma dwie właściwości PrincipalId i Secret. Są one wymagane tylko w przypadku klasycznych maszyn wirtualnych i klasycznych usług w chmurze. Te właściwości nie powinny być używane w przypadku innych zasobów.

"PrivateConfig" {
    "storageAccountName": "diagstorageaccount",
    "storageAccountKey": "{base64 encoded key}",
    "storageAccountEndPoint": "https://core.windows.net",
    "storageAccountSasToken": "{sas token}",
    "EventHub": {
        "Url": "https://myeventhub-ns.servicebus.windows.net/diageventhub",
        "SharedAccessKeyName": "SendRule",
        "SharedAccessKey": "{base64 encoded key}"
    },
    "AzureMonitorAccount": {
        "ServicePrincipalMeta": {
            "PrincipalId": "{Insert service principal client Id}",
            "Secret": "{Insert service principal client secret}"
        }
    },
    "SecondaryStorageAccounts": {
        "StorageAccount": [
            {
                "name": "secondarydiagstorageaccount",
                "key": "{base64 encoded key}",
                "endpoint": "https://core.windows.net",
                "sasToken": "{sas token}"
            }
        ]
    },
    "SecondaryEventHubs": {
        "EventHub": [
            {
                "Url": "https://myeventhub-ns.servicebus.windows.net/secondarydiageventhub",
                "SharedAccessKeyName": "SendRule",
                "SharedAccessKey": "{base64 encoded key}"
            }
        ]
    }
}

XML

<?xml version="1.0" encoding="utf-8"?>  
<DiagnosticsConfiguration  xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">   
  <PublicConfig>  
    <WadCfg>  
      <DiagnosticMonitorConfiguration overallQuotaInMB="10000">  

        <PerformanceCounters scheduledTransferPeriod="PT1M" sinks="AzureMonitorSink">  
          <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT1M" unit="percent" />  
        </PerformanceCounters>  

        <Directories scheduledTransferPeriod="PT5M">  
          <IISLogs containerName="iislogs" />  
          <FailedRequestLogs containerName="iisfailed" />  

          <DataSources>  
            <DirectoryConfiguration containerName="mynewprocess">  
              <Absolute path="C:\MyNewProcess" expandEnvironment="false" />  
            </DirectoryConfiguration>  
            <DirectoryConfiguration containerName="badapp">  
              <Absolute path="%SYSTEMDRIVE%\BadApp" expandEnvironment="true" />  
            </DirectoryConfiguration>  
            <DirectoryConfiguration containerName="goodapp">  
              <LocalResource name="Skippy" relativePath="..\PeanutButter"/>  
            </DirectoryConfiguration>  
          </DataSources>  

        </Directories>  

        <EtwProviders>  
          <EtwEventSourceProviderConfiguration   
                       provider="MyProviderClass"   
                       scheduledTransferPeriod="PT5M">  
            <Event id="0"/>  
            <Event id="1" eventDestination="errorTable"/>  
            <DefaultEvents />  
          </EtwEventSourceProviderConfiguration>  
          <EtwManifestProviderConfiguration provider="5974b00b-84c2-44bc-9e58-3a2451b4e3ad" scheduledTransferLogLevelFilter="Information" scheduledTransferPeriod="PT2M">  
            <Event id="0"/>  
            <DefaultEvents eventDestination="defaultTable"/>  
          </EtwManifestProviderConfiguration>  
        </EtwProviders>  

        <WindowsEventLog scheduledTransferPeriod="PT5M">  
          <DataSource name="System!*[System[Provider[@Name='Microsoft Antimalware']]]"/>  
          <DataSource name="System!*[System[Provider[@Name='NTFS'] and (EventID=55)]]" />  
          <DataSource name="System!*[System[Provider[@Name='disk'] and (EventID=7 or EventID=52 or EventID=55)]]" />  
        </WindowsEventLog>  

        <Logs  bufferQuotaInMB="1024"   
             scheduledTransferPeriod="PT1M"   
             scheduledTransferLogLevelFilter="Verbose"   
             sinks="ApplicationInsights.AppLogs"/>  <!-- sinks attribute added in 1.5 -->  

        <CrashDumps containerName="wad-crashdumps" directoryQuotaPercentage="30" dumpType="Mini">  
          <CrashDumpConfiguration processName="mynewprocess.exe" />  
          <CrashDumpConfiguration processName="badapp.exe"/>  
        </CrashDumps>  

        <DockerSources> <!-- Added in 1.9 -->
          <Stats enabled="true" sampleRate="PT1M" scheduledTransferPeriod="PT1M" />
        </DockerSources>

      </DiagnosticMonitorConfiguration>  

      <SinksConfig>   <!-- Added in 1.5 -->  
        <Sink name="AzureMonitorSink">
            <AzureMonitor> <!-- Added in 1.11 -->
                <resourceId>{insert resourceId}</ResourceId> <!-- Parameter only needed for classic VMs and Classic Cloud Services, exclude VMSS and Resource Manager VMs-->
                <Region>{insert Azure region of resource}</Region> <!-- Parameter only needed for classic VMs and Classic Cloud Services, exclude VMSS and Resource Manager VMs -->
            </AzureMonitor>
        </Sink>
        <Sink name="ApplicationInsights">   
          <ApplicationInsights>{Insert InstrumentationKey}</ApplicationInsights>   
          <Channels>   
            <Channel logLevel="Error" name="Errors"  />   
            <Channel logLevel="Verbose" name="AppLogs"  />   
          </Channels>   
        </Sink>   
        <Sink name="EventHub"> <!-- Added in 1.7 -->
          <EventHub Url="https://myeventhub-ns.servicebus.windows.net/diageventhub" SharedAccessKeyName="SendRule" usePublisherId="false" />
        </Sink>
        <Sink name="secondaryEventHub"> <!-- Added in 1.7 -->
          <EventHub Url="https://myeventhub-ns.servicebus.windows.net/secondarydiageventhub" SharedAccessKeyName="SendRule" usePublisherId="false" />
        </Sink>
        <Sink name="secondaryStorageAccount"> <!-- Added in 1.7 -->
          <StorageAccount name="secondarydiagstorageaccount" endpoint="https://core.windows.net" />
        </Sink>
   </SinksConfig>

  </WadCfg>  

  <StorageAccount>diagstorageaccount</StorageAccount>
  <StorageType>TableAndBlob</StorageType> <!-- Added in 1.8 -->  
  </PublicConfig>  

  <PrivateConfig>  <!-- Added in 1.3 -->  
    <StorageAccount name="" key="" endpoint="" sasToken="{sas token}"  />  <!-- sasToken in Private config added in 1.8.1 -->  
    <EventHub Url="https://myeventhub-ns.servicebus.windows.net/diageventhub" SharedAccessKeyName="SendRule" SharedAccessKey="{base64 encoded key}" />

    <AzureMonitorAccount>
        <ServicePrincipalMeta> <!-- Added in 1.11; only needed for classic VMs and Classic cloud services -->
            <PrincipalId>{Insert service principal clientId}</PrincipalId>
            <Secret>{Insert service principal client secret}</Secret>
        </ServicePrincipalMeta>
    </AzureMonitorAccount>

    <SecondaryStorageAccounts>
       <StorageAccount name="secondarydiagstorageaccount" key="{base64 encoded key}" endpoint="https://core.windows.net" sasToken="{sas token}" />
    </SecondaryStorageAccounts>

    <SecondaryEventHubs>
       <EventHub Url="https://myeventhub-ns.servicebus.windows.net/secondarydiageventhub" SharedAccessKeyName="SendRule" SharedAccessKey="{base64 encoded key}" />
    </SecondaryEventHubs>

  </PrivateConfig>  
  <IsEnabled>true</IsEnabled>  
</DiagnosticsConfiguration>  

Uwaga

Publiczna definicja ujścia usługi Azure Monitor ma dwie właściwości, resourceId i region. Są one wymagane tylko w przypadku klasycznych maszyn wirtualnych i klasycznych usług w chmurze. Te właściwości nie powinny być używane do Resource Manager Virtual Machines ani zestawów skalowania maszyn wirtualnych. Istnieje również dodatkowy element prywatnej konfiguracji dla ujścia usługi Azure Monitor, który przekazuje identyfikator podmiotu zabezpieczeń i wpis tajny. Jest to wymagane tylko w przypadku klasycznych maszyn wirtualnych i klasycznych Cloud Services. W przypadku maszyn wirtualnych Resource Manager i vmSS można wykluczyć definicję usługi Azure Monitor w prywatnym elemecie konfiguracji.