Analizowanie użycia w obszarze roboczym usługi Log Analytics
Koszty usługi Azure Monitor mogą się znacznie różnić w zależności od ilości danych zbieranych w obszarze roboczym usługi Log Analytics. Ten wolumin ma wpływ na zestaw rozwiązań korzystających z obszaru roboczego i ilość danych zbieranych przez każde rozwiązanie. Ten artykuł zawiera wskazówki dotyczące analizowania zebranych danych w celu ułatwienia kontrolowania kosztów pozyskiwania danych. Pomaga określić przyczynę wyższego niż oczekiwano użycia. Ułatwia również przewidywanie kosztów podczas monitorowania większej liczby zasobów i konfigurowania różnych funkcji usługi Azure Monitor.
Napiwek
Aby uzyskać strategie zmniejszenia kosztów usługi Azure Monitor, zobacz Optymalizacja kosztów i Usługa Azure Monitor.
Przyczyny wyższego niż oczekiwanego użycia
Każdy obszar roboczy usługi Log Analytics jest naliczany jako oddzielna usługa i współtworzy rachunek za subskrypcję platformy Azure. Ilość pozyskiwania danych może być znaczna, w zależności od:
- Zestaw szczegółowych informacji i usług jest włączony i ich konfiguracja.
- Liczba i typ monitorowanych zasobów.
- Ilość danych zebranych z każdego monitorowanego zasobu.
Nieoczekiwany wzrost dowolnego z tych czynników może spowodować zwiększenie opłat za przechowywanie danych. W pozostałej części tego artykułu przedstawiono metody wykrywania takiej sytuacji, a następnie analizowanie zebranych danych w celu zidentyfikowania i ograniczenia źródła zwiększonego użycia.
Wysyłanie alertu, gdy zbieranie danych jest wysokie
Aby uniknąć nieoczekiwanych rachunków, należy proaktywnie otrzymywać powiadomienia w dowolnym momencie, w którym występuje nadmierne użycie. Powiadomienie umożliwia rozwiązanie wszelkich potencjalnych anomalii przed końcem okresu rozliczeniowego.
Poniższy przykład to reguła alertu przeszukiwania dzienników, która wysyła alert, jeśli rozliczany wolumin danych pozyskany w ciągu ostatnich 24 godzin był większy niż 50 GB. Zmodyfikuj ustawienie Logika alertów, aby użyć innego progu na podstawie oczekiwanego użycia w danym środowisku. Możesz również zwiększyć częstotliwość sprawdzania użycia wiele razy dziennie, ale ta opcja spowoduje zwiększenie opłaty za regułę alertu.
Analiza użycia w usłudze Azure Monitor
Rozpocznij analizę przy użyciu istniejących narzędzi w usłudze Azure Monitor. Te narzędzia nie wymagają żadnej konfiguracji i często mogą udostępniać potrzebne informacje przy minimalnym nakładzie pracy. Jeśli potrzebujesz dokładniejszej analizy zebranych danych niż istniejące funkcje usługi Azure Monitor, użyj dowolnego z następujących zapytań dziennika w usłudze Log Analytics.
Obszar roboczy usługi Log Analytics — szczegółowe informacje
Szczegółowe informacje o obszarze roboczym usługi Log Analytics zapewniają szybką wiedzę na temat danych w obszarze roboczym. Można na przykład określić następujące elementy:
- Tabele danych, które są pozyskiwane najwięcej woluminów danych w tabeli głównej.
- Najważniejsze zasoby współtworzenia danych.
- Trend pozyskiwania danych.
Zobacz kartę Użycie , aby uzyskać podział pozyskiwania według rozwiązania i tabeli. Te informacje mogą pomóc w szybkim zidentyfikowaniu tabel, które współtworzyją większość woluminu danych. Karta pokazuje również trendy zbierania danych w czasie. Możesz określić, czy zbieranie danych stale rośnie wraz z upływem czasu lub nagle zwiększa się w odpowiedzi na zmianę konfiguracji.
Wybierz pozycję Dodatkowe zapytania dla wstępnie utworzonych zapytań , które ułatwiają dalsze zrozumienie wzorców danych.
Użycie i szacunkowe koszty
Wykres Pozyskiwanie danych na rozwiązanie na stronie Użycie i szacowane koszty dla każdego obszaru roboczego przedstawia łączną ilość wysyłanych danych i ilość wysyłanych przez każde rozwiązanie w ciągu ostatnich 31 dni. Te informacje pomagają określić trendy, takie jak to, czy jakikolwiek wzrost wynika z ogólnego użycia danych, czy użycia przez określone rozwiązanie.
Wykonywanie zapytań dotyczących woluminów danych z tabeli Użycie
Przeanalizuj ilość rozliczanych danych zebranych przez określoną usługę lub rozwiązanie. Te zapytania używają tabeli Użycie , która zbiera dane użycia dla każdej tabeli w obszarze roboczym.
Uwaga
Klauzula z parametrem TimeGenerated
polega tylko na upewnieniu się, że środowisko zapytań w witrynie Azure Portal wykracza poza domyślne 24 godziny. Jeśli używasz typu danych Użycie i EndTime
reprezentujesz przedziały czasu, StartTime
dla których są prezentowane wyniki.
Rozliczany wolumin danych według typu w ciągu ostatniego miesiąca
Usage
| where TimeGenerated > ago(32d)
| where StartTime >= startofday(ago(31d)) and EndTime < startofday(now())
| where IsBillable == true
| summarize BillableDataGB = sum(Quantity) / 1000. by bin(StartTime, 1d), DataType
| render columnchart
Rozliczany wolumin danych według rozwiązania i typ w ciągu ostatniego miesiąca
Usage
| where TimeGenerated > ago(32d)
| where StartTime >= startofday(ago(31d)) and EndTime < startofday(now())
| where IsBillable == true
| summarize BillableDataGB = sum(Quantity) / 1000 by Solution, DataType
| sort by Solution asc, DataType asc
Wykonywanie zapytań dotyczących woluminu danych bezpośrednio ze zdarzeń
Zapytania dzienników można używać w usłudze Log Analytics, jeśli potrzebujesz dokładniejszej analizy zebranych danych. Każda tabela w obszarze roboczym usługi Log Analytics ma następujące standardowe kolumny, które mogą pomóc w analizowaniu rozliczanych danych:
- _IsBillable identyfikuje rekordy, dla których jest naliczana opłata za pozyskiwanie. Użyj tej kolumny, aby odfiltrować dane niezwiązane z rozliczaniem.
- _BilledSize zapewnia rozmiar w bajtach rekordu.
Rozliczany wolumin danych dla określonych zdarzeń
Jeśli okaże się, że określony typ danych zbiera nadmierne ilości danych, możesz chcieć przeanalizować dane w tej tabeli, aby określić określone rekordy, które rosną. Ten przykład filtruje określone identyfikatory zdarzeń w Event
tabeli, a następnie udostępnia liczbę dla każdego identyfikatora. To zapytanie można zmodyfikować przy użyciu kolumn z innych tabel.
Event
| where TimeGenerated > startofday(ago(31d)) and TimeGenerated < startofday(now())
| where EventID == 5145 or EventID == 5156
| where _IsBillable == true
| summarize count(), Bytes=sum(_BilledSize) by EventID, bin(TimeGenerated, 1d)
Ilość danych według zasobu platformy Azure, grupy zasobów lub subskrypcji
Możesz przeanalizować ilość rozliczanych danych zebranych z określonego zasobu lub zestawu zasobów. Te zapytania używają kolumn _ResourceId i _SubscriptionId dla danych z zasobów hostowanych na platformie Azure.
Ostrzeżenie
Używaj zapytań wyszukiwania oszczędnie, ponieważ skanowania między typami danych intensywnie korzystają z zasobów do wykonania. Jeśli nie potrzebujesz wyników dla subskrypcji, grupy zasobów lub nazwy zasobu, użyj tabeli Użycie , jak w poprzednich zapytaniach.
Rozliczany wolumin danych według identyfikatora zasobu w ciągu ostatniego pełnego dnia
find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _ResourceId, _BilledSize, _IsBillable
| where _IsBillable == true
| summarize BillableDataBytes = sum(_BilledSize) by _ResourceId
| sort by BillableDataBytes nulls last
Rozliczany wolumin danych według grupy zasobów w ciągu ostatniego pełnego dnia
find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _ResourceId, _BilledSize, _IsBillable
| where _IsBillable == true
| summarize BillableDataBytes = sum(_BilledSize) by _ResourceId
| extend resourceGroup = tostring(split(_ResourceId, "/")[4] )
| summarize BillableDataBytes = sum(BillableDataBytes) by resourceGroup
| sort by BillableDataBytes nulls last
Pomocne może być przeanalizowanie _ResourceId
elementu :
| parse tolower(_ResourceId) with "/subscriptions/" subscriptionId "/resourcegroups/"
resourceGroup "/providers/" provider "/" resourceType "/" resourceName
Rozliczany wolumin danych według subskrypcji w ciągu ostatniego pełnego dnia
find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _BilledSize, _IsBillable, _SubscriptionId
| where _IsBillable == true
| summarize BillableDataBytes = sum(_BilledSize) by _SubscriptionId
| sort by BillableDataBytes nulls last
Napiwek
W przypadku obszarów roboczych z dużymi ilościami danych wykonywanie zapytań, takich jak te pokazane w tej sekcji, które wykonuje zapytania dotyczące dużych ilości danych pierwotnych, może być konieczne ograniczenie do jednego dnia. Aby śledzić trendy w czasie, rozważ skonfigurowanie raportu usługi Power BI i użycie odświeżania przyrostowego w celu zbierania woluminów danych na zasób raz dziennie.
Wolumin danych według komputera
Możesz przeanalizować ilość rozliczanych danych zebranych z maszyny wirtualnej lub zestawu maszyn wirtualnych. Tabela Użycie nie ma szczegółowości wyświetlania woluminów danych dla określonych maszyn wirtualnych, dlatego te zapytania używają operatora znajdowania do przeszukiwania wszystkich tabel zawierających nazwę komputera. Typ użycia jest pomijany, ponieważ to zapytanie służy tylko do analizy trendów danych.
Ostrzeżenie
Używaj zapytań wyszukiwania oszczędnie, ponieważ skanowania między typami danych intensywnie korzystają z zasobów do wykonania. Jeśli nie potrzebujesz wyników dla subskrypcji, grupy zasobów lub nazwy zasobu, użyj tabeli Użycie , jak w poprzednich zapytaniach.
Rozliczany wolumin danych według komputera w ciągu ostatniego pełnego dnia
find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _BilledSize, _IsBillable, Computer, Type
| where _IsBillable == true and Type != "Usage"
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| summarize BillableDataBytes = sum(_BilledSize) by computerName
| sort by BillableDataBytes desc nulls last
Liczba rozliczanych zdarzeń według komputera w ciągu ostatniego pełnego dnia
find where TimeGenerated between(startofday(ago(1d))..startofday(now())) project _IsBillable, Computer, Type
| where _IsBillable == true and Type != "Usage"
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| summarize eventCount = count() by computerName
| sort by eventCount desc nulls last
Wykonywanie zapytań dotyczących typowych typów danych
Jeśli okaże się, że masz nadmierne rozliczane dane dla określonego typu danych, może być konieczne wykonanie zapytania w celu przeanalizowania danych w tej tabeli. Następujące zapytania zawierają przykłady dla niektórych typowych typów danych:
Rozwiązanie zabezpieczające
SecurityEvent
| summarize AggregatedValue = count() by EventID
| order by AggregatedValue desc nulls last
Rozwiązanie do zarządzania dziennikami
Usage
| where Solution == "LogManagement" and iff(isnotnull(toint(IsBillable)), IsBillable == true, IsBillable == "true") == true
| summarize AggregatedValue = count() by DataType
| order by AggregatedValue desc nulls last
Typ danych Perf
Perf
| summarize AggregatedValue = count() by CounterPath
Perf
| summarize AggregatedValue = count() by CounterName
Typ danych Event
Event
| summarize AggregatedValue = count() by EventID
Event
| summarize AggregatedValue = count() by EventLog, EventLevelName
Typ danych Syslog
Syslog
| summarize AggregatedValue = count() by Facility, SeverityLevel
Syslog
| summarize AggregatedValue = count() by ProcessName
Typ danych AzureDiagnostics
AzureDiagnostics
| summarize AggregatedValue = count() by ResourceProvider, ResourceId
Dane usługi Application Insights
Istnieją dwa podejścia do badania ilości danych zebranych w usłudze Application Insights, w zależności od tego, czy masz aplikację klasyczną, czy opartą na obszarze roboczym. Użyj właściwości dostępnej _BilledSize
dla każdego pozyskanego zdarzenia zarówno dla zasobów klasycznych, jak i opartych na obszarze roboczym. Można również użyć zagregowanych informacji w tabeli systemEvents dla zasobów klasycznych.
Uwaga
Zapytania względem tabel usługi Application Insights, z wyjątkiem SystemEvents
, będą działać zarówno dla zasobu opartego na obszarze roboczym, jak i klasycznego zasobu usługi Application Insights. Zgodność z poprzednimi wersjami umożliwia dalsze używanie starszych nazw tabel. W przypadku zasobu opartego na obszarze roboczym otwórz menu Dzienniki w menu obszaru roboczego usługi Log Analytics. W przypadku zasobu klasycznego otwórz pozycję Dzienniki w menu usługi Application Insights .
Operacje zależności generują najwięcej danych w ciągu ostatnich 30 dni (opartych na obszarze roboczym lub klasycznym)
dependencies
| where timestamp >= startofday(ago(30d))
| summarize sum(_BilledSize) by operation_Name
| render barchart
Dzienny wolumin danych według typu dla tego zasobu usługi Application Insights w ciągu ostatnich 7 dni (tylko wersja klasyczna)
systemEvents
| where timestamp >= startofday(ago(7d)) and timestamp < startofday(now())
| where type == "Billing"
| extend BillingTelemetryType = tostring(dimensions["BillingTelemetryType"])
| extend BillingTelemetrySizeInBytes = todouble(measurements["BillingTelemetrySize"])
| summarize sum(BillingTelemetrySizeInBytes) by BillingTelemetryType, bin(timestamp, 1d)
Trendy dotyczące ilości danych dla zasobów opartych na obszarze roboczym
Aby przyjrzeć się trendom ilości danych dla zasobów usługi Application Insights opartych na obszarze roboczym, użyj zapytania zawierającego wszystkie tabele usługi Application Insights. Poniższe zapytania używają nazw tabel specyficznych dla zasobów opartych na obszarze roboczym.
Dzienny wolumin danych według typu dla wszystkich zasobów usługi Application Insights w obszarze roboczym przez 7 dni
union AppAvailabilityResults,
AppBrowserTimings,
AppDependencies,
AppExceptions,
AppEvents,
AppMetrics,
AppPageViews,
AppPerformanceCounters,
AppRequests,
AppSystemEvents,
AppTraces
| where TimeGenerated >= startofday(ago(7d)) and TimeGenerated < startofday(now())
| summarize sum(_BilledSize) by _ResourceId, bin(TimeGenerated, 1d)
Aby przyjrzeć się trendom woluminu danych tylko dla pojedynczego zasobu usługi Application Insights, dodaj następujący wiersz przed summarize
w poprzednim zapytaniu:
| where _ResourceId contains "<myAppInsightsResourceName>"
Napiwek
W przypadku obszarów roboczych z dużymi ilościami danych wykonywanie zapytań, takich jak poprzednie, które wykonuje zapytania dotyczące dużych ilości danych pierwotnych, może być konieczne ograniczenie do jednego dnia. Aby śledzić trendy w czasie, rozważ skonfigurowanie raportu usługi Power BI i użycie odświeżania przyrostowego w celu zbierania woluminów danych na zasób raz dziennie.
Informacje o węzłach wysyłających dane
Jeśli nie masz nadmiernych danych z żadnego konkretnego źródła, może istnieć nadmierna liczba agentów wysyłających dane.
Liczba węzłów agenta wysyłających puls każdego dnia w ostatnim miesiącu
Heartbeat
| where TimeGenerated > startofday(ago(31d))
| summarize nodes = dcount(Computer) by bin(TimeGenerated, 1d)
| render timechart
Ostrzeżenie
Używaj zapytań wyszukiwania oszczędnie, ponieważ skanowania między typami danych intensywnie korzystają z zasobów do wykonania. Jeśli nie potrzebujesz wyników dla subskrypcji, grupy zasobów lub nazwy zasobu, użyj tabeli Użycie , jak w poprzednich zapytaniach.
Liczba węzłów wysyłających dowolne dane w ciągu ostatnich 24 godzin
find where TimeGenerated > ago(24h) project Computer
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize nodes = dcount(computerName)
Wolumin danych wysyłany przez każdy węzeł w ciągu ostatnich 24 godzin
find where TimeGenerated > ago(24h) project _BilledSize, Computer
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize TotalVolumeBytes=sum(_BilledSize) by computerName
Węzły rozliczane według starszej warstwy cenowej Na węzeł
Starsze opłaty za warstwę cenową Na węzeł są naliczane za węzły z godzinowym stopniem szczegółowości. Nie zlicza również węzłów, które wysyłają tylko zestaw typów danych zabezpieczeń. Aby uzyskać listę komputerów, które będą rozliczane jako węzły, jeśli obszar roboczy znajduje się w starszej warstwie cenowej Na węzeł, poszukaj węzłów wysyłających rozliczane typy danych, ponieważ niektóre typy danych są bezpłatne. W tym przypadku użyj lewego pola w pełni kwalifikowanej nazwy domeny.
Następujące zapytania zwracają liczbę komputerów z rozliczanymi danymi na godzinę. Liczba jednostek na rachunku wynosi w jednostkach miesięcy węzła, które są reprezentowane przez billableNodeMonthsPerDay
zapytanie. Jeśli obszar roboczy ma zainstalowane rozwiązanie Update Management, dodaj typy danych Update i UpdateSummary do listy w klauzuli where
.
find where TimeGenerated >= startofday(ago(7d)) and TimeGenerated < startofday(now()) project Computer, _IsBillable, Type, TimeGenerated
| where Type !in ("SecurityAlert", "SecurityBaseline", "SecurityBaselineSummary", "SecurityDetection", "SecurityEvent", "WindowsFirewall", "MaliciousIPCommunication", "LinuxAuditLog", "SysmonEvent", "ProtectionStatus", "WindowsEvent")
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| where _IsBillable == true
| summarize billableNodesPerHour=dcount(computerName) by bin(TimeGenerated, 1h)
| summarize billableNodesPerDay = sum(billableNodesPerHour)/24., billableNodeMonthsPerDay = sum(billableNodesPerHour)/24./31. by day=bin(TimeGenerated, 1d)
| sort by day asc
Uwaga
Pewna złożoność rzeczywistego algorytmu rozliczeń, gdy używane jest rozwiązanie, nie jest reprezentowane w poprzednim zapytaniu.
Liczba węzłów zabezpieczeń i automatyzacji
Liczba unikatowych węzłów zabezpieczeń
union
(
Heartbeat
| where (Solutions has 'security' or Solutions has 'antimalware' or Solutions has 'securitycenter')
| project Computer
),
(
ProtectionStatus
| where Computer !in (Heartbeat | project Computer)
| project Computer
)
| distinct Computer
| project lowComputer = tolower(Computer)
| distinct lowComputer
| count
Liczba odrębnych węzłów automatyzacji
ConfigurationData
| where (ConfigDataType == "WindowsServices" or ConfigDataType == "Software" or ConfigDataType =="Daemons")
| extend lowComputer = tolower(Computer) | summarize by lowComputer
| join (
Heartbeat
| where SCAgentChannel == "Direct"
| extend lowComputer = tolower(Computer) | summarize by lowComputer, ComputerEnvironment
) on lowComputer
| summarize count() by ComputerEnvironment | sort by ComputerEnvironment asc
Dane opóźnione
Jeśli obserwujesz wysokie pozyskiwanie danych zgłoszone przy użyciu Usage
rekordów, ale nie obserwujesz tego samego wyniku sumowania _BilledSize
bezpośrednio na typie danych, możliwe jest, że masz opóźnione dane. Taka sytuacja występuje, gdy dane są pozyskiwane ze starymi znacznikami czasu.
Na przykład agent może mieć problem z łącznością i wysyłać skumulowane dane podczas ponownego nawiązywania połączenia. Albo host może mieć niepoprawny czas. Jeden z przykładów może spowodować pozorną rozbieżność między pozyskanymi danymi zgłoszonymi przez typ danych Użycie i zapytanie sumujące _BilledSize danych pierwotnych dla określonego dnia określonego przez TimeGenerated, znacznik czasu wygenerowania zdarzenia.
Aby zdiagnozować problemy z danymi z opóźnieniem, użyj kolumny _TimeReceived i kolumny TimeGenerated . Właściwość _TimeReceived
to czas odebrania rekordu przez punkt pozyskiwania usługi Azure Monitor w chmurze platformy Azure.
Poniższy przykład jest odpowiedzią na duże ilości pozyskanych danych w danych W3CIISLog w dniu 2 maja 2021 r., aby zidentyfikować znaczniki czasu na tych pozyskanych danych. Instrukcja where TimeGenerated > datetime(1970-01-01)
jest zawarta w celu udostępnienia wskazówek dla interfejsu użytkownika usługi Log Analytics w celu przyjrzenia się wszystkim danym.
W3CIISLog
| where TimeGenerated > datetime(1970-01-01)
| where _TimeReceived >= datetime(2021-05-02) and _TimeReceived < datetime(2021-05-03)
| where _IsBillable == true
| summarize BillableDataMB = sum(_BilledSize)/1.E6 by bin(TimeGenerated, 1d)
| sort by TimeGenerated asc
Następne kroki
- Zobacz Szczegóły cennika dzienników usługi Azure Monitor, aby uzyskać informacje na temat sposobu obliczania opłat za dane w obszarze roboczym usługi Log Analytics i różnych opcjach konfiguracji, aby zmniejszyć opłaty.
- Zobacz Koszty i użycie usługi Azure Monitor, aby zapoznać się z opisem różnych typów opłat za usługę Azure Monitor i sposobu ich analizowania na rachunku za korzystanie z platformy Azure.
- Zobacz Najlepsze rozwiązania dotyczące usługi Azure Monitor — Zarządzanie kosztami , aby uzyskać najlepsze rozwiązania dotyczące konfigurowania usługi Azure Monitor i zarządzania nią, aby zminimalizować opłaty.
- Zobacz Przekształcenia zbierania danych w usłudze Azure Monitor (wersja zapoznawcza), aby uzyskać informacje na temat używania przekształceń w celu zmniejszenia ilości danych zebranych w obszarze roboczym usługi Log Analytics przez filtrowanie niechcianych rekordów i kolumn.