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

Számos alkalmazás naplózza a szöveges vagy JSON-fájlokat a szokásos naplózási szolgáltatások, például a Windows eseménynaplója vagy a Syslog helyett. Ez a cikk bemutatja, hogyan gyűjthet naplóadatokat szövegből és JSON-fájlokból monitorozott gépeken az Azure Monitor Agent használatával egy adatgyűjtési szabály (DCR) létrehozásával.

Feljegyzés

A JSON-betöltés jelenleg előzetes verzióban érhető el.

Előfeltételek

Az eljárás elvégzéséhez a következőkre van szüksége:

  • Log Analytics-munkaterület, ahol legalább közreműködői jogosultságokkal rendelkezik.

  • Egy vagy két adatgyűjtési végpont attól függően, hogy a virtuális gép és a Log Analytics-munkaterület ugyanabban a régióban található-e.

    További információ: Adatgyűjtési végpontok beállítása az üzembe helyezés alapján.

  • Engedélyek adatgyűjtési szabályobjektumok létrehozásához a munkaterületen.

  • A JSON-szöveget egyetlen sorban kell tárolni a megfelelő betöltéshez. A JSON-törzs (fájl) formátuma nem támogatott.

  • Virtuális gép, virtuálisgép-méretezési csoport, Arc-kompatibilis kiszolgáló helyszíni vagy Azure Monitoring Agent egy windowsos helyszíni ügyfélen, amely naplókat ír egy szövegbe vagy JSON-fájlba.

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

    • Tárolja a fájlokat annak a gépnek a helyi meghajtóján, amelyen az Azure Monitor Agent fut, és a figyelt könyvtárban.
    • A rekord végét vonalvégzéssel kell elhatározni.
    • Használjon ASCII vagy UTF-8 kódolást. Más formátumok, például az UTF-16 nem támogatottak.
    • Minden nap hozzon létre egy új naplófájlt, hogy könnyen eltávolíthassa a régi fájlokat.
    • Törölje az összes naplófájlt a figyelt könyvtá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 írja felül a meglévő fájlokat új rekordokkal. Csak új rekordokat fűzhet a fájl végéhez. A felülírás adatvesztést fog okozni.
    • Ne nevezze át a fájlt új névre, majd nyisson meg egy új fájlt ugyanazzal a névvel. Ez adatvesztést okozhat.
    • Ne nevezze át vagy másolja a nagy méretű naplófájlokat, amelyek megfelelnek a fájlvizsgálati mintának a figyelt könyvtárba. Ha kell, ne lépje túl a percenkénti 50 MB-ot.
    • Ne nevezze át a fájlvizsgálati mintának megfelelő fájlt olyan új névre, amely szintén megfelel a fájlvizsgálati mintának. Ez duplikált adatok betöltését eredményezi.

Egyéni tábla létrehozása

A szkriptben létrehozott tábla két oszlopból áll:

  • TimeGenerated (datetime) [Kötelező]
  • RawData (sztring) [Nem kötelező, ha táblaséma van megadva]
  • "FilePath" (sztring) [Nem kötelező]
  • YourOptionalColumn (sztring) [Nem kötelező]

A szöveges fájlokból gyűjtött naplóadatok alapértelmezett táblázatséma a "TimeGenerated" és a "RawData". A "FilePath" hozzáadása bármelyik csapathoz nem kötelező. Ha tudja, hogy a végleges séma vagy a forrás egy JSON-napló, a tábla létrehozása előtt hozzáadhatja a szkript utolsó oszlopait. A Log Analytics tábla felhasználói felületén később bármikor hozzáadhat oszlopokat.

Az oszlopneveknek és A JSON-attribútumoknak pontosan meg kell egyeznie ahhoz, hogy automatikusan elemezni lehessen a táblát. Az oszlopok és a JSON-attribútumok egyaránt megkülönböztetik a kis- és nagybetűket. Például Rawdata nem gyűjti össze az eseményadatokat. Ennek kell lennie RawData. A betöltés elveti azokat a JSON-attribútumokat, amelyek nem rendelkeznek megfelelő oszlopmal.

A REST-hívás legegyszerűbb módja egy Azure Cloud PowerShell parancssorból (CLI). A rendszerhéj megnyitásához nyissa meg az Azure Portalt, nyomja le a Cloud Shell gombot, és válassza a PowerShellt. Ha először használja az Azure Cloud PowerShellt, végig kell járnia az egyszeri konfigurációs varázslón.

Másolja és illessze be ezt a szkriptet a PowerShellbe, hogy létrehozza a táblát a munkaterületen:

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
        {
                                "name": "TimeGenerated",
                                "type": "DateTime"
                        }, 
                       {
                                "name": "RawData",
                                "type": "String"
                       },
                       {
                                "name": "FilePath",
                                "type": "String"
                       },
                      {
                                "name": `"YourOptionalColumn",
                                "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

200 választ és részleteket kell kapnia az imént létrehozott tábláról.

Adatgyűjtési szabály létrehozása szöveghez vagy JSON-fájlhoz

Az adatgyűjtési szabály a következőket határozza meg:

  • Melyik forrásnapló-fájlokat vizsgálja az Azure Monitor Agent új események után.
  • Hogyan alakítja át az Azure Monitor az eseményeket a betöltés során.
  • A cél Log Analytics-munkaterület és -tábla, amelybe az Azure Monitor elküldi az adatokat.

Megadhat egy adatgyűjtési szabályt, amely adatokat küld több gépről több Log Analytics-munkaterületre, beleértve egy másik régióban vagy bérlőben lévő munkaterületeket is. Hozza létre az adatgyűjtési szabályt a Log Analytics-munkaterületével megegyező régióban .

Feljegyzés

Ahhoz, hogy adatokat küldjön a bérlők között, először engedélyeznie kell az Azure Lighthouse-t.

Ha a JSON-naplófájlt automatikusan egyéni táblába szeretné elemezni, kövesse a Resource Manager-sablon lépéseit. A szöveges adatok betöltési idő átalakítással oszlopokká alakíthatók.

Az adatgyűjtési szabály létrehozása az Azure Portalon:

  1. A Figyelés menüben válassza az Adatgyűjtési szabályok lehetőséget.

  2. Új adatgyűjtési szabály és társítás létrehozásához válassza a Létrehozás lehetőséget.

    Képernyőkép az Adatgyűjtési szabályok képernyő Létrehozás gombjáról.

  3. Adjon meg egy szabálynevet, és adjon meg egy előfizetést, erőforráscsoportot, régiót, platformtípust és adatgyűjtési végpontot:

    • A régió határozza meg, hogy a rendszer hol hozza létre a DCR-t. A virtuális gépek és társításaik a bérlő bármely előfizetésében vagy erőforráscsoportjában lehetnek.
    • A platform típusa határozza meg, hogy milyen típusú erőforrásokra vonatkozhat ez a szabály. Az Egyéni beállítás windowsos és linuxos típusok használatát is lehetővé teszi.
    • Az adatgyűjtési végpont azt az adatgyűjtési végpontot határozza meg, amelybe az Azure Monitor-ügynök összegyűjtött adatokat küld. Ennek az adatgyűjtési végpontnak ugyanabban a régióban kell lennie, mint a Log Analytics-munkaterületnek. További információ: Adatgyűjtési végpontok beállítása az üzembe helyezés alapján.

    Képernyőkép az Adatgyűjtési szabály képernyő Alapismeretek lapjára.

  4. Az Erőforrások lapon:

    1. Válassza az + Erőforrások hozzáadása lehetőséget, és társítsa az erőforrásokat az adatgyűjtési szabályhoz. Az erőforrások lehetnek virtuális gépek, virtuálisgép-méretezési csoportok és Azure Arc kiszolgálókhoz. Az Azure Portal telepíti az Azure Monitor Agentet olyan erőforrásokra, amelyek még nincsenek telepítve.

      Fontos

      A portál lehetővé teszi a rendszer által hozzárendelt felügyelt identitást a célerőforrásokon, valamint a meglévő felhasználó által hozzárendelt identitásokat, ha vannak ilyenek. Meglévő alkalmazások esetén, hacsak nem adja meg a felhasználó által hozzárendelt identitást a kérelemben, a gép alapértelmezés szerint a rendszer által hozzárendelt identitást használja.

    2. Válassza az Adatgyűjtési végpontok engedélyezése lehetőséget.

    3. Igény szerint kiválaszthat egy adatgyűjtési végpontot az adatgyűjtési szabályhoz társított összes virtuális géphez. Legtöbbször csak az alapértelmezett értékeket kell használnia.

      Ez az adatgyűjtési végpont konfigurációs fájlokat küld a virtuális gépnek, és ugyanabban a régióban kell lennie, mint a virtuális gépnek. További információ: Adatgyűjtési végpontok beállítása az üzembe helyezés alapján.

    Képernyőkép az Adatgyűjtési szabály képernyő Erőforrások lapján.

  5. Az Adatgyűjtés és kézbesítés lapon válassza az Adatforrás hozzáadása lehetőséget egy adatforrás hozzáadásához és egy célhely beállításához.

  6. Az Adatforrás típusa legördülő listában válassza az Egyéni szövegnaplók vagy JSON-naplók lehetőséget.

  7. Adja meg a következő információkat:

    • Fájlminta – Azonosítja, hogy a naplófájlok hol találhatók a helyi lemezen. Több fájlmintát is megadhat vesszővel elválasztva (Linuxon az AMA 1.26-os vagy újabb verziója szükséges a fájlminták vesszővel tagolt listájából való gyűjtéséhez).

      Példák érvényes bemenetekre:

      • 20220122-MyLog.txt
      • ProcessA_MyLog.txt
      • ErrorsOnly_MyLog.txt, WarningOnly_MyLog.txt

      Feljegyzés

      Gyakran több azonos típusú naplófájl is létezik ugyanabban a könyvtárban. Előfordulhat például, hogy egy gép minden nap létrehoz egy új fájlt, hogy megakadályozza a naplófájl túl nagy növekedését. Ebben a forgatókönyvben a naplóadatok gyűjtéséhez használhat fájl helyettesítő karaktert. Windows és /var/*.log Linux esetén használja a formátumotC:\directoryA\directoryB\*MyLog.txt. A címtár helyettesítő karakterei nem támogatottak.

    • Tábla neve – A Log Analytics-munkaterületen létrehozott céltábla neve. További információ: Egyéni tábla létrehozása.

    • Rekordelválasztó – A jövőben a jelenleg támogatott vonalvégzõn (/r/n) kívül más elválasztójelek is engedélyezve lesznek.

    • Átalakítás – Betöltési idő szerinti átalakítás hozzáadása vagy forrásként való kilépés, ha nem kell átalakítania az összegyűjtött adatokat.

  8. A Cél lapon adjon hozzá egy vagy több célhelyet az adatforráshoz. Több azonos vagy különböző típusú célhelyet is kijelölhet. Választhat például több Log Analytics-munkaterületet is, amelyet többhomingnak is neveznek.

    Képernyőkép az Adatgyűjtési szabály adatforrás hozzáadása képernyő céllapjáról az Azure Portalon.

  9. Válassza a Véleményezés + létrehozás lehetőséget az adatgyűjtési szabály részleteinek áttekintéséhez és a virtuális gépek készletével való társításhoz.

  10. Válassza a Létrehozás lehetőséget az adatgyűjtési szabály létrehozásához.

Feljegyzés

Az adatgyűjtési szabály létrehozása után akár 10 percet is igénybe vehet, amíg az adatok a célhelyekre kerülnek.

Mintanapló-lekérdezések

Az itt használt oszlopnevek például csak. A napló oszlopnevei valószínűleg eltérőek lesznek.

  • Az események számának megszámlálása kód szerint.

    MyApp_CL
    | summarize count() by code
    

Mintariasztási szabály

  • Hozzon létre egy riasztási szabályt minden hibaeseményhez.

    MyApp_CL
    | where status == "Error"
    | summarize AggregatedValue = count() by Computer, bin(TimeGenerated, 15m)
    

Hibaelhárítás

Az alábbi lépésekkel elháríthatja a naplók szövegből és JSON-fájlokból való gyűjtését.

Ellenőrizze, hogy betöltött-e adatokat az egyéni táblába

Először ellenőrizze, hogy vannak-e rekordok betöltése az egyéni naplótáblába az alábbi lekérdezés futtatásával a Log Analyticsben:

<YourCustomTable>_CL
| where TimeGenerated > ago(48h)
| order by TimeGenerated desc

Ha nem ad vissza rekordokat, ellenőrizze a többi szakasz lehetséges okait. Ez a lekérdezés az elmúlt két nap bejegyzéseit keresi, de módosíthatja egy másik időtartományt. 5–7 percet is igénybe vehet, amíg új adatok jelennek meg a táblában. Az Azure Monitor-ügynök csak a szövegbe vagy JSON-fájlba írt adatokat gyűjti, miután az adatgyűjtési szabályt a virtuális géphez társította.

Ellenőrizze, hogy létrehozott-e egyéni táblát

Az adatok elküldése előtt létre kell hoznia egy egyéni naplótáblát a Log Analytics-munkaterületen.

Ellenőrizze, hogy az ügynök sikeresen küld-e szívveréseket

Ellenőrizze, hogy az Azure Monitor-ügynök megfelelően kommunikál-e. Ehhez futtassa az alábbi lekérdezést a Log Analyticsben annak ellenőrzéséhez, hogy vannak-e rekordok a Szívverés táblában.

Heartbeat
| where TimeGenerated > ago(24h)
| where Computer has "<computer name>"
| project TimeGenerated, Category, Version
| order by TimeGenerated desc

Ellenőrizze, hogy a megfelelő naplóhelyet adta-e meg az adatgyűjtési szabályban

Az adatgyűjtési szabálynak az alábbihoz hasonló szakasza lesz. Az filePatterns elem megadja az ügynökszámítógépről begyűjtendő naplófájl elérési útját. Ellenőrizze az ügynök számítógépét, hogy ez helyes-e.

"dataSources": [{
            "configuration": {
                "filePatterns": ["C:\\JavaLogs\\*.log"],
                "format": "text",
                "settings": {
                    "text": {
                        "recordStartTimestampFormat": "yyyy-MM-ddTHH:mm:ssK"
                    }
                }
            },
            "id": "myTabularLogDataSource",
            "kind": "logFile",
            "streams": [{
                    "stream": "Custom-TabularData-ABC"
                }
            ],
            "sendToChannels": ["gigl-dce-00000000000000000000000000000000"]
        }
    ]

Ennek a fájlmintának meg kell felelnie az ügynökgép naplóinak.

Képernyőkép az ügynökgép szöveges naplófájljairól.

Az Azure Monitor-ügynök hibaelhárítójának használata

Az Azure Monitor-ügynök hibaelhárítójával megkeresheti a gyakori problémákat, és megoszthatja az eredményeket a Microsofttal.

Ellenőrizze, hogy a naplók feltöltése folyamatban van-e

Az ügynök csak az összegyűjtött naplófájlba írt új tartalmakat gyűjti össze. Ha egy szövegből vagy JSON-fájlból származó gyűjteménynaplókkal kísérletezik, a következő szkripttel hozhat létre mintanaplókat.

# This script writes a new log entry at the specified interval indefinitely.
# Usage:
# .\GenerateCustomLogs.ps1 [interval to sleep]
#
# Press Ctrl+C to terminate script.
#
# Example:
# .\ GenerateCustomLogs.ps1 5

param (
    [Parameter(Mandatory=$true)][int]$sleepSeconds
)

$logFolder = "c:\\JavaLogs"
if (!(Test-Path -Path $logFolder))
{
    mkdir $logFolder
}

$logFileName = "TestLog-$(Get-Date -format yyyyMMddhhmm).log"
do
{
    $count++
    $randomContent = New-Guid
    $logRecord = "$(Get-Date -format s)Z Record number $count with random content $randomContent"
    $logRecord | Out-File "$logFolder\\$logFileName" -Encoding utf8 -Append
    Start-Sleep $sleepSeconds
}
while ($true)

Következő lépések

További információk: