Adatgyűjtési átalakítások az Azure Monitorban

Az Azure Monitor átalakításaival szűrheti vagy módosíthatja a bejövő adatokat, mielőtt elküldené őket egy Log Analytics-munkaterületre. Ez a cikk alapvető leírást nyújt az átalakításokról és azok implementálásáról. Más tartalmakra mutató hivatkozásokat biztosít átalakítás létrehozásához.

Az átalakítások az Azure Monitorban, az adatbetöltési folyamatban lesznek végrehajtva, miután az adatforrás kézbesíti az adatokat, és mielőtt elküldené őket a célhelyre. Előfordulhat, hogy az adatforrás saját szűrést végez az adatok elküldése előtt, de az átalakításra támaszkodva további módosításokat hajt végre a célhelyre való küldés előtt.

Az átalakítások egy adatgyűjtési szabályban (DCR) vannak definiálva, és egy Kusto lekérdezésnyelv (KQL) utasítást használnak, amely egyenként van alkalmazva a bejövő adatok minden egyes bejegyzésére. Meg kell értenie a bejövő adatok formátumát, és létre kell hoznia a kimenetet a cél által várt struktúrában.

Az alábbi ábra a bejövő adatok átalakítási folyamatát mutatja be, és egy használható mintalekérdezéseket mutat be. Az átalakítás struktúrája az Azure Monitorban az átalakítási lekérdezések készítésének részleteiért.

A bejövő adatok betöltési idejének átalakítását bemutató diagram.

Miért érdemes átalakításokat használni?

Az alábbi táblázat az átalakításokkal elérhető különböző célokat ismerteti.

Kategória Részletek
Bizalmas adatok eltávolítása Előfordulhat, hogy van egy adatforrása, amely olyan adatokat küld, amelyeket nem szeretne bizalmassági vagy kényszeres okokból tárolni.

Bizalmas információk szűrése. Szűrje ki a bizalmas információkat tartalmazó teljes sorokat vagy oszlopokat.

Bizalmas információk elrejtése. Cserélje le az olyan információkat, mint például az IP-címben lévő számjegyek vagy telefonszámok egy gyakori karakterre.

Küldés másik táblába. Bizalmas rekordok küldése egy másik táblába, amely különböző szerepköralapú hozzáférés-vezérlési konfigurációval rendelkezik.
Adatok bővítése több vagy számított információval Átalakítással olyan adatokat adhat hozzá az adatokhoz, amelyek üzleti környezetet biztosítanak, vagy leegyszerűsítik az adatok későbbi lekérdezését.

Adjon hozzá egy további információt tartalmazó oszlopot. Hozzáadhat például egy oszlopot, amely meghatározza, hogy egy másik oszlop IP-címe belső vagy külső-e.

Adjon hozzá üzletspecifikus információkat. Hozzáadhat például egy olyan oszlopot, amely egy vállalati részleget jelez más oszlopok helyadatai alapján.
Adatköltségek csökkentése Mivel a Log Analytics-munkaterületre küldött adatok betöltési költségét számítjuk fel, érdemes kiszűrni azokat az adatokat, amelyekre nincs szükség a költségek csökkentése érdekében.

Távolítsa el a teljes sorokat. Előfordulhat például, hogy diagnosztikai beállítással gyűjti össze az erőforrásnaplókat egy adott erőforrásból, de nem igényli az általa létrehozott összes naplóbejegyzést. Hozzon létre egy olyan átalakítást, amely kiszűri egy adott feltételnek megfelelő rekordokat.

Távolítson el egy oszlopot az egyes sorokból. Az adatok tartalmazhatnak például redundáns vagy minimális értéket tartalmazó oszlopokat. Hozzon létre egy átalakítást, amely kiszűri a nem szükséges oszlopokat.

Fontos adatok elemzése egy oszlopból. Lehet, hogy van egy táblája, amelyben értékes adatok vannak eltemetve egy adott oszlopban. Átalakítással elemezhet értékes adatokat egy új oszlopban, és eltávolíthatja az eredetit.

Bizonyos sorok elküldése alapszintű naplókba. Az alapszintű lekérdezési képességeket igénylő sorok küldése az alapszintű naplótáblákba alacsonyabb betöltési költségért.
Adatok formázása célként Előfordulhat, hogy olyan adatforrással rendelkezik, amely olyan formátumban küld adatokat, amely nem felel meg a céltábla szerkezetének. Átalakítással átalakíthatja az adatokat a szükséges sémába.

Támogatott táblák

Az átalakításokkal használható táblák listájáért tekintse meg az Azure Monitor-naplókban az átalakításokat támogató táblákat. Használhatja az Azure Monitor-adathivatkozást is, amely felsorolja az egyes táblák attribútumait, beleértve azt is, hogy támogatja-e az átalakításokat. Ezen táblák mellett az egyéni táblák (_CL utótagja) is támogatottak.

  • Az Azure Monitor-naplókban az átalakításokat támogató táblákban felsorolt Azure-táblák. Használhatja az Azure Monitor-adathivatkozást is, amely felsorolja az egyes táblák attribútumait, beleértve azt is, hogy támogatja-e az átalakításokat.
  • Az Azure Monitor-ügynökhöz létrehozott egyéni táblák. (Az EGYÉNI MMA-tábla nem használhat átalakításokat)

Átalakítás létrehozása

Az adatgyűjtési módszertől függően több metódus is létrehozhat átalakításokat. Az alábbi táblázat útmutatást tartalmaz az átalakítások létrehozásának különböző módszereihez.

Adatgyűjtés Referencia
Naplóbetöltési API Adatok küldése az Azure Monitor-naplókba a REST API (Azure Portal) használatával
Adatok küldése az Azure Monitor-naplókba REST API használatával (Azure Resource Manager-sablonok)
Virtuális gép az Azure Monitor-ügynökkel Átalakítás hozzáadása az Azure Monitor-naplóhoz
Kubernetes-fürt Container Insights használatával Adatátalakítások a Container Insightsban
Azure-eseményközpontok Oktatóanyag: Események betöltése az Azure Event Hubsból az Azure Monitor-naplókba (nyilvános előzetes verzió)

Több célhely

Az átalakításokkal egyetlen DCR használatával több célhelyre is küldhet adatokat egy Log Analytics-munkaterületen. Minden célhelyhez KQL-lekérdezést kell megadnia, és az egyes lekérdezések eredményeit a rendszer elküldi a megfelelő helyre. Különböző adatkészleteket küldhet különböző táblákba, vagy több lekérdezés használatával különböző adatkészleteket küldhet ugyanarra a táblára.

Előfordulhat például, hogy eseményadatokat küld az Azure Monitorba a Logs Ingestion API használatával. Az események többségének olyan elemzési táblát kell küldenie, amely rendszeresen lekérdezhető, míg a naplózási eseményeket egy olyan egyéni táblába kell küldeni, amely alapszintű naplókhoz van konfigurálva a költségek csökkentése érdekében.

Több célhely használatához jelenleg manuálisan kell létrehoznia egy új DCR-t, vagy szerkesztenie kell egy meglévőt. A minták szakaszban példákat talál a több célhelyet használó DCR-ekre.

Fontos

A DCR tábláinak jelenleg ugyanabban a Log Analytics-munkaterületen kell lenniük. Ha több munkaterületre szeretne küldeni egyetlen adatforrásból, használjon több DCR-t, és konfigurálja az alkalmazást, hogy mindegyiknek küldje el az adatokat.

Diagram, amely az adatokat több táblába küldő átalakítást mutatja be.

Átalakítások monitorozása

Az átalakítások állapotát és teljesítményét monitorozási naplókkal és metrikákkal kapcsolatos részletekért tekintse meg az Azure Monitor DCR-adatgyűjtésének figyelése és hibaelhárítása című témakört. Ez magában foglalja a KQL-ben előforduló hibák és metrikák azonosítását a futási időtartam nyomon követéséhez.

Átalakítások költsége

Bár maguk az átalakítások nem járnak közvetlen költségekkel, a következő forgatókönyvek további díjakat eredményezhetnek:

  • Ha egy átalakítás növeli a bejövő adatok méretét, például számított oszlop hozzáadásával, a többletadatok szokásos betöltési sebességét kell fizetnie.
  • Ha egy átalakítás több mint 50%-kal csökkenti a betöltött adatokat, a szűrt adatok mennyisége 50% felett lesz felszámítva.

Az átalakításokból eredő adatfeldolgozási díj kiszámításához használja a következő képletet:
[A GB-t transzformációk szűrik] – ([A folyamat által betöltött GB-adatok] / 2). Az alábbi táblázat példákat mutat be.

Folyamat által betöltött adatok Átalakítással elvetett adatok Log Analytics-munkaterület által betöltött adatok Adatfeldolgozási díj Betöltési díj
20 GB 12 GB 8 GB 2 GB 1 8 GB
20 GB 8 GB 12 GB 0 GB 12 GB

1 Ez a díj nem tartalmazza a Log Analytics-munkaterület által betöltött adatok díját.

A díj elkerülése érdekében az átalakítások alkalmazása előtt alternatív módszerekkel kell szűrnie a betöltött adatokat. Ezzel csökkentheti az átalakítások által feldolgozott adatok mennyiségét, és ezáltal minimalizálhatja a további költségeket.

Tekintse meg az Azure Monitor díjszabását a naplóadatok Azure Monitorban való betöltésének és megőrzésének aktuális díjairól.

Fontos

Ha az Azure Sentinel engedélyezve van a Log Analytics-munkaterületen, nincs szűrési betöltési díj, függetlenül attól, hogy az átalakítási szűrők mennyi adatot szűrnek.

Minták

Az alábbi Resource Manager-sablonok különböző mintákkal rendelkező minta DCR-eket mutatnak. Ezeket a sablonokat kiindulási pontként használhatja a DCR-ek saját forgatókönyvekhez való átalakításokkal történő létrehozásához.

Egyetlen célhely

Az alábbi példa egy Azure Monitor-ügynökhöz készült DCR, amely adatokat küld a Syslog táblába. Ebben a példában az átalakítás szűri a rekordok error adatait az üzenetben.

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources" : [
        {
            "type": "Microsoft.Insights/dataCollectionRules", 
            "name": "singleDestinationDCR", 
            "apiVersion": "2021-09-01-preview", 
            "location": "eastus", 
            "properties": { 
              "dataSources": { 
                "syslog": [ 
                  { 
                    "name": "sysLogsDataSource", 
                    "streams": [ 
                      "Microsoft-Syslog" 
                    ], 
                    "facilityNames": [ 
                      "auth",
                      "authpriv",
                      "cron",
                      "daemon",
                      "mark",
                      "kern",
                      "mail",
                      "news",
                      "syslog",
                      "user",
                      "uucp"
                    ], 
                    "logLevels": [ 
                      "Debug", 
                      "Critical", 
                      "Emergency" 
                    ] 
                  } 
                ] 
              }, 
              "destinations": { 
                "logAnalytics": [ 
                  { 
                    "workspaceResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace", 
                    "name": "centralWorkspace" 
                  } 
                ] 
              }, 
              "dataFlows": [ 
                { 
                  "streams": [ 
                    "Microsoft-Syslog" 
                  ], 
                  "transformKql": "source | where message has 'error'", 
                  "destinations": [ 
                    "centralWorkspace" 
                  ] 
                } 
              ] 
            }
        }
    ]
} 

Több Azure-tábla

Az alábbi példa egy DCR a Logs Ingestion API-ból származó adatokhoz, amely adatokat küld mind a tábláknak, mind a SyslogSecurityEvent tábláknak. Ehhez a DCR-hez külön-külön dataFlow kell rendelkeznie, és mindegyikhez külön-külön transformKqlOutputStream kell rendelkeznie. Ebben a példában a rendszer minden bejövő adatot a táblába Syslog küld, míg a rosszindulatú adatokat a rendszer a SecurityEvent táblába is elküldi. Ha nem szeretné replikálni a kártékony adatokat mindkét táblában, hozzáadhat egy utasítást where az első lekérdezéshez a rekordok eltávolításához.

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources" : [
        { 
            "type": "Microsoft.Insights/dataCollectionRules", 
            "name": "multiDestinationDCR", 
            "location": "eastus", 
            "apiVersion": "2021-09-01-preview", 
            "properties": { 
                "dataCollectionEndpointId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers//Microsoft.Insights/dataCollectionEndpoints/my-dce",
                "streamDeclarations": { 
                    "Custom-MyTableRawData": { 
                        "columns": [ 
                            { 
                                "name": "Time", 
                                "type": "datetime" 
                            }, 
                            { 
                                "name": "Computer", 
                                "type": "string" 
                            }, 
                            { 
                                "name": "AdditionalContext", 
                                "type": "string" 
                            } 
                        ] 
                    } 
                }, 
                "destinations": { 
                    "logAnalytics": [ 
                        { 
                            "workspaceResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace", 
                            "name": "clv2ws1" 
                        }, 
                    ] 
                }, 
                "dataFlows": [ 
                    { 
                        "streams": [ 
                            "Custom-MyTableRawData" 
                        ], 
                        "destinations": [ 
                            "clv2ws1" 
                        ], 
                        "transformKql": "source | project TimeGenerated = Time, Computer, Message = AdditionalContext", 
                        "outputStream": "Microsoft-Syslog" 
                    }, 
                    { 
                        "streams": [ 
                            "Custom-MyTableRawData" 
                        ], 
                        "destinations": [ 
                            "clv2ws1" 
                        ], 
                        "transformKql": "source | where (AdditionalContext has 'malicious traffic!' | project TimeGenerated = Time, Computer, Subject = AdditionalContext", 
                        "outputStream": "Microsoft-SecurityEvent" 
                    } 
                ] 
            } 
        }
    ]
}

Az Azure és az egyéni táblák kombinációja

Az alábbi példa egy DCR a Logs Ingestion API-ból származó adatokhoz, amely adatokat küld a Syslog táblába és egy egyéni táblába is, más formátumban. Ehhez a DCR-hez külön-külön dataFlow kell rendelkeznie, és mindegyikhez külön-külön transformKqlOutputStream kell rendelkeznie. Egyéni táblák használatakor fontos meggyőződni arról, hogy a cél (az egyéni tábla) sémája tartalmazza azokat az egyéni oszlopokat (egyéni oszlopok hozzáadása vagy törlése), amelyek megfelelnek a küldendő rekordok sémájának. Ha például a rekord egy SyslogMessage nevű mezővel rendelkezik, de a cél egyéni táblában csak a TimeGenerated és a RawData szerepel, akkor az egyéni táblában csak a TimeGenerated mező lesz kitöltve, a RawData mező pedig üres lesz. A Rendszer elveti a SyslogMessage mezőt, mert a céltábla sémája nem tartalmaz SyslogMessage nevű sztringmezőt.

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources" : [
        { 
            "type": "Microsoft.Insights/dataCollectionRules", 
            "name": "multiDestinationDCR", 
            "location": "eastus", 
            "apiVersion": "2021-09-01-preview", 
            "properties": { 
                "dataCollectionEndpointId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers//Microsoft.Insights/dataCollectionEndpoints/my-dce",
                "streamDeclarations": { 
                    "Custom-MyTableRawData": { 
                        "columns": [ 
                            { 
                                "name": "Time", 
                                "type": "datetime" 
                            }, 
                            { 
                                "name": "Computer", 
                                "type": "string" 
                            }, 
                            { 
                                "name": "AdditionalContext", 
                                "type": "string" 
                            } 
                        ] 
                    } 
                }, 
                "destinations": { 
                    "logAnalytics": [ 
                        { 
                            "workspaceResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace", 
                            "name": "clv2ws1" 
                        }, 
                    ] 
                }, 
                "dataFlows": [ 
                    { 
                        "streams": [ 
                            "Custom-MyTableRawData" 
                        ], 
                        "destinations": [ 
                            "clv2ws1" 
                        ], 
                        "transformKql": "source | project TimeGenerated = Time, Computer, SyslogMessage = AdditionalContext", 
                        "outputStream": "Microsoft-Syslog" 
                    }, 
                    { 
                        "streams": [ 
                            "Custom-MyTableRawData" 
                        ], 
                        "destinations": [ 
                            "clv2ws1" 
                        ], 
                        "transformKql": "source | extend jsonContext = parse_json(AdditionalContext) | project TimeGenerated = Time, Computer, AdditionalContext = jsonContext, ExtendedColumn=tostring(jsonContext.CounterName)", 
                        "outputStream": "Custom-MyTable_CL" 
                    } 
                ] 
            } 
        }
    ]
}

Következő lépések