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


Naplók gyűjtése egy JSON-fájlból az Azure Monitor-ügynökkel

Az egyéni JSON-naplók az adatgyűjtési szabályban (DCR) használt adatforrások egyike. 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 szövegről és a JSON-naplók típusról.

Számos alkalmazás és szolgáltatás naplózza az adatokat egy JSON-fájlba a szokásos naplózási szolgáltatások, például a Windows eseménynapló vagy a Syslog helyett. Ezek az adatok összegyűjthetők az Azure Monitor-ügynökkel, és egy Log Analytics-munkaterületen tárolhatók más forrásokból gyűjtött adatokkal.

Előfeltételek

Alapművelet

Az alábbi ábra a naplóadatok json-fájlból történő gyűjtésének alapműveletét mutatja be.

  1. Az ügynök figyeli azokat a naplófájlokat, amelyek megfelelnek a helyi lemez megadott névmintájának.
  2. A napló minden bejegyzését összegyűjtjük és elküldjük az Azure Monitornak. A felhasználó által definiált bejövő stream a naplóadatok oszlopokba való elemzésére szolgál.
  3. A rendszer akkor használ alapértelmezett átalakítást, ha a bejövő stream sémája megegyezik a céltábla sémával.

Képernyőkép a napló lekérdezéséről, amely vesszővel tagolt fájlgyűjtemény eredményeit adja vissza.

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

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

  • A fájlt a számítógép helyi meghajtóján kell tárolni az Azure Monitor-ügynökkel a figyelt könyvtárban.
  • Minden rekordot sorvéggel kell elhatároltnak lennie.
  • 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 fog okozni.
  • A JSON-szövegnek egyetlen sorban kell lennie. A JSON-törzs formátuma nem támogatott. Lásd az alábbi mintát.

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

  • Minden nap hozzon létre egy új naplófájlt, hogy könnyen törölhesse a régi fájlokat.
  • 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 eredményezi.
  • 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.

Egyéni tábla

Mielőtt naplóadatokat gyűjthet egy JSON-fájlból, létre kell hoznia egy egyéni táblát a Log Analytics-munkaterületen az adatok fogadásához. A táblasémának meg kell egyeznie a bejövő adatfolyam oszlopaival, vagy hozzá kell adnia egy átalakítást, hogy a kimeneti séma megfeleljen a táblának.

Figyelmeztetés

Ne használjon a Log Analytics-ügynök által használt meglévő egyéni táblát. Az örökölt ügynökök nem tudnak majd írni a táblába, ha az első Azure Monitor-ügynök ír rá. Hozzon létre egy új táblát az Azure Monitor-ügynökhöz a Log Analytics-ügynök adatvesztésének megelőzésére.

Az alábbi PowerShell-szkripttel például létrehozhat egy több oszlopot tartalmazó egyéni táblázatot.

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "DateTime"
                    }, 
                    {
                        "name": "MyStringColumn",
                        "type": "string"
                    },
                    {
                        "name": "MyIntegerColumn",
                        "type": "int"
                    },
                    {
                        "name": "MyRealColumn",
                        "type": "real"
                    },
                    {
                        "name": "MyBooleanColumn",
                        "type": "bool"
                    },
                    {
                        "name": "FilePath",
                        "type": "string"
                    },
                    {
                        "name": "Computer",
                        "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

Adatgyűjtési szabály létrehozása JSON-fájlhoz

Feljegyzés

Az ügynökalapú egyéni JSON-fájlbetöltés jelenleg előzetes verzióban érhető el, és még nem rendelkezik teljes felhasználói felülettel a portálon. Bár a DCR-t a portál használatával is létrehozhatja, módosítania kell a bejövő stream oszlopainak meghatározásához. Ez a szakasz részletesen ismerteti a DCR ARM-sablonnal történő létrehozását.

Bejövő streamséma

Feljegyzés

Az ISO 8601 időbélyeget használó többsoros támogatás a tagolt eseményekhez 2024. október közepe várható

A JSON-fájlok minden értékhez tartalmaznak egy tulajdonságnevet, és a DCR bejövő adatfolyamának tartalmaznia kell egy, az egyes tulajdonságok nevével egyező oszlopot. Módosítania kell az columns ARM-sablon szakaszát a napló oszlopaival.

Az alábbi táblázat azokat az opcionális oszlopokat ismerteti, amelyeket a naplófájlban az adatokat meghatározó oszlopok mellett is felvehet.

Oszlop Típus Leírás
TimeGenerated dátum/idő A rekord létrehozásának időpontja. Ez az érték automatikusan fel lesz töltve azzal az időponttal, amikor a rekord bekerül a Log Analytics-munkaterületre, ha az nem szerepel a bejövő streamben.
FilePath húr Ha hozzáadja ezt az oszlopot a bejövő streamhez a DCR-ben, az a naplófájl elérési útjával lesz feltöltve. Ez az oszlop nem jön létre automatikusan, és nem vehető fel a portálon. Manuálisan kell módosítania a portál által létrehozott DCR-t, vagy létre kell hoznia a DCR-t egy másik módszerrel, ahol explicit módon definiálhatja a bejövő streamet.
Computer húr Ha hozzáadja ezt az oszlopot a bejövő streamhez a DCR-ben, az a naplófájlt tartalmazó számítógép nevével lesz feltöltve. Ez az oszlop nem jön létre automatikusan, és nem vehető fel a portálon. Manuálisan kell módosítania a portál által létrehozott DCR-t, vagy létre kell hoznia a DCR-t egy másik módszerrel, ahol explicit módon definiálhatja a bejövő streamet.

Átalakítás

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 a transformKql tee ARM-sablon szakaszát egy KQL-lekérdezéssel, amely a szükséges sémát adja vissza.

ARM-sablon

A következő ARM-sablonnal hozzon létre egy DCR-t a szöveges naplófájlok gyűjtéséhez, és hajtsa végre az előző szakaszokban leírt módosításokat. Az alábbi táblázat azokat a paramétereket ismerteti, amelyek értékeket igényelnek a sablon üzembe helyezésekor.

Beállítás Leírás
Adatgyűjtési szabály neve A DCR egyedi neve.
Adatgyűjtési végpont erőforrás-azonosítója Az adatgyűjtési végpont (DCE) erőforrás-azonosítója.
Hely A DCR régiója. A Log Analytics-munkaterület helyének meg kell egyeznie.
Fájlminták 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 (az AMA 1.26-os vagy újabb verziója szükséges több linuxos fájlmintához).

Példák:
- C:\Logs\MyLog.json
- C:\Logs\MyLog*.json
- C:\App01\AppLog.json, C:\App02\AppLog.json
- /var/mylog.json
- /var/mylog*.json
Tábla neve A Log Analytics-munkaterület céltáblájának neve.
Munkaterület erőforrás-azonosítója A Log Analytics-munkaterület erőforrás-azonosítója a céltáblával.

Fontos

Amikor ARM-sablonnal hozza létre a DCR-t, akkor is társítania kell a DCR-t a használni kívánt ügynökökkel. Az Azure Portalon szerkesztheti a DCR-t, és kiválaszthatja az ügynököket az Erőforrások hozzáadása című cikkben leírtak szerint

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "dataCollectionRuleName": {
            "type": "string",
            "metadata": {
                "description": "Unique name for the DCR. "
            }
        },
        "dataCollectionEndpointResourceId": {
            "type": "string",
            "metadata": {
              "description": "Resource ID of the data collection endpoint (DCE)."
            }
        },
        "location": {
            "type": "string",
            "metadata": {
                "description": "Region for the DCR. Must be the same location as the Log Analytics workspace. "
            }
        },
        "filePatterns": {
            "type": "string",
            "metadata": {
                "description": "Path on the local disk for the log file to collect. May include wildcards.Enter multiple file patterns separated by commas (AMA version 1.26 or higher required for multiple file patterns on Linux)."
            }
        },
        "tableName": {
            "type": "string",
            "metadata": {
                "description": "Name of destination table in your Log Analytics workspace. "
            }
        },
        "workspaceResourceId": {
            "type": "string",
            "metadata": {
                "description": "Resource ID of the Log Analytics workspace with the target table."
            }
        }
    },
    "variables": {
        "tableOutputStream": "[concat('Custom-', parameters('tableName'))]"
    },
    "resources": [
        {
            "type": "Microsoft.Insights/dataCollectionRules",
            "apiVersion": "2022-06-01",
            "name": "[parameters('dataCollectionRuleName')]",
            "location": "[parameters('location')]",
            "properties": {
                "dataCollectionEndpointId": "[parameters('dataCollectionEndpointResourceId')]",
                "streamDeclarations": {
                    "Custom-Json-stream": {
                        "columns": [
                            {
                                "name": "TimeGenerated",
                                "type": "datetime"
                            },
                            {
                                "name": "FilePath",
                                "type": "string"
                            },
                            {
                                "name": "MyStringColumn",
                                "type": "string"
                            },
                            {
                                "name": "MyIntegerColumn",
                                "type": "int"
                            },
                            {
                                "name": "MyRealColumn",
                                "type": "real"
                            },
                            {
                                "name": "MyBooleanColumn",
                                "type": "boolean"
                            }
                        ]
                    }
                },
                "dataSources": {
                    "logFiles": [
                        {
                            "streams": [
                                "Custom-Json-stream"
                            ],
                            "filePatterns": [
                                "[parameters('filePatterns')]"
                            ],
                            "format": "json",
                            "name": "Custom-Json-stream"
                        }
                    ]
                },
                "destinations": {
                    "logAnalytics": [
                        {
                            "workspaceResourceId": "[parameters('workspaceResourceId')]",
                            "name": "workspace"
                        }
                    ]
                },
                "dataFlows": [
                    {
                        "streams": [
                            "Custom-Json-stream"
                        ],
                        "destinations": [
                            "workspace"
                        ],
                        "transformKql": "source",
                        "outputStream": "[variables('tableOutputStream')]"
                    }
                ]
            }
        }
    ]
}

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ók: