# 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}}