Megosztás a következőn keresztül:


JSON-fájl gyűjtése virtuális gépről az Azure Monitorral

Számos alkalmazás és szolgáltatás szöveges fájlokba naplózza az információkat a szokásos naplózási szolgáltatások, például a Windows eseménynapló, vagy a Syslog helyett. Ha ezeket az adatokat JSON formátumban tárolják, azOkat az Azure Monitor összegyűjtheti egy egyéni JSON-naplók adatforrással rendelkező adatgyűjtési szabályban (DCR).

A DCR létrehozásának részleteit az Adatok gyűjtése az Azure Monitor-ügynökkel című témakörben találja. Ez a cikk további részleteket tartalmaz a JSON-naplók típusával kapcsolatban.

Megjegyzés:

Ha közvetlenül szeretné használni a DCR-definíciót, vagy más módszerekkel, például ARM-sablonokkal szeretne üzembe helyezni, tekintse meg az Adatgyűjtési szabály (DCR) mintáit az Azure Monitorban.

Előfeltételek

Az Adatok gyűjtése virtuálisgép-ügyfélről az Azure Monitorral című témakörben felsorolt előfeltételek mellett szükség van egy egyéni táblára egy Log Analytics-munkaterületen az adatok fogadásához. A táblázat követelményeiről további információt a Log Analytics-munkaterület táblázatában talál.

Egyéni JSON-fájl adatforrásának konfigurálása

Hozza létre a DCR-t a virtuálisgép-ügyfél adatainak összegyűjtése az Azure Monitorral című témakörben szereplő eljárással. A DCR Adatgyűjtés és kézbesítés lapján válassza az Egyéni JSON-naplók lehetőséget az Adatforrás típusa legördülő listában.

A JSON-fájlgyűjtemény konfigurációját bemutató képernyőkép.

Az egyéni JSON-naplók konfigurációjában elérhető beállításokat az alábbi táblázat ismerteti.

Beállítás Leírás
Fájlminta Azonosítja a naplófájlok helyét és nevét a helyi lemezen. Használjon helyettesítő karaktert a különböző fájlnevekhez, például ha minden nap új fájl jön létre új névvel. Több fájlmintát is megadhat vesszővel elválasztva. A fájlnévben és az első szintű mappanévben csak helyettesítő karaktereket (*) használhat.

Példák:
- C:\Logs\MyLog.txt
- C:\Logs\MyLog*.txt
-C:\Logs\IIS*\*.logs
- C:\App01\AppLog.txt, C:\App02\AppLog.txt
- /var/mylog.log
- /var/mylog*.log
- /var/logs/*/*
Tábla neve A Log Analytics-munkaterület céltáblájának neve.
Átalakítani Betöltés idejű átalakítás a rekordok szűréséhez vagy a céltáblába érkező adatok formázásához. Használja a source-t, hogy a bejövő adatokat változatlanul hagyja. Példa: Átalakítás .
JSON-séma A JSON-naplófájlból gyűjtendő és a céltáblába küldött tulajdonságok. Az egyetlen kötelező tulajdonság az TimeGenerated. Ha ezt az értéket nem a JSON-fájl adja meg, a betöltési idő lesz használva. A Log Analytics-munkaterület táblájában leírt, nem kötelező egyéb oszlopok is belefoglalhatók, és automatikusan fel vannak töltve. Bármely más tulajdonság ugyanazzal a névvel tölti fel a táblázat oszlopait. Győződjön meg arról, hogy a táblázatoszlopokkal egyező tulajdonságok ugyanazt az adattípust használják, mint a megfelelő oszlop.

A képen egy JSON-séma látható a JSON-fájlra vonatkozó mintafájlhoz, amely a JSON-fájlkövetelményekben és az ajánlott eljárásokban látható

Célhelyek hozzáadása

Az egyéni JSON-naplók csak a létrehozott egyéni táblában tárolt Log Analytics-munkaterületre küldhetők. Adjon hozzá egy Azure Monitor-naplók típusú célhelyet , és válasszon ki egy Log Analytics-munkaterületet. Egyéni JSON-napló adatforráshoz csak egyetlen munkaterületet adhat hozzá a DCR-hez. Ha több célhelyre van szüksége, hozzon létre több DCR-t. Ne feledje azonban, hogy ez ismétlődő adatokat küld mindegyiknek, és további költségeket eredményez.

Képernyőkép az Azure Monitor-naplók célhelyének konfigurációjáról egy adatgyűjtési szabályban.

JSON-fájlkövetelmények és ajánlott eljárások

Az Azure Monitor-ügynök által gyűjtött fájlnak meg kell felelnie a következő követelményeknek:

  • A fájlt az ügynökgép helyi meghajtóján kell tárolni a figyelt könyvtárban.
  • Minden bejegyzésnek JSON-sornak (más néven JSONL-nek vagy NDJSON-nak) kell lennie, amely egyetlen JSON-sor, és vonalvégzéssel van elválasztva. A beágyazás és a JSON-törzs formátuma nem támogatott. Lásd az alábbi mintát.
  • A fájlnak ASCII vagy UTF-8 kódolást kell használnia. Más formátumok, például az UTF-16 nem támogatottak.
  • Az új rekordokat hozzá kell fűzni a fájl végéhez, és nem szabad felülírni a régi rekordokat. A felülírás adatvesztést okoz.

Az alábbiakban egy tipikus JSON-naplófájl mintáját láthatjuk, amelyet az Azure Monitor gyűjthet össze. Ide tartoznak a következő mezők: Time, Code, Severity,Module és Message.

{"Time":"2025-03-07 13:17:34","Code":1423,"Severity":"Error","Module":"Sales","Message":"Unable to connect to pricing service."}
{"Time":"2025-03-07 13:18:23","Code":1420,"Severity":"Information","Module":"Sales","Message":"Pricing service connection established."}
{"Time":"2025-03-07 15:45:13","Code":2011,"Severity":"Warning","Module":"Procurement","Message":"Module failed and was restarted."}
{"Time":"2025-03-07 15:53:31","Code":4100,"Severity":"Information","Module":"Data","Message":"Daily backup complete."}

Tartsa be az alábbi ajánlásokat, hogy ne tapasztaljon adatvesztéssel vagy teljesítménnyel kapcsolatos problémákat:

  • Ne célozz meg több mint 10 könyvtárat naplófájlokkal. A túl sok könyvtár lekérdezése gyenge teljesítményhez vezet.
  • A naplófájlok folyamatos törlése a figyelt címtárban. Számos naplófájl nyomon követése felgyorsíthatja az ügynök processzor- és memóriahasználatát. Várjon legalább 2 napot, hogy elegendő időt hagyjon az összes napló feldolgozására.
  • Ne nevezze át a fájlvizsgálati mintának megfelelő fájlt egy másik névre, amely szintén megfelel a fájlvizsgálati mintának. Ez duplikált adatok betöltését okozza.
  • Ne nevezze át vagy másolja a fájlvizsgálati mintának megfelelő nagyméretű naplófájlokat a figyelt könyvtárba. Ha kell, ne lépje túl a percenkénti 50 MB-ot.

Log Analytics-munkaterület táblázata

Az ügynök figyeli a helyi lemezen lévő olyan json-fájlokat, amelyek megfelelnek a megadott névmintának. A rendszer minden bejegyzést összegyűjt, amikor a naplóba ír, majd elemzi őket, mielőtt elküldené őket a Log Analytics-munkaterület megadott táblájába. Az adatokat fogadó Log Analytics-munkaterület egyéni táblájának léteznie kell a DCR létrehozása előtt.

A táblázat azon oszlopai, amelyek megfelelnek az elemezett JSON-adatok egyik mezőjének nevének, a naplóbejegyzés értékével lesznek feltöltve. Az alábbi táblázat a munkaterület táblájának szükséges és nem kötelező oszlopait ismerteti a JSON-adatokban azonosított oszlopok mellett.

oszlop Típus Szükséges? Leírás
TimeGenerated datetime Igen Ez az oszlop a rekord létrehozásának idejét tartalmazza, és minden táblában kötelező. Ez az érték automatikusan fel lesz töltve a rekord Log Analytics-munkaterülethez való hozzáadásának időpontjával. Ezt az értéket felülbírálhatja egy átalakítás segítségével, hogy beállítsa a naplóbejegyzésből származó értéket TimeGenerated-ra.
Computer karakterlánc Nem Ha a tábla tartalmazza ezt az oszlopot, a rendszer feltölti annak a számítógépnek a nevével, amelyről a naplóbejegyzést gyűjtötték.
FilePath karakterlánc Nem Ha a tábla tartalmazza ezt az oszlopot, a rendszer feltölti annak a naplófájlnak az elérési útjával, amelyből a naplóbejegyzést gyűjtötték.

Az alábbi példa egy olyan lekérdezést mutat be, amely a minta JSON-fájlhoz létrehozott táblából adja vissza az adatokat. Az adatokat egy mintákat tartalmazó JSON-sémával rendelkező DCR használatával gyűjtötték össze. Mivel a JSON-adatok nem tartalmaznak tulajdonságot TimeGenerated, a betöltési időt használja a rendszer. A Computer és FilePath oszlopok is automatikusan kitöltésre kerülnek.

Képernyőkép az összegyűjtött JSON-napló eredményeinek visszaadó napló lekérdezéséről.

Egyéni tábla létrehozása

Ha a céltábla még nem létezik, akkor a DCR létrehozása előtt létre kell hoznia. A táblázatot csak az alábbi PowerShell-szkripttel hozhatja létre. Más módszer nem működik. A következő PowerShell-szkripttel például létrehozhat egy egyéni táblát, amely a minta JSON-fájlból fogadja az adatokat. Ez a példa az opcionális oszlopokat is hozzáadja.

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "dateTime"
                    }, 
                    {
                        "name": "Computer",
                        "type": "string"
                    },
                    {
                        "name": "FilePath",
                        "type": "string"
                    },
                    {
                        "name": "Time",
                        "type": "dateTime"
                    },
                    {
                        "name": "Code",
                        "type": "int"
                    },
                    {
                        "name": "Severity",
                        "type": "string"
                    },
                    {
                        "name": "Module",
                        "type": "string"
                    },
                    {
                        "name": "Message",
                        "type": "string"
                    }
              ]
        }
    }
}
'@

Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{WorkspaceName}/tables/{TableName}_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams

Transzformáció

Az átalakítás esetleg módosítja a bejövő adatfolyamot rekordok szűrésére vagy a séma céltáblának megfelelő módosítására. Ha a bejövő stream sémája megegyezik a céltáblával, akkor használhatja az alapértelmezett átalakítást source. Ha nem, módosítsa az transformKql ARM-sablon szakaszát egy KQL-lekérdezéssel, amely a szükséges sémát adja vissza.

A példában például a naplóbejegyzés egy Time olyan mezővel rendelkezik, amely a naplóbejegyzés létrehozásának időpontját tartalmazza. Ahelyett, hogy ezt külön oszlopként tárolná a céltáblában, a következő átalakítással leképezheti a Time tulajdonság értékét TimeGenerated-re.

source | extend TimeGenerated = todatetime(Time) | project-away Time

A JSON-adatforrás átalakítással való konfigurálásának képernyőképe.

Ez a következő napló lekérdezést eredményezné. Figyelje meg, hogy az Time oszlop üres, és ennek a tulajdonságnak az értékét használja a TimeGeneratedrendszer.

Képernyőkép a napló lekérdezéséről, amely az összegyűjtött JSON-naplók eredményeit adja vissza átalakítással.

Hibaelhárítás

Ha nem gyűjt adatokat a várt JSON-naplóból, kövesse az alábbi lépéseket.

  • Ellenőrizze, hogy az adatok a gyűjtött naplófájlba lesznek-e írva.
  • Ellenőrizze, hogy a naplófájl neve és helye megegyezik-e a megadott fájlmintával.
  • Ellenőrizze, hogy a DCR-ben lévő bejövő stream sémája megegyezik-e a naplófájlban lévő sémával.
  • Ellenőrizze, hogy a céltábla sémája megegyezik-e a bejövő streammel, vagy hogy van-e olyan átalakítás, amely a bejövő streamet a megfelelő sémává alakítja.
  • Tekintse meg a Művelet ellenőrzése című témakört annak ellenőrzéséhez, hogy az ügynök működik-e, és hogy az adatok érkeznek-e.

Következő lépések

  • További információ az Azure Monitor-ügynökről.
  • További információ az adatgyűjtési szabályokról.