# PF-766 : MAJ des rules & dashboards "upstream" #### Présentation du 27/09/2022 --- # Alerting rules - GrafanaRequestsFailing - InfoInhibitor - KubePersistentVolumeInodesFillingUp (2 expressions) - PrometheusScrapeBodySizeLimitHit - PrometheusScrapeSampleLimitHit - PrometheusHighQueryLoad --- # Alerte InfoInhibitor - Cette alerte est mise sous silence actuellement. - Il faut reconfigurer Alertmanager pour bien gérer cette alerte - [PF-1711](https://jira.corp.cloudwatt.com/browse/PF-1171) --- # Recording rules Nouvelles rules : ``` namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m ``` ``` namespace_workload_pod:kube_pod_owner:relabel ``` ``` cluster:node_cpu:ratio_rate5m ``` --- # Recording rules Changements notables : - `KubeJobCompletion` devient `KubeJobNotCompleted` et change d’expression. - Avant, la rule alertait sur la présence de jobs en échec. Maintenant, elle alerte sur la présence de jobs toujours en état actif après 12h. - Le changement a été reporté dans la documentation help_alerts. - `apiserver_request_slo_xxx` apparaît avec Kubernetes-1.23. - Plusieurs rules et dashboards utilisent cette métrique - Nous avons patché pour utiliser `apiserver_request_xxx` - :warning: compatibilité 1.23 :warning: - `KubeDaemonSetRolloutStuck` modifiée - Utilise une métrique non disponible sur Kubernetes-1.15. - Nous avons déployé une rule custom avec l'ancienne expression pour la compatibilité 1.15. --- # Dashboards - Nouveau dashboard [Grafana-Overview](https://grafana-infra.ocb-test06.caascad.com/d/kubernetes-v2-grafana-overview/kubernetes-grafana-overview?orgId=1) - Renommage dans Grafana du folder `Prometheus` : il devient `Monitoring Tools` --- # Dashboards Voir les commentaires du ticket [PF-766](https://jira.corp.cloudwatt.com/browse/PF-766) pour les détails. - `Alertmanager Overview` (toujours partiellement cassé) : améliorations - `API Server` (mais on ne le déploie plus) : changements mineurs - `Kubelet` : corrections de bugs - `Resource Pod` : filtrage sur les devices - `Resource namespace` : filtrage sur les devices - `Resource cluster` : filtrage sur les devices + changements mineurs - `Resource Node` : améliorations - `Nodes` : refacto --- # Dashboard "nodes" - Memory Usage : refacto non visible - Disk Usage : un graph est devenu un tableau + changements mineurs - Network Received : changements mineurs - Network Transmmitted : changements mineurs - changement global : `instance` basé sur `node_uname_info` au lieu de `node_exporter_build_info` --- # Scripts de hack - dashboards - resynchro avec le script upstream - la timezone est variabilisée (utile seulement pour le déploiement avec une chart helm) - correction du patch `caascad_overload.py` - rules - possibilité de supprimer des recording rules - fix pour les rules de sources ignorées du script de kube-prometheus-stack (exemple : grafana) - ajout d'un [mécanisme](https://git.corp.caascad.com/caascad/monitoring/-/blob/master/kubernetes/hack/generate_prometheus_rules.sh#L38-45) pour lancer des scripts complémentaires (comme pour les dashboards) - ajout d'un nouveau script de patch (renommage des rules `apiserver_request_slo_xxx`) --- # Conclusion - Beaucoup de travail de rattrapage - Le test et le déploiement des rules reste simple (artisanal avec helm en ligne de commande) - Le test et le déploiement des dashboards est réservé aux initiés (sic) et est **très fragile**. - **Les rules/dashboards dépendent des versions de Kubernetes** : il faudra trouver une solution, peut-être dès la version 1.23. - Nouveau ticket [PF-1171](https://jira.corp.cloudwatt.com/browse/PF-1171) pour Alertmanager et l'alerte `InfoInhibitor`. <style type="text/css"> p { font-size: 0.7em; } .reveal ul li { font-size: 0.8em; } .reveal ul ul li { font-size: 0.6em; } .reveal section { text-align: left; } } .reveal h3 { color: orange; text-align: center; border-bottom: 1px solid orange; font-size: 0.4em; } .reveal h1 { color: orange; text-align: center; border-bottom: 1px solid orange; margin-bottom: 0.4em; font-size: 1.5em; } .reveal table tr th { font-size: 0.7em; } .reveal table tr td { font-size: 0.5em; } .reveal code { color: aquamarine; font-size: smaller; } </style>
{"type":"slide","slideOptions":{"transition":"slide","center":true}}