Telemetriafeldolgozó példák – Azure Monitor-alkalmazás Elemzések Java-hoz
Ez a cikk példákat tartalmaz a Java alkalmazás Elemzések telemetriai processzoraira, beleértve a konfigurációk belefoglalására és kizárására szolgáló mintákat. Emellett attribútumfeldolgozókhoz és span processzorokhoz is tartalmaz mintákat.
Span-minták belefoglalása és kizárása
Ebben a szakaszban megtudhatja, hogyan foglalhatja bele és zárhatja ki a spanokat. Azt is megtudhatja, hogyan zárhat ki több hatókört, és hogyan alkalmazhat szelektív feldolgozást.
Spanok belefoglalása
Ez a szakasz bemutatja, hogyan foglalhatja bele az attribútumprocesszorok tartományait. A processzor nem dolgozza fel azokat a folyamatokat, amelyek nem felelnek meg a tulajdonságoknak.
Az egyezéshez a span névnek egyenlőnek spanA
vagy spanB
.
Ezek a tartományok megfelelnek a include
tulajdonságoknak, és a processzorműveletek a következők:
Span1
Név: "spanA" Attribútumok: {env: dev, test_request: 123, credit_card: 1234}Span2
Név: "spanB" Attribútumok: {env: dev, test_request: false}Span3
Név: "spanA" Attribútumok: {env: 1, test_request: dev, credit_card: 1234}
Ez a tartomány nem egyezik a include
tulajdonságokval, és a processzorműveletek nem lesznek alkalmazva:
Span4
Név: "spanC" Attribútumok: {env: dev, test_request: false}
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"include": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
]
},
"actions": [
{
"key": "credit_card",
"action": "delete"
}
]
}
]
}
}
Spans kizárása
Ez a szakasz bemutatja, hogyan zárható ki a spanok egy attribútumfeldolgozó esetében. Ez a processzor nem dolgozza fel a tulajdonságoknak megfelelő időtartamokat.
Az egyezéshez a span névnek egyenlőnek spanA
vagy spanB
.
A következő tartományok megfelelnek a exclude
tulajdonságoknak, és a processzorműveletek nincsenek alkalmazva:
Span1
Név: "spanA" Attribútumok: {env: dev, test_request: 123, credit_card: 1234}Span2
Név: "spanB" Attribútumok: {env: dev, test_request: false}Span3
Név: "spanA" Attribútumok: {env: 1, test_request: dev, credit_card: 1234}
Ez az időtartam nem egyezik a exclude
tulajdonságokval, és a processzorműveletek a következők:
Span4
Név: "spanC" Attribútumok: {env: dev, test_request: false}
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"exclude": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
]
},
"actions": [
{
"key": "credit_card",
"action": "delete"
}
]
}
]
}
}
Spanok kizárása több feltétel használatával
Ez a szakasz bemutatja, hogyan zárható ki a spanok egy attribútumfeldolgozó esetében. Ez a processzor nem dolgozza fel a tulajdonságoknak megfelelő időtartamokat.
Az egyezéshez a következő feltételek teljesülése szükséges:
- Egy attribútumnak (például
env
értékkeldev
) léteznie kell a spanban. - A spannak rendelkeznie kell egy kulccsal
test_request
rendelkező attribútummal.
Az alábbi időtartamok megfelelnek a exclude
tulajdonságoknak, és a processzorműveletek nincsenek alkalmazva.
Span1
Név: "spanB" Attribútumok: {env: dev, test_request: 123, credit_card: 1234}Span2
Név: "spanA" Attribútumok: {env: dev, test_request: false}
A következő időtartam nem egyezik meg a exclude
tulajdonságokkal, és a processzorműveleteket alkalmazza a rendszer:
Span3
Név: "spanB" Attribútumok: {env: 1, test_request: dev, credit_card: 1234}Span4
Név: "spanC" Attribútumok: {env: dev, dev_request: false}
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"exclude": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
],
"attributes": [
{
"key": "env",
"value": "dev"
},
{
"key": "test_request"
}
]
},
"actions": [
{
"key": "credit_card",
"action": "delete"
}
]
}
]
}
}
Szelektív feldolgozás
Ez a szakasz bemutatja, hogyan adhatja meg azokat a span tulajdonságokat, amelyek jelzik, hogy melyikre kell alkalmazni ezt a processzort. A include
tulajdonságok azt jelzik, hogy mely időtartamokat kell feldolgozni. A exclude
tulajdonságok kiszűrik azokat a tartományokat, amelyeket nem szabad feldolgozni.
A következő konfigurációban ezek a tartományok megfelelnek a tulajdonságoknak, és a processzorműveleteket alkalmazza a rendszer:
Span1
Név: "spanB" Attribútumok: {env: production, test_request: 123, credit_card: 1234, redact_trace: "false"}Span2
Név: "spanA" Attribútumok: {env: átmeneti, test_request: false, redact_trace: true}
Ezek a spanok nem felelnek meg a include
tulajdonságoknak, és a processzorműveletek nincsenek alkalmazva:
Span3
Név: "spanB" Attribútumok: {env: production, test_request: true, credit_card: 1234, redact_trace: false}Span4
Név: "spanC" Attribútumok: {env: dev, test_request: false}
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"include": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
]
},
"exclude": {
"matchType": "strict",
"attributes": [
{
"key": "redact_trace",
"value": "false"
}
]
},
"actions": [
{
"key": "credit_card",
"action": "delete"
},
{
"key": "duplicate_key",
"action": "delete"
}
]
}
]
}
}
Attribútumfeldolgozó-minták
Insert
Az alábbi minta az új attribútumot {"attribute1": "attributeValue1"}
olyan tartományokba és naplókba szúrja be, ahol a kulcs attribute1
nem létezik.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"value": "attributeValue1",
"action": "insert"
}
]
}
]
}
}
Beszúrás másik kulccsal
Az alábbi minta az attribútum anotherkey
értékével szúrja be az új attribútumot {"newKey": "<value from attribute anotherkey>"}
olyan spanokba és naplókba, ahol a kulcs newKey
nem létezik. Ha az attribútum anotherkey
nem létezik, a rendszer nem szúr be új attribútumot a spanokba és a naplókba.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "newKey",
"fromAttribute": "anotherKey",
"action": "insert"
}
]
}
]
}
}
Frissítés
Az alábbi minta frissíti az attribútumot a következőre {"db.secret": "redacted"}
: . Az attribútumot az attribútum boo
foo
értékének használatával frissíti. Az attribútummal boo
nem rendelkező spanok és naplók nem változnak.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "db.secret",
"value": "redacted",
"action": "update"
},
{
"key": "boo",
"fromAttribute": "foo",
"action": "update"
}
]
}
]
}
}
Törlés
Az alábbi minta bemutatja, hogyan törölhet egy kulcsot credit_card
tartalmazó attribútumot.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "credit_card",
"action": "delete"
}
]
}
]
}
}
Kivonat
Az alábbi minta bemutatja, hogyan kivonatolódjanak a meglévő attribútumértékek.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "user.email",
"action": "hash"
}
]
}
]
}
}
Kinyerés
Az alábbi minta bemutatja, hogyan hozhat létre új attribútumokat regex (regex) kifejezéssel egy másik attribútum értéke alapján.
Például a következő url.path = /path?queryParam1=value1,queryParam2=value2
attribútumok lesznek beszúrva:
- httpProtocol:
http
- httpDomain:
example.com
- httpPath:
path
- httpQueryParams:
queryParam1=value1,queryParam2=value2
- url.path: nincs változás
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "url.path",
"pattern": "^(?<httpProtocol>.*):\\/\\/(?<httpDomain>.*)\\/(?<httpPath>.*)(\\?|\\&)(?<httpQueryParams>.*)",
"action": "extract"
}
]
}
]
}
}
Maszk
A megadott url.path = https://example.com/user/12345622
beállítások például az alábbi konfigurációk valamelyikére frissülnek url.path = https://example.com/user/****
.
Első konfigurációs példa:
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "url.path",
"pattern": "user\\/\\d+",
"replace": "user\\/****",
"action": "mask"
}
]
}
]
}
}
Második konfigurációs példa normál kifejezéscsoport nevével:
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "url.path",
"pattern": "^(?<userGroupName>[a-zA-Z.:\/]+)\d+",
"replace": "${userGroupName}**",
"action": "mask"
}
]
}
]
}
}
Nem összevonásos típusú attribútumok mintái
A 3.4.19 GA-tól kezdődően a telemetriai processzorok támogatják a nem összevonásos típusú attribútumokat: boolean
, double
, long
, boolean-array
, double-array
, long-array
és string-array
.
Ha attributes.type
nincs megadva a json, az alapértelmezés szerint a következő lesz string
.
Az alábbi minta az új attribútumot {"newAttributeKeyStrict": "newAttributeValueStrict"}
olyan tartományokba és naplókba szúrja be, ahol az attribútumok megfelelnek az alábbi példáknak: {"longAttributeKey": 1234}
{"booleanAttributeKey": true}
{"doubleArrayAttributeKey": [1.0, 2.0, 3.0, 4.0]}
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"include": {
"matchType": "strict",
"attributes": [
{
"key": "longAttributeKey",
"value": 1234,
"type": "long"
},
{
"key": "booleanAttributeKey",
"value": true,
"type": "boolean"
},
{
"key": "doubleArrayAttributeKey",
"value": [1.0, 2.0, 3.0, 4.0],
"type": "double-array"
}
]
},
"actions": [
{
"key": "newAttributeKeyStrict",
"value": "newAttributeValueStrict",
"action": "insert"
}
],
"id": "attributes/insertNewAttributeKeyStrict"
}
]
}
}
Emellett a nem kötött típusú attribútumok is támogatják regexp
a .
Az alábbi minta az új attribútumot {"newAttributeKeyRegexp": "newAttributeValueRegexp"}
olyan tartományokba és naplókba szúrja be, ahol az attribútum longRegexpAttributeKey
megegyezik a kezdő 400
és a kezdő 499
értékével.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"include": {
"matchType": "regexp",
"attributes": [
{
"key": "longRegexpAttributeKey",
"value": "4[0-9][0-9]",
"type": "long"
}
]
},
"actions": [
{
"key": "newAttributeKeyRegexp",
"value": "newAttributeValueRegexp",
"action": "insert"
}
],
"id": "attributes/insertNewAttributeKeyRegexp"
}
]
}
}
Processzorminták átnyúlása
Span elnevezése
Az alábbi minta az attribútumok és az attribútumok értékeit db.svc
operation
id
határozza meg. A span új nevét az adott sorrendben az érték ::
által elválasztott attribútumok használatával alkotja.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "span",
"name": {
"fromAttributes": [
"db.svc",
"operation",
"id"
],
"separator": "::"
}
}
]
}
}
Attribútumok kinyerve egy span névből
Tegyük fel, hogy a bemeneti span neve ./api/v1/document/12345678/update
Az alábbi minta a kimeneti tartománynevet /api/v1/document/{documentId}/update
eredményezi. Hozzáadja az új attribútumot documentId=12345678
a spanhoz.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "span",
"name": {
"toAttributes": {
"rules": [
"^/api/v1/document/(?<documentId>.*)/update$"
]
}
}
}
]
}
}
Attribútumok kinyerve egy span névből a belefoglalás és kizárás használatával
Az alábbi minta bemutatja, hogyan módosíthatja a span nevet {operation_website}
. Hozzáad egy kulcsot operation_website
és értéket {oldSpanName}
tartalmazó attribútumot, ha a span a következő tulajdonságokkal rendelkezik:
- A span név a sztring bármely pontjára kiterjed
/
. - A span név nem
donot/change
.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "span",
"include": {
"matchType": "regexp",
"spanNames": [
"^(.*?)/(.*?)$"
]
},
"exclude": {
"matchType": "strict",
"spanNames": [
"donot/change"
]
},
"name": {
"toAttributes": {
"rules": [
"(?<operation_website>.*?)$"
]
}
}
}
]
}
}
Naplófeldolgozó minták
Attribútumok kinyerve egy naplóüzenet törzséből
Tegyük fel, hogy a bemeneti napló üzenettörzse .Starting PetClinicApplication on WorkLaptop with PID 27984 (C:\randompath\target\classes started by userx in C:\randompath)
Az alábbi minta a kimeneti üzenet törzsét Starting PetClinicApplication on WorkLaptop with PID {PIDVALUE} (C:\randompath\target\classes started by userx in C:\randompath)
eredményezi. Hozzáadja az új attribútumot PIDVALUE=27984
a naplóhoz.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "log",
"body": {
"toAttributes": {
"rules": [
"^Starting PetClinicApplication on WorkLaptop with PID (?<PIDVALUE>\\d+) .*"
]
}
}
}
]
}
}
Bizalmas adatok maszkolása a naplóüzenetben
Az alábbi minta bemutatja, hogyan maszkolhatja a bizalmas adatokat egy naplóüzenet törzsében a naplófeldolgozó és az attribútumfeldolgozó használatával.
Tegyük fel, hogy a bemeneti napló üzenettörzse .User account with userId 123456xx failed to login
A naplófeldolgozó frissíti a kimeneti üzenet törzsét, User account with userId {redactedUserId} failed to login
és az attribútumfeldolgozó törli az előző lépésben hozzáadott új attribútumot redactedUserId
.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "log",
"body": {
"toAttributes": {
"rules": [
"userId (?<redactedUserId>[0-9a-zA-Z]+)"
]
}
}
},
{
"type": "attribute",
"actions": [
{
"key": "redactedUserId",
"action": "delete"
}
]
}
]
}
}
Gyakori kérdések
Miért nem dolgozza fel a naplófeldolgozó a naplófájlokat a TelemetryClient.trackTrace() használatával?
A TelemetryClient.trackTrace() az alkalmazás Elemzések klasszikus SDK-híd része, és a naplóprocesszorok csak az új OpenTelemetry-alapú eszközkészlettel működnek.