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
Dokumentacja:
Instrukcja
# 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
Dokumentacja:
Instrukcja
Wybor Scope
jako Directory
pozwoli odpytywać o zasoby ze wszystkich dostępnych subskrypcji
- 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
- 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
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.
Dodajemy nowe zapytanie:
Wybieramy nasz Log Analytics
, przedział czasowy i wklejamy poniższe zapytanie:
AzureActivity
| where ActivityStatusValue =~ "Success"
| order by TimeGenerated desc
| distinct CorrelationId, Caller
Przechodzimy do zakładki Advanced Settings
i uzupełniamy Step name
:
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
Dodajemy nowe zapytanie, jako Data source
wybieramy Merge
, następnie wybieramy Add Merge
:
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.