Share via


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ékkel dev) léteznie kell a spanban.
  • A spannak rendelkeznie kell egy kulccsal test_requestrendelkező 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 boofooé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_cardtartalmazó 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=value2attribú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 regexpa .

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.svcoperationidhatá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}/updateeredmé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.