Instrumentatie en/of telemetry, wat te meten?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 02:38

alienfruit

the alien you never expected

Topicstarter
Ik zit al een tijdje kijken naar Opentelemetry voor het gebruik de distributed tracing en de metrics. Nu werkt de distributed tracing redelijk in combinatie met Google Trace en Logging. Ik Grafana + Prometheus gebruiken voor het bijhouden van metrics. Alleen nu zit ik met de vraag wat voor dingen wil je een redelijk project nou eigenlijk bijhouden? Weet iemand goede voorbeelden van wat nuttige telemetry is?

Momenteel gebruik ik een library voor ASP Net Core Prometheus-Net (https://github.com/promet...core-http-request-metrics) en dit werkt goed.

Alleen wat heeft verder nog zin om bij te houden voor een typische webapplication met authenticatie/authorisatie etc?

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:20
Ik zou zeggen: veel hangt af van de context van je applicatie ? Of wil je een soort van generieke oplossing die je kan gebruiken voor meerdere web apps ?

Eens kijken naar wat Azure ApplicationInsights allemaal out of the box logt bij web applicaties is misschien een idee ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 02:38

alienfruit

the alien you never expected

Topicstarter
Ja, het is een soort van App Store voor een specifieke markt. Ik vraag mij af voor een SRE aspect wat voor dingen je eigenlijk zou willen bijhouden. Momenteel hou ik het volgende bij:

- responsetijd van requests
- aantal non 200 responses, (e.g. 500, 403 etc)
- totaal aan requests

Ik vraag mij af of het zin heeft om bij te houden hoeveel OAuth logins worden uitgevoerd, en hoe vaak dit fout gaat. IdentityServer heeft redelijke eventing om dit bij te houden. Maar heeft het zin om dit bij te houden via Prometheus als je ook de fouten logt?

ApplicationInsight heb ik helemaal niet aan gedacht ga er eens naar kijken. Er zijn geen standaard werken/bronnen die beschrijven wat handig is om te meten? :) Tot nu toe heb ik hier nooit mee te maken gehad :( Vraag mij af hoe dit inzichtelijk werd gemaakt bij mijn voormalige klanten als het niet ingebouwd werd,

Acties:
  • +1 Henk 'm!

  • kevintjeb
  • Registratie: Juli 2013
  • Laatst online: 10-01 14:42
Zelf zou ik beginnen met de four golden signals (https://sre.google/sre-book/monitoring-distributed-systems/ staat iets verder onderaan)

En daarna zal het voornamelijk applicatie specifiek zijn inderdaad. Om een voorbeeld te noemen: verwerkingstijd van een async process.

Acties:
  • +1 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 02-10 00:54

Douweegbertje

Wat kinderachtig.. godverdomme

Vraag mij af hoe dit inzichtelijk werd gemaakt bij mijn voormalige klanten als het niet ingebouwd werd
Waarschijnlijk niet :) Mijn persoonlijke ervaring is dat veel partijen niet ver zijn in het "observability" stukje of zelfs ook niet weten wat dat nu exact is (is ook lastig).

Anyhow, ik denk dat je het op verschillende manieren kan aanvliegen maar het valt en staat ook een beetje met de gehele stack, de KPI's en wat nu wel/niet belangrijk is voor jezelf, je eindgebruikers en andere actoren.

Toevallig ben ik redelijk betrokken in observability en kan ik wel iets over mijn ervaringen vertellen. Dus om te beginnen zijn we nog bezig met een referentie architectuur binnen de organisatie. Voor de architecten/mt heb ik een soort vertaling gemaakt wat observability nu is. Dat kwam dan uit op deze one-liner:
“Waarneembaarheid (lees: Observability) is een functie van het systeem waarmee mensen en machines de toestand van het systeem kunnen observeren, begrijpen en ernaar kunnen handelen, of conclusies kunnen trekken over de interne toestand van een systeem door alleen naar inputs en outputs te kijken”
Als ik met teams praat dan probeer ik over het algemeen te zorgen dat een zo'n compleet beeld wordt 'gemonitord'. In principe kan je niet te veel metrics hebben, zolang de kardinaliteit maar niet te complex/groot wordt. (leuke read: https://chrismarchbanks.c...ning-your-cardinality.pdf)

M.b.t tracing zit ik daar soort gelijk in. Wees vooral zo compleet mogelijk en werk dan met (dynamic) sampling om het werkbaar te houden voor je tracing backend. Mocht dat noodzakelijk zijn. Bij eventuele incidenten of whatever kan je altijd naar 100% sampling gaan.

In principe is het doel dat je niet echt meer 'in' je systemen hoeft te zitten om te weten 'watsgebeurd'. Dan kom ik ook eigenlijk op het punt dat je een soort 'ketenmonitoring' "moet" hebben. Dus traces gaan door meedere systemen, die systemen geven ieder informatie. Om een concreet voorbeeld te geven; niet alleen zie ik informatie over bijvoorbeeld cpu/mem usage van de applicatie (wat imo hele saaie stats zijn). Ik zie ook de throughput over de loadbalancers, netwerk "quality", de lag op bijvoorbeeld een message bus, etc.

Dus om dan terug op je vraag te komen. Je geeft aan dat bijvoorbeeld metrics van 500 errors hebt. Echter kan je ze ook oplossen door je systeem te 'observen'? Nee? Dan is dat exact waar je over kan nadenken hoe je dat wel zou kunnen zonder 'in' je systeem te gaan, een debug dump te maken of ... whatever.

Ik heb hier ook nog een whitepaper over observability die nog work in progress is vanuit de 'special interest group' observability van de CNCF: https://docs.google.com/d...aF5w1Kh1rBDdLs0-cFsA/edit IMO geeft het ondanks dat het niet klaar is al een mooi beeld.

Als laatste wilde ik nog delen dat je voor Prometheus een soort "extensie" hebt in twee vormen. Dat is Cortex en Thanos. In principe doen ze beide hetzelfde: "horizontally scalable, highly available, multi-tenant, long term storage for Prometheus" - en ze werken ook samen. Het is maar net welke je praktischer vind. Ik gebruik zelf Thanos met succes. Cortex wordt gebruikt bij Grafana cloud en AWS (managed prometheus). Overigens misschien een overkill afhankelijk van je setup ;)

Daarnaast ook redelijk interessant is Grafana Tempo. Een tracing oplossing die in tegenstelling tot bijv. Jaeger niet werkt met een index. Dus je kan dan echt 'yolo' 100% sampling doen met long term storage voor je tracing zolang je maar zelf aan je traceID's komt via bijvoorbeeld logs (exemplars). Zeker ook interessant als je iets met Loki 2.0 (voor je logs) zou kunnen doen.

Wel de sidenote, persoonlijk vind ik zowel Loki2.0 als Tempo nog redelijk "alfa", maar goed, het zou prima in productie kunnen draaien :)

Acties:
  • 0 Henk 'm!

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 02:38

alienfruit

the alien you never expected

Topicstarter
Dank je wel voor al jullie bijdragen. Ik heb mij wat meer ingelezen. Ik heb wat geëxperimenteerd met OpenTelemetry en de mogelijkheid van tracing en metrics. De tracing werkt ook redelijk. Tot je reactie had ik eigenlijk nog nooit gehoord van Cortex of Thanos.

De Golden Signals zien er veel belovend uit, ik ben bezig om te implementeren in één van onze webapplicatie als experiment.
Pagina: 1