Mintavételezési felülbírálások – Azure Monitor-alkalmazás Elemzések Java-hoz

Feljegyzés

A mintavételezési felülbírálási funkció a GA-ban található, a 3.5.0-tól kezdve.

A mintavételezési felülbírálásokkal felülbírálhatja az alapértelmezett mintavételezési százalékot, például:

  • Állítsa a mintavételi százalékot 0-ra (vagy kisebb értékre) a zajos állapot-ellenőrzésekhez.
  • Állítsa a mintavételezési százalékot 0-ra (vagy kisebb értékre) zajos függőségi hívások esetén.
  • Állítsa be a mintavételezési százalékot 100-ra egy fontos kéréstípushoz (például) annak ellenére, /loginhogy az alapértelmezett mintavételezést alacsonyabbra konfigurálta.

Terminológia

Mielőtt megismerné a mintavételezési felülbírálásokat, ismernie kell a kifejezési tartományt. A span az alábbiak általános kifejezése:

  • Bejövő kérés.
  • Kimenő függőség (például egy másik szolgáltatás távoli hívása).
  • Folyamaton belüli függőség (például a szolgáltatás alösszetevői által végzett munka).

A mintavételezési felülbírálások esetében ezek a span-összetevők fontosak:

  • Attribútumok

A span attribútumok egy adott kérés vagy függőség szabványos és egyéni tulajdonságait is jelölik.

Első lépések

Először hozzon létre egy applicationinsights.json nevű konfigurációs fájlt. Mentse ugyanabban a könyvtárban, mint az applicationinsights-agent-*.jar. Használja az alábbi sablont.

{
  "connectionString": "...",
  "sampling": {
    "percentage": 10
    "overrides": [
      {
        "telemetryType": "request",
        "attributes": [
          ...
        ],
        "percentage": 0
      },
      {
        "telemetryType": "request",
        "attributes": [
          ...
        ],
        "percentage": 100
      }
    ]
  }
}

Hogyan működik?

telemetryType(telemetryKind az alkalmazás Elemzések 3.4.0) kell lennie az egyik request, dependency, trace (log) vagy exception.

A span indításakor a rendszer a span típusát és az abban az időpontban található attribútumokat használja annak ellenőrzésére, hogy a mintavételezési felülbírálások bármelyike megegyezik-e.

Az egyezések lehetnek vagy strictregexp. A reguláris kifejezésegyezések a teljes attribútumértéken lesznek végrehajtva, ezért ha egy tetszőleges helyen lévő abc értéket szeretne egyezni, akkor a függvényt kell használnia .*abc.*. A mintavételezési felülbírálás több attribútumfeltételt is megadhat, ebben az esetben mindegyiknek meg kell egyeznie ahhoz, hogy a mintavételi felülbírálás megfeleljen.

Ha az egyik mintavételezés felülbírálja az egyezést, akkor a mintavételi százalék alapján dönti el, hogy mintát szeretne-e venni a tartományból.

Csak az első egyezést tartalmazó mintavételezési felülbírálást használja a rendszer.

Ha nem egyeznek a mintavételezési felülbírálások:

Példa: Az állapot-ellenőrzések telemetriai adatainak gyűjtésének letiltása

Ez a példa letiltja a telemetriai adatok gyűjtését az összes kéréshez./health-checks

Ez a példa azt is letiltja, hogy összegyűjtse azokat az alsóbb rétegbeli tartományokat (függőségeket), amelyeket általában a /health-checks.

{
  "connectionString": "...",
  "sampling": {
    "overrides": [
      {
        "telemetryType": "request",
        "attributes": [
          {
            "key": "url.path",
            "value": "/health-check",
            "matchType": "strict"
          }
        ],
        "percentage": 0
      }
    ]
  }
}

Példa: Telemetria gyűjtésének letiltása zajos függőségi hívás esetén

Ez a példa letiltja a telemetriai adatok gyűjtését az összes GET my-noisy-key Redis-híváshoz.

{
  "connectionString": "...",
  "sampling": {
    "overrides": [
      {
        "telemetryType": "dependency",
        "attributes": [
          {
            "key": "db.system",
            "value": "redis",
            "matchType": "strict"
          },
          {
            "key": "db.statement",
            "value": "GET my-noisy-key",
            "matchType": "strict"
          }
        ],
        "percentage": 0
      }
    ]
  }
}

Példa: A telemetria 100%-ának összegyűjtése egy fontos kéréstípushoz

Ez a példa a telemetriai /loginadatok 100%-át gyűjti össze.

Mivel az alsóbb rétegbeli tartományok (függőségek) tiszteletben tartják a szülő mintavételezési döntését (az adott alsóbb rétegre vonatkozó mintavételezési felülbírálás nélkül), az összes "/bejelentkezési" kéréshez is gyűjtjük őket.

{
  "connectionString": "...",
  "sampling": {
    "percentage": 10
  },
  "sampling": {
    "overrides": [
      {
        "telemetryType": "request",
        "attributes": [
          {
            "key": "url.path",
            "value": "/login",
            "matchType": "strict"
          }
        ],
        "percentage": 100
      }
    ]
  }
}

Mintavételezéshez elérhető span attribútumok

A span attribútumnevek az OpenTelemetry szemantikai konvenciókon alapulnak. (HTTP, Üzenetkezelés, Adatbázis, RPC)

https://github.com/open-telemetry/semantic-conventions/blob/main/docs/README.md

Feljegyzés

Az alkalmazás Elemzések Java által rögzített attribútumok pontos készletének megtekintéséhez állítsa be az öndiagnosztikai szintet hibakeresésre, és keresse meg a hibakeresési üzeneteket az "exportálási időtartam" szöveggel kezdődően.

Feljegyzés

Mintavételezéshez csak a span elején beállított attribútumok érhetők el, így az OpenTelemetry Java-bővítményeken keresztül szűrhetők a később rögzített attribútumok, például http.response.status_code a kérések időtartama. Íme egy mintabővítmény, amely a kérelmek időtartama alapján szűr.

Hibaelhárítás

Ha használja regexp , és a mintavételezési felülbírálás nem működik, próbálkozzon a .* regex használatával. Ha a mintavételezés most már működik, az azt jelenti, hogy probléma merült fel az első regextel kapcsolatban, és olvassa el ezt a regex dokumentációt.

Ha ez nem működik .*, előfordulhat, hogy szintaxisproblémája van a application-insights.json file. Tekintse meg az alkalmazás Elemzések naplóit, és ellenőrizze, hogy figyelmeztető üzeneteket észlel-e.