Dzienniki diagnostyczne — Azure Content Delivery Network

Za pomocą dzienników diagnostycznych platformy Azure można wyświetlać podstawowe analizy i zapisywać je w co najmniej jednym miejscu docelowym, w tym:

  • Konto usługi Azure Storage
  • Obszar roboczy usługi Log Analytics
  • Azure Event Hubs

Ta funkcja jest dostępna w punktach końcowych sieci dostarczania zawartości dla wszystkich warstw cenowych.

Dzienniki diagnostyczne umożliwiają eksportowanie podstawowych metryk użycia z punktu końcowego sieci dostarczania zawartości do różnych źródeł, dzięki czemu można z nich korzystać w dostosowany sposób. Możesz wykonać następujące typy eksportu danych:

  • Eksportowanie danych do magazynu obiektów blob, eksportowanie do woluminu CSV i generowanie grafów w programie Excel.
  • Eksportowanie danych do usługi Event Hubs i korelowanie z danymi z innych usług platformy Azure.
  • Eksportowanie danych do dzienników usługi Azure Monitor i wyświetlanie danych we własnym obszarze roboczym usługi Log Analytics

Do wykonania poniższych kroków jest wymagany profil usługi Azure Content Delivery Network. Przed kontynuowaniem zapoznaj się z artykułem Tworzenie profilu i punktu końcowego usługi Azure Content Delivery Network.

Włączanie rejestrowania w witrynie Azure Portal

Wykonaj następujące kroki, aby włączyć rejestrowanie punktu końcowego usługi Azure Content Delivery Network:

  1. Zaloguj się w witrynie Azure Portal.

  2. W witrynie Azure Portal przejdź do pozycji Wszystkie zasoby>your-cdn-profile.

  3. Wybierz punkt końcowy sieci dostarczania zawartości, dla którego chcesz włączyć dzienniki diagnostyczne:

    Zrzut ekranu przedstawiający wybieranie punktu końcowego sieci dostarczania zawartości.

  4. Wybierz pozycję Dzienniki diagnostyczne w sekcji Monitorowanie :

    Zrzut ekranu przedstawiający przycisk dzienników diagnostycznych w menu monitorowania.

Włączanie rejestrowania za pomocą usługi Azure Storage

Aby przechowywać dzienniki przy użyciu konta magazynu, wykonaj następujące kroki:

Uwaga

Do wykonania tych kroków wymagane jest konto magazynu. Aby uzyskać więcej informacji, zobacz: Tworzenie konta usługi Azure Storage.

  1. W polu Nazwa ustawienia diagnostycznego wprowadź nazwę ustawień dziennika diagnostycznego.

  2. Wybierz pozycję Archiwum na koncie magazynu, a następnie wybierz pozycję CoreAnalytics.

  3. W obszarze Przechowywanie (dni) wybierz liczbę dni przechowywania. Przechowywanie zera dni przechowuje dzienniki na czas nieokreślony.

  4. Wybierz subskrypcję i konto magazynu dla dzienników.

    Dzienniki diagnostyczne — magazyn.

  5. Wybierz pozycję Zapisz.

Wysyłanie do usługi Log Analytics

Aby użyć usługi Log Analytics dla dzienników, wykonaj następujące kroki:

Uwaga

Do wykonania tych kroków jest wymagany obszar roboczy usługi Log Analytics. Aby uzyskać więcej informacji, zobacz Tworzenie obszaru roboczego usługi Log Analytics w witrynie Azure Portal .

  1. W polu Nazwa ustawienia diagnostycznego wprowadź nazwę ustawień dziennika diagnostycznego.

  2. Wybierz pozycję Wyślij do usługi Log Analytics, a następnie wybierz pozycję CoreAnalytics.

  3. Wybierz subskrypcję i obszar roboczy usługi Log Analytics dla dzienników.

    Dzienniki diagnostyczne — Log Analytics.

  4. Wybierz pozycję Zapisz.

Przesyłanie strumieniowe do centrum zdarzeń

Aby użyć centrum zdarzeń dla dzienników, wykonaj następujące kroki:

Uwaga

Do wykonania tych kroków jest wymagane centrum zdarzeń. Aby uzyskać więcej informacji, zobacz: Szybki start: tworzenie centrum zdarzeń przy użyciu witryny Azure Portal .

  1. W polu Nazwa ustawienia diagnostycznego wprowadź nazwę ustawień dziennika diagnostycznego.

  2. Wybierz pozycję Stream do centrum zdarzeń, a następnie wybierz pozycję CoreAnalytics.

  3. Wybierz subskrypcję i przestrzeń nazw centrum zdarzeń dla dzienników.

    Dzienniki diagnostyczne — centrum zdarzeń.

  4. Wybierz pozycję Zapisz.

Włączanie rejestrowania przy użyciu programu PowerShell

W poniższym przykładzie pokazano, jak włączyć dzienniki diagnostyczne za pomocą poleceń cmdlet programu Azure PowerShell.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Włączanie dzienników diagnostycznych na koncie magazynu

  1. Zaloguj się do programu Azure PowerShell:

    Connect-AzAccount 
    
  2. Aby włączyć dzienniki diagnostyczne na koncie magazynu, wprowadź te polecenia. Zastąp zmienne swoimi wartościami:

    $rsg = <your-resource-group-name>
    $cdnprofile = <your-cdn-profile-name>
    $cdnendpoint = <your-cdn-endpoint-name>
    $storageacct = <your-storage-account-name>
    $diagname = <your-diagnostic-setting-name>
    
    $cdn = Get-AzCdnEndpoint -ResourceGroupName $rsg -ProfileName $cdnprofile -EndpointName $cdnendpoint
    
    $storage = Get-AzStorageAccount -ResourceGroupName $rsg -Name $storageacct
    
    Set-AzDiagnosticSetting -Name $diagname -ResourceId $cdn.id -StorageAccountId $storage.id -Enabled $true -Categories CoreAnalytics
    

Włączanie dzienników diagnostycznych dla obszaru roboczego usługi Log Analytics

  1. Zaloguj się do programu Azure PowerShell:

    Connect-AzAccount 
    
  2. Aby włączyć dzienniki diagnostyczne dla obszaru roboczego usługi Log Analytics, wprowadź te polecenia. Zastąp zmienne swoimi wartościami:

    $rsg = <your-resource-group-name>
    $cdnprofile = <your-cdn-profile-name>
    $cdnendpoint = <your-cdn-endpoint-name>
    $workspacename = <your-log-analytics-workspace-name>
    $diagname = <your-diagnostic-setting-name>
    
    $cdn = Get-AzCdnEndpoint -ResourceGroupName $rsg -ProfileName $cdnprofile -EndpointName $cdnendpoint
    
    $workspace = Get-AzOperationalInsightsWorkspace -ResourceGroupName $rsg -Name $workspacename
    
    Set-AzDiagnosticSetting -Name $diagname -ResourceId $cdn.id -WorkspaceId $workspace.ResourceId -Enabled $true -Categories CoreAnalytics
    

Włączanie dzienników diagnostycznych dla przestrzeni nazw centrum zdarzeń

  1. Zaloguj się do programu Azure PowerShell:

    Connect-AzAccount 
    
  2. Aby włączyć dzienniki diagnostyczne dla obszaru roboczego usługi Log Analytics, wprowadź te polecenia. Zastąp zmienne swoimi wartościami:

    $rsg = <your-resource-group-name>
    $cdnprofile = <your-cdn-profile-name>
    $cdnendpoint = <your-cdn-endpoint-name>
    $eventhubname = <your-event-hub-namespace-name>
    $diagname = <your-diagnostic-setting-name>
    
    $cdn = Get-AzCdnEndpoint -ResourceGroupName $rsg -ProfileName $cdnprofile -EndpointName $cdnendpoint
    
    Set-AzDiagnosticSetting -Name $diagname -ResourceId $cdn.id -EventHubName $eventhubname -Enabled $true -Categories CoreAnalytics
    

Korzystanie z dzienników diagnostycznych z usługi Azure Storage

W tej sekcji opisano schemat analizy podstawowej sieci dostarczania zawartości, organizacji na koncie usługi Azure Storage i zawiera przykładowy kod umożliwiający pobranie dzienników w pliku CSV.

Korzystanie z Eksplorator usługi Microsoft Azure Storage

Aby pobrać narzędzie, zobacz Eksplorator usługi Azure Storage. Po pobraniu i zainstalowaniu oprogramowania skonfiguruj go tak, aby używał tego samego konta usługi Azure Storage, które zostało skonfigurowane jako miejsce docelowe w dziennikach diagnostycznych sieci dostarczania zawartości.

  1. Otwórz Eksplorator usługi Microsoft Azure Storage
  2. Lokalizowanie konta magazynu
  3. Rozwiń węzeł Kontenery obiektów blob w ramach tego konta magazynu.
  4. Wybierz kontener o nazwie insights-logs-coreanalytics.
  5. Wyniki są wyświetlane w okienku po prawej stronie, zaczynając od pierwszego poziomu, jako resourceId=. Kontynuuj wybieranie każdego poziomu do momentu znalezienia PT1H.json pliku. Aby uzyskać wyjaśnienie ścieżki, zobacz Format ścieżki obiektu blob.
  6. Każdy plik PT1H.json obiektów blob reprezentuje dzienniki analityczne przez jedną godzinę dla określonego punktu końcowego sieci dostarczania zawartości lub domeny niestandardowej.
  7. Schemat zawartości tego pliku JSON jest opisany w sekcji schematu podstawowych dzienników analitycznych.

Format ścieżki obiektu blob

Dzienniki analizy podstawowej są generowane co godzinę, a dane są zbierane i przechowywane wewnątrz pojedynczego obiektu blob platformy Azure jako ładunku JSON. Narzędzie Eksploratora usługi Storage interpretuje znak "/" jako separator katalogu i pokazuje hierarchię. Ścieżka do obiektu blob platformy Azure wygląda tak, jakby istniała struktura hierarchiczna i reprezentuje nazwę obiektu blob. Nazwa obiektu blob jest zgodna z następującą konwencją nazewnictwa:

resourceId=/SUBSCRIPTIONS/{Subscription Id}/RESOURCEGROUPS/{Resource Group Name}/PROVIDERS/MICROSOFT.CDN/PROFILES/{Profile Name}/ENDPOINTS/{Endpoint Name}/ y=/m=/d=/h=/m=/PT1H.json

Opis pól:

Wartość Opis
Identyfikator subskrypcji Identyfikator subskrypcji platformy Azure w formacie globalnie unikatowego identyfikatora (GUID).
Nazwa grupy zasobów Nazwa grupy zasobów, do której należą zasoby sieciowe dostarczania zawartości.
Nazwa profilu Nazwa profilu sieci dostarczania zawartości
Nazwa punktu końcowego Nazwa punktu końcowego sieci dostarczania zawartości
Year (Rok) Czterocyfrowa reprezentacja roku, na przykład 2017
Month Dwucyfrowa reprezentacja numeru miesiąca. 01=Styczeń ... 12=grudzień
Dzień Dwucyfrowa reprezentacja dnia miesiąca
PT1H.json Rzeczywisty plik JSON, w którym są przechowywane dane analityczne

Eksportowanie podstawowych danych analitycznych do pliku CSV

Aby uzyskać dostęp do podstawowej analizy, udostępniany jest przykładowy kod narzędzia. To narzędzie umożliwia pobieranie plików JSON do prostego formatu pliku rozdzielanego przecinkami, który może służyć do tworzenia wykresów lub innych agregacji.

Oto jak można użyć narzędzia:

  1. Odwiedź link usługi GitHub: https://github.com/Azure-Samples/azure-cdn-samples/tree/master/CoreAnalytics-ExportToCsv
  2. Pobierz kod.
  3. Postępuj zgodnie z instrukcjami, aby skompilować i skonfigurować.
  4. Uruchom narzędzie.
  5. Wynikowy plik CSV przedstawia dane analityczne w prostej płaskiej hierarchii.

Opóźnienia danych dziennika

W poniższej tabeli przedstawiono opóźnienia danych dziennika dla usługi Azure CDN Standard firmy Microsoft oraz usługi Azure CDN Standard/Premium z usługi Edgio.

Opóźnienia danych dziennika firmy Microsoft Opóźnienia danych dziennika Edgio
Opóźnione o 1 godzinę. Opóźnienie o 1 godzinę i może potrwać do 2 godzin, aby rozpocząć pojawianie się po zakończeniu propagacji punktu końcowego.

Typy dzienników diagnostycznych na potrzeby analizy podstawowej sieci dostarczania zawartości

Firma Microsoft obecnie oferuje tylko podstawowe dzienniki analityczne, które zawierają metryki przedstawiające statystyki odpowiedzi HTTP i statystyki ruchu wychodzącego, jak pokazano na podstawie punktów POP/krawędzi sieci dostarczania zawartości.

Szczegóły metryk analizy podstawowej

W poniższej tabeli przedstawiono listę metryk dostępnych w podstawowych dziennikach analitycznych dla:

  • Azure CDN Standard from Microsoft
  • Usługa Azure CDN w warstwie Standardowa/Premium z usługi Edgio

Nie wszystkie metryki są dostępne dla wszystkich dostawców, chociaż takie różnice są minimalne. W tabeli przedstawiono również, czy dana metryka jest dostępna u dostawcy. Metryki są dostępne tylko dla punktów końcowych sieci dostarczania zawartości, które mają na nich ruch.

Metryczne opis Microsoft Edgio
RequestCountTotal Łączna liczba trafień żądań w tym okresie. Tak Tak
RequestCountHttpStatus2xx Liczba wszystkich żądań, które spowodowały kod HTTP 2xx (na przykład 200, 202). Tak Tak
RequestCountHttpStatus3xx Liczba wszystkich żądań, które spowodowały kod HTTP 3xx (na przykład 300, 302). Tak Tak
RequestCountHttpStatus4xx Liczba wszystkich żądań, które spowodowały kod HTTP 4xx (na przykład 400, 404). Tak Tak
RequestCountHttpStatus5xx Liczba wszystkich żądań, które spowodowały kod HTTP 5xx (na przykład 500, 504). Tak Tak
RequestCountHttpStatusOthers Liczba wszystkich innych kodów HTTP (poza 2xx-5xx). Tak Tak
RequestCountHttpStatus200 Liczba wszystkich żądań, które spowodowały odpowiedź kodu HTTP na 200. Tak Nie.
RequestCountHttpStatus206 Liczba wszystkich żądań, które spowodowały odpowiedź kodu HTTP 206. Tak Nie.
RequestCountHttpStatus302 Liczba wszystkich żądań, które spowodowały odpowiedź kodu HTTP 302. Tak Nie.
RequestCountHttpStatus304 Liczba wszystkich żądań, które spowodowały odpowiedź kodu HTTP 304. Tak Nie.
RequestCountHttpStatus404 Liczba wszystkich żądań, które spowodowały odpowiedź kodu HTTP 404. Tak Nie.
RequestCountCacheHit Liczba wszystkich żądań, które spowodowały trafienie pamięci podręcznej. Zasób był obsługiwany bezpośrednio z punktu pop do klienta. Tak Tak
RequestCountCacheMiss Liczba wszystkich żądań, które spowodowały pominięcie pamięci podręcznej. Chybienie pamięci podręcznej oznacza, że element zawartości nie został znaleziony w pop najbliżej klienta i został pobrany z źródła. Tak Tak
RequestCountCacheNoCache Liczba wszystkich żądań do zasobu, które nie mogą być buforowane z powodu konfiguracji użytkownika na brzegu sieci. Tak Tak
RequestCountCacheUncacheUncacheable Liczba wszystkich żądań do zasobów, które nie mogą być buforowane przez nagłówki Cache-Control i Expires elementu zawartości. Ta liczba wskazuje, że nie powinna być buforowana w pop ani przez klienta HTTP. Tak Tak
RequestCountCacheInne Liczba wszystkich żądań ze stanem pamięci podręcznej, które nie są uwzględnione w metrykach wymienionych wcześniej. Nie. Tak
EgressTotal Transfer danych wychodzących w GB Tak Tak
EgressHttpStatus2xx Transfer danych wychodzących* dla odpowiedzi z kodami stanu HTTP 2xx w GB. Tak Tak
EgressHttpStatus3xx Transfer danych wychodzących dla odpowiedzi z kodami stanu HTTP 3xx w GB. Tak Tak
EgressHttpStatus4xx Transfer danych wychodzących dla odpowiedzi z kodami stanu HTTP 4xx w GB. Tak Tak
EgressHttpStatus5xx Transfer danych wychodzących dla odpowiedzi z kodami stanu HTTP 5xx w GB. Tak Tak
EgressHttpStatusOthers Transfer danych wychodzących dla odpowiedzi z innymi kodami stanu HTTP w GB. Tak Tak
EgressCacheHit Wychodzący transfer danych dla odpowiedzi, które zostały dostarczone bezpośrednio z pamięci podręcznej sieci dostarczania zawartości w sieci dostarczania zawartości POPs/Edges. Tak Tak
EgressCacheMiss. Transfer danych wychodzących dla odpowiedzi, które nie zostały znalezione na najbliższym serwerze POP i pobrane z serwera pochodzenia. Tak Tak
EgressCacheNoCache Transfer danych wychodzących dla zasobów, które nie mogą być buforowane z powodu konfiguracji użytkownika na brzegu sieci. Tak Tak
EgressCacheUncache możliwe do zniesienia Transfer danych wychodzących dla zasobów, które nie mogą być buforowane przez kontrolkę pamięci podręcznej zasobu i wygasa nagłówki. Wskazuje, że nie należy buforować go w pop ani przez klienta HTTP. Tak Tak
EgressCacheInne Wychodzące transfery danych dla innych scenariuszy pamięci podręcznej. Nie. Tak

*Transfer danych wychodzących odnosi się do ruchu dostarczonego z serwerów POP sieci dostarczania zawartości do klienta.

Schemat podstawowych dzienników analitycznych

Wszystkie dzienniki są przechowywane w formacie JSON, a każdy wpis zawiera pola ciągów zgodnie z następującym schematem:

    "records": [
        {
            "time": "2017-04-27T01:00:00",
            "resourceId": "<ARM Resource Id of the CDN Endpoint>",
            "operationName": "Microsoft.Cdn/profiles/endpoints/contentDelivery",
            "category": "CoreAnalytics",
            "properties": {
                "DomainName": "<Name of the domain for which the statistics is reported>",
                "RequestCountTotal": integer value,
                "RequestCountHttpStatus2xx": integer value,
                "RequestCountHttpStatus3xx": integer value,
                "RequestCountHttpStatus4xx": integer value,
                "RequestCountHttpStatus5xx": integer value,
                "RequestCountHttpStatusOthers": integer value,
                "RequestCountHttpStatus200": integer value,
                "RequestCountHttpStatus206": integer value,
                "RequestCountHttpStatus302": integer value,
                "RequestCountHttpStatus304": integer value,
                "RequestCountHttpStatus404": integer value,
                "RequestCountCacheHit": integer value,
                "RequestCountCacheMiss": integer value,
                "RequestCountCacheNoCache": integer value,
                "RequestCountCacheUncacheable": integer value,
                "RequestCountCacheOthers": integer value,
                "EgressTotal": double value,
                "EgressHttpStatus2xx": double value,
                "EgressHttpStatus3xx": double value,
                "EgressHttpStatus4xx": double value,
                "EgressHttpStatus5xx": double value,
                "EgressHttpStatusOthers": double value,
                "EgressCacheHit": double value,
                "EgressCacheMiss": double value,
                "EgressCacheNoCache": double value,
                "EgressCacheUncacheable": double value,
                "EgressCacheOthers": double value,
            }
        }

    ]
}

Gdzie czas reprezentuje godzinę rozpoczęcia granicy godziny, dla której są zgłaszane statystyki. Metryka nieobsługiwana przez dostawcę sieci dostarczania zawartości zamiast wartości podwójnej lub całkowitej powoduje wartość null. Ta wartość null wskazuje brak metryki i różni się od wartości 0. Jeden zestaw tych metryk na domenę jest skonfigurowany w punkcie końcowym.

Przykładowe właściwości:

{
     "DomainName": "azurecdntest.azureedge.net",
     "RequestCountTotal": 480,
     "RequestCountHttpStatus2xx": 480,
     "RequestCountHttpStatus3xx": 0,
     "RequestCountHttpStatus4xx": 0,
     "RequestCountHttpStatus5xx": 0,
     "RequestCountHttpStatusOthers": 0,
     "RequestCountHttpStatus200": 480,
     "RequestCountHttpStatus206": 0,
     "RequestCountHttpStatus302": 0,
     "RequestCountHttpStatus304": 0,
     "RequestCountHttpStatus404": 0,
     "RequestCountCacheHit": null,
     "RequestCountCacheMiss": null,
     "RequestCountCacheNoCache": null,
     "RequestCountCacheUncacheable": null,
     "RequestCountCacheOthers": null,
     "EgressTotal": 0.09,
     "EgressHttpStatus2xx": null,
     "EgressHttpStatus3xx": null,
     "EgressHttpStatus4xx": null,
     "EgressHttpStatus5xx": null,
     "EgressHttpStatusOthers": null,
     "EgressCacheHit": null,
     "EgressCacheMiss": null,
     "EgressCacheNoCache": null,
     "EgressCacheUncacheable": null,
     "EgressCacheOthers": null
}

Więcej zasobów