Skip to content

Latest commit

 

History

History
213 lines (157 loc) · 8.25 KB

File metadata and controls

213 lines (157 loc) · 8.25 KB

Azure Log Analytics and Azure Graph Lab

1. Przygotowanie środowiska

SUB_01="616bb79e-73be-40ca-bea5-219c413d4771"
SUB_02="748173f1-20c4-4e68-ac58-641f67a83501"
DIAGNOSTIC_RG="lab-diagnostic-rg"
LOGSTEST01_RG="lab-logstest01-rg"
LOGSTEST02_RG="lab-logstest02-rg"
LOCATION="westeurope"

az group create --name $DIAGNOSTIC_RG --location $LOCATION --subscription $SUB_02
az group create --name $LOGSTEST01_RG --location $LOCATION --subscription $SUB_01
az group create --name $LOGSTEST02_RG --location $LOCATION --subscription $SUB_02

az monitor log-analytics workspace create --resource-group $DIAGNOSTIC_RG --workspace-name "lab-diagnosticlogs-la" --location $LOCATION --subscription $SUB_02

2. Wysyłanie logów z Activity log do Log Analytics

Dokumentacja:

Instrukcja

2.1 Przechodzimy do Activity log -> Export Activity Logs

Screen

2.2 Wybieramy subskrypcję i przechodzimy do Add diagnostic setting

Screen

2.3 Zaznaczamy logi administracyjne oraz Log Analytics workspace i zapisujemy ustawienia

Screen

2.4 Powyższe kroki powtarzamy dla każdej subskrypcji

3. Wygenerowanie przykładowych logów

# Utworzenie publicznych IP
az network public-ip create \
    --resource-group $LOGSTEST01_RG \
    --subscription $SUB_01 \
    --name sub01-pip \
    --version IPv4 \
    --sku Basic \
    --allocation-method Static

az network public-ip create \
    --resource-group $LOGSTEST02_RG \
    --subscription $SUB_02 \
    --name sub02-pip \
    --version IPv4 \
    --sku Basic \
    --allocation-method Dynamic

# Wygenerowanie zmian na IP
az network public-ip update \
    --resource-group $LOGSTEST02_RG \
    --subscription $SUB_02 \
    --name sub02-pip \
    --allocation-method Static

az network public-ip update \
    --resource-group $LOGSTEST02_RG \
    --subscription $SUB_02 \
    --name sub02-pip \
    --allocation-method Dynamic

4. Wykorzystanie Resource Graph

Dokumentacja:

Instrukcja

4.1 Przechodzimy do usługi Resource Graph Explorer

Screen

4.2 Sprawdzamy czy ustawiony jest poprawny scope

Wybor Scope jako Directory pozwoli odpytywać o zasoby ze wszystkich dostępnych subskrypcji

Screen

4.3 Przykładowe zapytania o zasoby

  • Lista zasobów Public IP address, które mają dostępny adres publiczny:
    Resources
    | where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress)
    | project name,id= split(properties.ipConfiguration.id,"providers",1),ip_address=properties.ipAddress
    Screen
  • Lista ostatnich 10 zmian adresów IP na zasobie Public IP address:
    resourcechanges
    | where properties.targetResourceId contains 'publicIPAddresses'
    | where isnotempty(properties.changes["properties.ipAddress"].newValue) or isnotempty(properties.changes["properties.ipAddress"].previousValue)
    | extend changeTime=todatetime(properties.changeAttributes.timestamp) 
    | order by changeTime desc 
    | project properties.changeAttributes.timestamp, properties.changeAttributes.correlationId, properties.changeType, 
    properties.changes["properties.ipAddress"].newValue, 
    properties.changes["properties.ipAddress"].previousValue, 
    properties.targetResourceId, properties.targetResourceType, properties.changes 
    | limit 10
    Screen

5. Wykorzystanie Log Analytics

Resource Graph nie posiada informacji o autorze zmian, informacje te natomiast można pobrać z Activity log, które exportujemy do Log Analytics w celu łatwiejszego odpytywania.

5.1 Przechodzimy do zasobu lab-diagnosticlogs-la i w sekcji General Wybieramy Logs

Screen

5.2 Przykładowe zapytanie

  • Lista ostanich zmian:
    AzureActivity
    | order by TimeGenerated desc 
    Screen

6. Połączenie danych za pomocą Azure Workbooks

6.1 Przechodzimy do usługi Monitor

Screen

6.2 Następnie Workbooks -> New i tworzymy nowy workbook

Screen

6.3 Zapytanie do Log Analytics

Dodajemy nowe zapytanie:

Screen

Wybieramy nasz Log Analytics, przedział czasowy i wklejamy poniższe zapytanie:

AzureActivity
| where ActivityStatusValue =~ "Success"
| order by TimeGenerated desc 
| distinct CorrelationId, Caller

Screen

Przechodzimy do zakładki Advanced Settings i uzupełniamy Step name:

Screen

6.4 Zapytanie do Resource Graph:

Dodajemy nowe zapytanie, tym razem jako Data source wybieramy Azure Resource Graph i ustawiamy nazwę zapytania w Advanced Settings -> Step name:

resourcechanges 
| where isnotempty(properties.changes["properties.ipAddress"].newValue) or isnotempty(properties.changes["properties.ipAddress"].previousValue)
| extend changeTime=todatetime(properties.changeAttributes.timestamp) 
| order by changeTime desc 
| project properties.changeAttributes.timestamp, properties.changeAttributes.correlationId, properties.changeType, 
newIP=properties.changes["properties.ipAddress"].newValue, 
oldIP=properties.changes["properties.ipAddress"].previousValue

Screen

6.5 Połączenie danych

Dodajemy nowe zapytanie, jako Data source wybieramy Merge, następnie wybieramy Add Merge:

Screen

Otrzymane dane: Screen

7. Usunięcie zasobów

az group delete --name $DIAGNOSTIC_RG --subscription $SUB_02 --yes --no-wait
az group delete --name $LOGSTEST01_RG --subscription $SUB_01 --yes --no-wait
az group delete --name $LOGSTEST02_RG --subscription $SUB_02 --yes --no-wait

Usunąć należy również plan skonfigurowany w pkt. 2.

Linki