# Supervision Remote Write<!-- .element: style="font-size: 3em" --> #### Présentation Équipe Monitoring 24/05/2022 --- <!-- .slide: style="text-align: center;"> --> # Concepts QueueConfig ![](/uploads/upload_6d01b8636488d7dd207c993e0918a11d.png =500x500) --- # Problématique * Les métriques permettant de superviser le Remote Write se trouvent dans le Prometheus zone cliente. * En cas de panne, absence (totale ou partielle) de ces métriques : le serpent se mord la queue... * Il faut donc récupérer ces métriques sans utiliser Remote Write. --- # Métriques remote write - Métriques utilisées pour l'alerting et pour le dashboard - Utilisation de la fédération pour récupérer ces métriques - <span>fédération sur cloud-client seulement</span><!-- .element: style="font-size: 0.8em" --> - <span>elles ne sont pas envoyées via Remote Write sur cloud-client</span><!-- .element: style="font-size: 0.8em" --> - <span>pas de configuration/fédération spécifique pour cloud-app</span><!-- .element: style="font-size: 0.8em" --> - Voir la liste dans [#PrometheusRemoteWriteMetrics](https://git.corp.caascad.com/caascad/terraform/envs-ng/-/blob/5d63fa69e8e40fd39c3b8b5e1bc9ee63afbed2d5/mom-federate-remote-write-metrics.cue#L3) - Ajout d'un label `cluster` avec la même valeur que `cc_prom_source`, utile pour certains dashboards upstream. --- # Liste des alertes Alertes upstream -> alertes custom (déjà déplacées) : - <span>`PrometheusRemoteStorageFailures` (`for` = 5m au lieu de 15m)</span><!-- .element: style="font-size: smaller" --> - <span>`PrometheusRemoteWriteBehind` (`for` = 5m au lieu de 15m)</span><!-- .element: style="font-size: smaller" --> - <span>`PrometheusRemoteWriteDesiredShards`</span> (description réparée/améliorée)<!-- .element: style="font-size: smaller" --> Création d'alerte (à déployer) : - <span>`PrometheusRemoteWriteMetricsAbsent`</span><!-- .element: style="font-size: smaller" --> --- # Alerte PrometheusRemoteStorageFailures - Description : - <span>Échec d'envoi sur le remote endpoint</span><!-- .element: style="font-size: 0.8em" --> - <span>Perte définitive de métriques</span><!-- .element: style="font-size: 0.8em" --> - Pannes : - <span>Problèmes d'envoi des métriques</span><!-- .element: style="font-size: 0.8em" --> - Manifestion des pannes : - <span>Erreur 4xx visibles dans les logs</span><!-- .element: style="font-size: 0.8em" --> - <span>Panel `Failed Samples` sur le dashboard</span><!-- .element: style="font-size: 0.8em" --> --- # Alerte PrometheusRemoteWriteBehind - Description : - <span>Problème de réception sur le remote endpoint</span><!-- .element: style="font-size: 0.8em" --> - <span>Absence (temporaire) de métriques</span><!-- .element: style="font-size: 0.8em" --> - <span>Perte définitive de métriques après 1h d'interruption</span><!-- .element: style="font-size: 0.8em" --> - Pannes : - <span>Problèmes à la réception des métriques</span><!-- .element: style="font-size: 0.8em" --> - <span>ou problèmes réseau</span><!-- .element: style="font-size: 0.8em" --> - <span>ou trop de métriques à envoyer par rapport à ce qu'on peut envoyer d'un coup</span><!-- .element: style="font-size: 0.8em" --> - Manifestion des pannes : - <span>Erreur 5xx visibles dans les logs</span><!-- .element: style="font-size: 0.8em" --> - <span>Panel `Highest Timestamp In vs. Highest Timestamp Sent` sur le dashboard</span><!-- .element: style="font-size: 0.8em" --> --- # Alerte PrometheusRemoteWriteDesiredShards - Description : - <span>Le nombre de shards nécessaire dépasse la valeur max configurée</span><!-- .element: style="font-size: 0.8em" --> - Pannes : - <span>Problèmes de latence à l'envoi</span><!-- .element: style="font-size: 0.8em" --> - <span>ou réseau trop lent par rapport au nombre de métriques à envoyer</span><!-- .element: style="font-size: 0.8em" --> - <span>ou tout simplement trop de métriques à envoyer (problème ponctuel ou de tuning)</span><!-- .element: style="font-size: 0.8em" --> - Manifestion des pannes : - <span>Panel `Max Shards` au maximum sur le dashboard</span><!-- .element: style="font-size: 0.8em" --> - <span>Panel `Desired Shards` supérieur au maximum sur le dashboard</span><!-- .element: style="font-size: 0.8em" --> --- # Alerte PrometheusRemoteWriteMetricsAbsent - Description : - <span>Au moins une des métriques Remote Write récupérées via la fédération est absente</span><!-- .element: style="font-size: 0.8em" --> - Pannes : - <span>Problème de fédération</span><!-- .element: style="font-size: 0.8em" --> - <span>Prometheus client down</span><!-- .element: style="font-size: 0.8em" --> - <span>Zone Cliente injoignable</span><!-- .element: style="font-size: 0.8em" --> - Manifestation des pannes : - <span>Logs "federation failed"</span><!-- .element: style="font-size: 0.8em" --> - <span>Dashboard "Remote Write" vide ou incomplet</span><!-- .element: style="font-size: 0.8em" --> - <span>Présence possible d'autres alertes</span><!-- .element: style="font-size: 0.8em" --> --- # Liste de métriques remontées par fédération * La liste des métriques est écrite à 2 endroits : - [caascad-prometheus-rules](https://git.corp.caascad.com/caascad/applications/caascad-prometheus-rules/-/blob/473ae89016160299e234d1a99389c72077da4219/rules/caascad-prometheus-remote-write-absent.cue) - [envs-ng/mom-federate-remote-write-metrics.cue](https://git.corp.caascad.com/caascad/terraform/envs-ng/-/blob/5d63fa69e8e40fd39c3b8b5e1bc9ee63afbed2d5/mom-federate-remote-write-metrics.cue#L3) - parce qu'il n'y a pas de lien facile entre *envs-ng* et *caascad-prometheus-rules* * Modifications de la liste - si suppression dans envs-ng, cela se verra par la manifestation de l'alerte - si ajout dans envs-ng, cela ne se verra pas dans l'alerte. Il faut être vigilant ! Ne pas oublier de l'ajouter dans l'alerte aussi ! --- # Dashboard Remote Write - <span>**General** / **Prometheus** / **Remote Write**</span><!-- .element: style="font-size: 0.8em" --> - <span>Origine : [github.com/prometheus/prometheus](https://github.com/prometheus/prometheus/blob/main/documentation/prometheus-mixin/dashboards.libsonnet)</span><!-- .element: style="font-size: 0.8em" --> - <span>Installation depuis [helm-charts/.../kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml)</span><!-- .element: style="font-size: 0.8em" --> - <span>Panels notables :</span><!-- .element: style="font-size: 0.7em" --> - <span>`Highest Timestamp In vs. Highest Timestamp Sent` : retard d'envoi (en secondes) sur Remote Write</span><!-- .element: style="font-size: 0.7em" --> - <span>`Current Shards`, `Max Shards`, `Desired Shards` : nombre de shards (en cours d'utilisation, max et souhaité)</span><!-- .element: style="font-size: 0.7em" --> - <span>`Pending Samples` : indique un problème d'envoi quand cela "gonfle"</span><!-- .element: style="font-size: 0.7em" --> - <span>`Failed Samples` : indique des pertes de métriques (DANGER)</span><!-- .element: style="font-size: 0.7em" --> - <span>`Dropped Samples` : indique des suppressions prévues de métriques (metricsRelabeling)</span><!-- .element: style="font-size: 0.7em" --> --- # Conclusion - [PR upstream](https://github.com/prometheus/prometheus/pull/10721) pour corriger un bug du dashboard<!-- .element: style="font-size: 0.8em" --> - fin du ticket [PF-881](https://jira.corp.cloudwatt.com/browse/PF-881)<!-- .element: style="font-size: 0.8em" --> - <span>les alertes (sauf une) sont déployées</span><!-- .element: style="font-size: 0.7em" --> - <span>le Remote Write est défini dans *envs-ng* pour echo</span><!-- .element: style="font-size: 0.7em" --> - <span>le Remote Write (et la fédération spécifique) est laissé sur echo</span><!-- .element: style="font-size: 0.7em" --> - ticket d'industrialisation [PF-937](https://jira.corp.cloudwatt.com/browse/PF-937)<!-- .element: style="font-size: 0.8em" --> - <span>généraliser la configuration posée sur echo</span><!-- .element: style="font-size: 0.7em" --> - <span>upgrader la version de la chart helm `kube-prometheus-stack`</span><!-- .element: style="font-size: 0.7em" --> - <span>déployer définivement le dashboard</span><!-- .element: style="font-size: 0.7em" --> - <span>déployer l'alerte manquante</span><!-- .element: style="font-size: 0.7em" --> <style type="text/css"> p { font-size: smaller; } .reveal ul ul li { font-size: smaller; } .reveal section { text-align: left; } } .reveal h3 { color: orange; text-align: center; border-bottom: 1px solid orange; } .reveal h1 { color: orange; text-align: center; border-bottom: 1px solid orange; margin-bottom: 0.4em; font-size: smaller; } .reveal code { color: aquamarine; font-size: smaller; } </style>
{"type":"slide","slideOptions":{"transition":"slide","center":true}}