Monitoring Serwerów - Forum o monitoringu infrastruktury IT
Integracja z Azure, monitoring chmury
#1
Cześć,

Czy Energy Logserver może zintegrować się z chmurą Azure? Jak to działa i co mogę wyciągnąć?
Reply
#2
Cześć,

Jak najbardziej możemy się integrować z rozwiązaniami MS Azure / o365, dzięki czemu prezentować dane tam zgromadzone na wizualizacjach i raportach.


Zakres Integracji
Zakres integracji obejmuje

  1. Zdarzenia związane z aktywnością użytkowników:
    a. Kategoria zdarzeń,b. Status logowania,c. Aplikacja kliencka,d. Lokalizacja,e. Typ aktywności,f. Problemy z logowaniem i ich powód.
  2. Metryki dotyczące komponentów infrastruktury Azure pozyskiwane z:
    a. Azure Monitor Metrics (lub Metrics) to usługa platformy, która zapewnia jedno źródło do monitorowania zasobów platformy Azure.b. Application Insights to rozszerzalna usługa zarządzania wydajnością aplikacji (APM) dla deweloperów sieci Web na wielu platformach i może być używana do monitorowania aplikacji sieci Web na żywo - automatycznie wykrywa anomalie wydajności.
Komponenty systemu
Logstash
Logstash to kolektor zdarzeń oraz egzekutor zapytań, które po odebraniu zostają wstępnie przetwarzane i przesłane do buforu zdarzeń.

Kafka
Komponent umożliwiający buforowanie zdarzeń zanim zostaną one zapisane na serwerach Energy Logserver Data. Kafka ma również zadanie przechowania danych w czasie niedostępności nodów Energy Logserver Data.

Energy Logserver Data
Zwany inaczej klastrem Energy Logserver, który odpowiada za przechowywanie oraz udostępnianie danych.

Energy Logserver GUI
Energy Logserver GUI jest graficznym narzędziem do wyszukiwanie, analizy, wizualizacji danych. Posiada moduł alertowy, który może monitorować zebrane metryki i wykonywać akcję w przypadku naruszenia dopuszczonych progów.

Źródła danych
Energy Logserver Azure może uzyskać dostęp do metryk z powyższych usług za pomocą interfejsu API. Dostęp do usługo może zostać skonfigurowany przy użyciu tych samych poświadczeń, jeśli konto zostało skonfigurowane przy użyciu Azure AD.

Instrukcje konfiguracji:
https://docs.microsoft.com/en-us/azure/a...pal-portal
https://dev.loganalytics.io/documentatio.../AAD-Setup
https://dev.applicationinsights.io/quickstart/

Konfiguracja Energy Logserver Azure
W przypadku wykorzystania źródła danych Azure Monitor, wymagane są następujące informacje z portalu Azure:
  • Tenant Id (Azure Active Directory -> Properties -> Directory ID)
  • Client Id (Azure Active Directory -> App Registrations -> Choose your app -> Application ID)
  • Client Secret (Azure Active Directory -> App Registrations -> Choose your app -> Keys)
  • Default Subscription Id (Subscriptions -> Choose subscription -> Overview -> Subscription ID)
Konfiguraja Azure Insights
W przypadku wykorzystania źródła danych Azure Insights, wymagane są następujące informacje z portalu Azure:
  • Application ID
  • API Key
Konfiguracja Azure Eventhub
Konfiguraja Eventhub do pozyskiwania zdarzeń: https://docs.microsoft.com/en-us/azure/a...-event-hub

Wymagane dane do konfiguracji konektora Logstash:
Event Hub connection string – ścieżka do pobrania: AZURE PORTAL-> EVENT HUB -> SHARED ACCESS POLICES
Evnet Hub storage_connection – ścieżka do pobrania: AZURE PORTAL-> BLOB STORAGE ACCOUNT -> ACCESS KEYS
EntityPath – nazwa Event Hub

Azure Command-Line Interface
W celu weryfikacji konfiguracji oraz połączenia Energy Logserver Azure z chmurą Azure zaleca się skorzystanie z interfejsu wiersza poleceń Azure:

https://docs.microsoft.com/en-us/cli/azu...cli-latest

Jest to zestaw poleceń służących do tworzenia zasobów platformy Azure i zarządzania nimi. Interfejs wiersza polecenia platformy Azure jest dostępny w usługach platformy Azure i został zaprojektowany, aby umożliwić szybką pracę z platformą Azure, z naciskiem na automatyzację.

Wywołanie przykładowego polecenia:
  • Logownaia do platformy azure za pomocą azure-cli:
az login --service-principal -u $(client_id) -p $(client_secret) --tenant $(tenant_id)

Uprawnienia
W zakresie dostępu do metryk wymagane są następujące uprawniania:
  • Logowanie,
  • Pobieranie listy zasobów wraz z ID (az resource list),
  • Pobieranie listy metryk dla danego zasobu (az monitor metrics list-definitions),
  • Listowanie wartości metryk dla danego zasobu i metryki (az monitor metrics list).
Wybór serwisu
Wybór serwisu, który ma zostać uruchomiony dokonuje się poprzez uruchomienie właściwego pipeline w kolektorzy Logstash:
  • Azure Metres
  • Azure Application Insights
Zapytania kolektora zostaną wówczas właściwie dostosowane do wybranej usługi.

Metryki Azure Monitor
Przykładowe metryki.
  • Microsoft.Compute/virtualMachines - Percentage CPU
  • Microsoft.Network/networkInterfaces - Bytes sent
  • Microsoft.Storage/storageAccounts - Used Capacity
Kolektor Logstash pobiera metryki za pomocą następujących poleceń:
  • pobranie listy zasobów dla danego konta:
    /usr/bin/az resource list
  • pobranie listy metryk charakterystycznych dla danego zasobu:
    /usr/bin/az monitor metrics list-definitions --resource $(resource_id)
  • dla danego zasobu pobranie wartości metryki w interwale 1 minutowym
    /usr/bin/az monitor metrics list --resource "$(resource_id)" --metric "$(metric_name)"
Spis metryk Azure Monitor:

https://docs.microsoft.com/en-us/azure/a...-supported

Pobrane w powyższy sposób dane poddawane są dekodowaniu przez filter logstash:
Code:
filter {
        ruby {
            code => "
              e = event.to_hash
              data = e['value'][0]['timeseries'][0]['data']
                for d in Array(data) do
                  new_event = LogStash::Event.new()
                  new_event.set('@timestamp', e['@timestamp'])
                  new_event.set('data', d)
                  new_event.set('namespace', e['namespace'])
                  new_event.set('resourceregion', e['resourceregion'])
                  new_event.set('resourceGroup', e['value'][0]['resourceGroup'])
                  new_event.set('valueUnit', e['value'][0]['unit'])
                  new_event.set('valueType', e['value'][0]['type'])
                  new_event.set('id', e['value'][0]['id'])
                  new_event.set('errorCode', e['value'][0]['errorCode'])
                  new_event.set('displayDescription', e['value'][0]['displayDescription'])
                  new_event.set('localizedValue', e['value'][0]['name']['localizedValue'])
                  new_event.set('valueName', e['value'][0]['name']['@value'])
                  new_event_block.call(new_event)
                end
              event.cancel()
          "
        }
        if "_rubyexception" in [tags] {
                drop {}
        }
        date {
                match => [ "[data][timeStamp]", "yyyy-MM-dd'T'HH:mm:ssZZ" ]
        }
        mutate {
                convert => {
                        "[data][count]" => "integer"
                        "[data][minimum]" => "integer"
                        "[data][total]" => "integer"
                        "[data][maximum]" => "integer"
                        "[data][average]" => "integer"
                }
        }
}

Po zakończonym procesowaniu uzyskane dokumenty zostają zapisane do topic’u Kafka za pomocą Logstash output:
Code:
output {
        kafka {
                bootstrap_servers => "localhost:9092"
                client_id => "gk-eslapp01v"
                topic_id => "azurelogs"
                codec => json
        }
}

Metryki Azure Application Insights
Przykładowe metryki:
performanceCounters/exceptionsPerSecond
performanceCounters/memoryAvailableBytes
performanceCounters/processCpuPercentage
performanceCounters/processIOBytesPerSecond
performanceCounters/processPrivateBytes

Przykładowe zapytanie:
GET https://api.applicationinsights.io/v1/ap.../{metricId}

Lista Metryk:

https://docs.microsoft.com/en-us/rest/ap...etrics/get

Energy Logserver GUI
Metryki
Dane metryk zapisywane są w miesięcznych indeksach:
azure-metrics-%{YYYY.MM}

Indeks pattern w Kibanie to:
azure-metrics*

Dane w Discover dostępne są za pomocą zapisanego search’a:  „[Azure Metrics] Metrics Details”
[Image: 1.png]

Analiza zebranych metryk możliwa jest za pomocą dostarczonego dashboardu:
[Image: 2.png]

Na którym zostały umieszczone następujące widoki:
[Azure Metrics] Main Selector – selektor, który umożliwia wyszukanie po nazwie oraz wybranie do filtra grupy zasobów, metryki lub namespace.
[Azure Metrics] Main Average – pole liczbowe, które wylicza średnią wartość wybranej metryki;
[Azure Metrics] Main Median - pole liczbowe, które wylicza medianę wybranej metryki;
[Azure Metrics] Average Line – wykres liniowy wartości wybranej metryki w czasie;
[Azure Metrics] Top Resource Group – wykres słupkowy poziomy, grup zasobów z największą ilością metryk
[Azure Metrics] Top Metrics - wykres słupkowy poziomy, metryki z największą ilością danych
[Azure Metrics] Top Namespace - wykres słupkowy poziomy, namespace z największą ilością metryk
[Azure Metrics] Metrics Details – tabela zawierająca detale / dane surowe;

Dashboard z aktywnym filtrem:
[Image: 3.png]

Zdarzenia
Dane metryk zapisywane są w miesięcznych indeksach:
azure_events-%{YYYY.MM}


Indeks pattern w Kibanie to:
azure_events*

[Image: 4.png]

Przykładowe pola dekodowane w zdarzeniu:
[Image: 5.png]

Analiza zebranych metryk możliwa jest za pomocą dostarczonego dashboardu:
[Image: 6.png]

Opis komponentów:
[AZURE]Event category – wykres kołowy, podział na kategorie zdarzenia,
[AZURE] Login Status – wykres kołowy, podział statusów logowań,
[AZURE] User localtion – mapa, lokalizacja logujących się użytkowników,
[AZURE] Client App Type – wykres kołowy, podział na typ aplikacji klienckiej,
[AZURE] Client APP – wykres słupkowy, najczęściej wykorzystywana aplikacja kliencka,
[AZURE] Top activity type – wykres kołowy, podział na typ aktywności użytkownika,
[AZURE] Client Top App – tabela, najczęściej wykorzystywana aplikacja kliencka,
[AZURE] Failed login reason – save search, problemy z dostępem użytkowników, surowe dane.
Reply


Forum Jump:

User Panel Messages