En route vers le complot

Bonjour, cher lecteur! Cet article est né d'une tentative d'examiner la surveillance opérationnelle à partir de l'analyse. Il vous sera utile si:

  • quelque chose de la liste suivante est familier: Grafana, InfluxDB, Prometheus, Zabbix ou un autre système de surveillance avec des idées similaires;
  • Vous n'êtes pas un intermédiaire / expert / professionnel / confiant dans divers types d'affichage et de statistiques de séries chronologiques (sinon, ce sera très probablement ennuyeux pour vous);
  • il y a un désir de regarder certains aspects «sous le microscope».

Si vous décidez que les conditions ci-dessus sont remplies, bienvenue chez cat.




"Dites-moi, s'il vous plaît, où dois-je aller d'ici?"
"Où veux-tu aller?" - répondit le chat.
"Je m'en fiche ..." dit Alice.
"Alors, peu importe où aller", a déclaré le chat.
"... juste pour aller quelque part," expliqua Alice.
"Vous êtes sûr d'aller quelque part", a déclaré le chat. "Il faut juste aller assez longtemps."
Alice au pays des merveilles par Lewis Carroll

La journée commence ...


. , , , , . , «?» . ? , ( , )! , .



, RFC1065:



3.2.3.3. Counter

This application-wide type represents a non-negative integer which

Rose & McCloghrie [Page 8]

RFC 1065 SMI August 1988


monotonically increases until it reaches a maximum value, when it
wraps around and starts increasing again from zero. This memo
specifies a maximum value of 2^32-1 (4294967295 decimal) for
counters.

3.2.3.4. Gauge

This application-wide type represents a non-negative integer, which
may increase or decrease, but which latches at a maximum value. This
memo specifies a maximum value of 2^32-1 (4294967295 decimal) for
gauges.


, , 1988- , : . - , , , Prometheus.


. — : , , . — - . - …


UI Grafana, , , - , $__interval, , , . — , 4k. , , — . , , .


, ( ) « » . :


, “Step count” 200 300 (, , . : 10 , :

“”$group_time
InfluxQLWHERE time>now()-...GROUP BY time(...)
1h20s2
1d (24h)5m30
1w1h360
1month3h1080


, ! ( ) , , .



. ( Influx’, ):


InfluxDB, , : An instantaneous rate of change is equivalent to a derivative ( ), . , , , , (average rate of change). . , , mean ( ), , . , «» , - . , , , , , .



«» : , last, ( InfluxQL, promql ). last . , . , , 00 . non_negative_derivative(first(...)) . , , — , — : ( ) .



, ? .


mean, InfluxDB : max, min, last, , , — stddev. prometheus min_over_time, max_over_time, stddev_over_time, Influx ( , ). Last, , , , , mean: - , mean , «».


De toute évidence, max et min fonctionneront de manière indépendante. Mais que se passe-t-il si vous combinez ces deux et y ajoutez la moyenne? Il s'avère que cette idée n'est pas quelque chose de nouveau, elle est généralement ancienne, comme les pyramides. Parmi les exemples «classiques» dans les systèmes de surveillance, je me souviens des tendances dans Zabbix (j'ai intentionnellement cherché un lien vers une ancienne version) et Graphite Whisper Rollup , ainsi que le précédent RRDtool , qui était également utilisé dans Cacti , où pour une raison quelconque min manquait par défaut. Peut-être, malgré tout le texte suivant, c'est l'une des meilleures approches. Il est assez informatif, pas trop bruyant, intuitif, peu coûteux à mettre en œuvre, relativement universel et disponible dans presque tous les systèmes modernes.



Exemples de rendu similaire:
  • dans zabbix
  • Grafana


, min mean ( max avg) , , Grafana Legend -> Values , , , .


«»


, , stddev — standard deviation, - . , , . , , «» . , (, , , , ).


, : error bar. — “ ”, 1-, 2- 3- (25% , 75% ). , ? :) , , Grafana. , pandas seaborn ( plotly).


, , « » , , . “the Datasaurus Dozen animation” Google.




, , , . , , , .


, « » . ? seaborn! , : violinplot. , « » « -» , , - , : violinplot Grafana.



: , , ? , ? ? , ? - .


, , . : Google SRE book. « » (, , ): latency, traffic, errors, saturation. , - ( ), . : saturation % 100, : 100, «» , 0 — , , , . , , — , .



, : . , , , /. (, , ): pull push. , . , , , push — Riemann-tools, pull — Prometheus.


Telegraf, (input-plugins) , (output-plugins) . , discovery-plugins— input-plugins, . , , LLD (low-level discovery) Zabbix, . «»: ( ). (, prometheus-operator), , . , , … Kubernetes, — Influxdata. - ( API/RPC) snap, , , ( , ).


, pull- -, . , . , , , . . , : (, Riemann ). . , , , , (, - ). Graphite / statsd, , , UI. Prometheus recording rules Thanos Compact, TICK- , , : Continues Queries InfluxDB TICKscript Kapacitor. , , — , Histogram Summary Prometheus, Accumulator interface Telegraf.


B , , , , :


, UI, . : , , , UI-preprocessing. , . , «» UI-preprocessing UI, , . , , / — .


« » , 3- , , . , , .



, , : Prometheus, Telegraf . , , heatmap ( ), Grafana. , « », .


Grafana


, Grafana heatmap time series buckets, , , CPU :



, :

  1. :
    ;
    latency, traffic, errors saturation.
  2. , .
  3. ( ), , , .
  4. . - Grafana ( UI ), , , , - Python JS.


Grafana ) UI; ) ; ) .


— , : , , .



, , , . . latency .


All Articles