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:
A Figyelés menüben válassza az Adatgyűjtési szabályok lehetőséget.
Új adatgyűjtési szabály és társítás létrehozásához válassza a Létrehozás lehetőséget.
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.
Az Erőforrások lapon:
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.
Válassza az Adatgyűjtési végpontok engedélyezése lehetőséget.
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.
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.
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.
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.
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.
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.
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.
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: