Mintavételezési felülbírálások – Azure Monitor Application Insights for Java
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,
/login
hogy 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 Application Insights 3.4.0-s verziójában) az egyiknekdependency
, a naplónak trace
vagy exception
a naplónak request
kell lennie.
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 strict
regexp
. 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:
- Ha ez a nyomkövetés első spanja, akkor a rendszer a legfelső szintű mintavételezési konfigurációt használja.
- Ha nem ez az első span a nyomkövetésben, akkor a rendszer a szülő mintavételezési döntését használja.
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 /login
adatok 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 Application Insights Java által az alkalmazáshoz 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 Application Insights naplóit, és nézze meg, hogy figyelmeztető üzeneteket észlel-e.