# PrometheusRules & Alertes via Grafana
#### Présentation 08/11/22
---
## Contexte
La solution a été mise en place pour la plateforma BETA.<!-- .element: style="font-size:80%" -->
- permet d'utiliser l'API de Prometheus pour :<!-- .element: style="font-size:80%" -->
- visualiser les PrometheusRules définies dans Prometheus ,
- permet d'utiliser l'API d'Alertmanager pour :<!-- .element: style="font-size:80%" -->
- visualiser les alertes, silences ,
- faire des queries sur les alertes, silences ,
- créer des tableaux de bord dans Grafana.
---
## PrometheusRules (datasource Thanos)
Deux façons de voir les PrometheusRules :<!-- .element: style="font-size:80%" -->
- par état des alertes (firing, pending etc.) <!-- .element: style="font-size:80%" --> ;
- par groupe<!-- .element: style="font-size:80%" --> .
Possibilité de filtrer les rules avec plusieurs options disponibles : <!-- .element: style="font-size:80%" -->
- status ,
- labels.
---
## Alertes dans Grafana
Deux façons de voir les alertes :<!-- .element: style="font-size:80%" -->
- avec <!-- .element: style="font-size:80%" --> `unified alerting` ;
- avec le plugin <!-- .element: style="font-size:80%" --> `camptocamp-prometheus-alertmanager-datasource`.
---
## Unified Alerting : ConfigMap
```yaml=
apiVersion: v1
data:
datasource_alertmanager.yaml: |
apiVersion: 1
datasources:
- name: "Alertmanager-cloud-client"
type: "alertmanager"
access: proxy
orgId: 1
url: "http://client-alertmanager.monitoring-client.svc.cluster.local:9093"
jsonData:
implementation: "prometheus"
kind: ConfigMap
...
```
---
## Unified Alerting : Utilisation

---
## Unified Alerting : Démo
Lien :<!-- .element: style="font-size:80%" --> [Grafana unified alerting](https://grafana-infra.ocb-test05.caascad.com/alerting/notifications?alertmanager=Alertmanager)
- visualisation des receivers ;<!-- .element: style="font-size:80%" -->
- visualisation des alertes ;<!-- .element: style="font-size:80%" -->
- création d'un silence ;<!-- .element: style="font-size:80%" -->
- suppression d'un silence ;<!-- .element: style="font-size:80%" -->
- ajout d'un receiver.<!-- .element: style="font-size:80%" -->
---
## Unified Alerting : Comparaison Karma / Grafana

---
## Plugin : Visualisation Alertes
- plugin type datasource : [camptocamp-prometheus-alertmanager-datasource](https://github.com/camptocamp/grafana-prometheus-alertmanager-datasource) ;
---
## Plugin : Déploiement
- installation plugin : [`default.yaml`](https://sourcehub.orange-business.com/mcs-ngot/beta-use-cases-admin/-/blob/38a80ab7237631a4d30fa951a18ae2418d10021b/helm/grafana/values/default.yaml#L7) ;
```
grafana:
plugins:
- "camptocamp-prometheus-alertmanager-datasource"
```
- définition configmap pour utiliser la datasource :
```
apiVersion: v1
kind: ConfigMap
name: grafana-datasource-alertmanagerplugin
data:
alertmanager_plugin.yaml: |
datasources:
- name: "Prometheus AlertManager"
type: "camptocamp-prometheus-alertmanager-datasource"
url: "http://alertmanager:9093"
```
---
## Plugin : Dashboard *Alertmanager Alerts*
- le dashboard [upstream](https://grafana.com/grafana/dashboards/12947) **ne fonctionnait pas** (juin 2022) à cause des filtres ;
- construction d'un nouveau dashboard qui contient 3 panels :
- alertes actives ,
- alertes silencées ,
- alertes prometheus (construite avec la métrique `ALERT_FOR_STATE` provenant de la datasource Thanos).
---
## Plugin : Utilisation #1 - menu *Explore*

---
## Plugin : Utilisation #2 - Dashboard *Alertmanager Alerts*

---
## Plugin : Démo
- [Grafana](https://grafana.pf-beta.cloudservicesfactory.com/obs-ucc3/d/p6ml03vGH/alertmanager-alerts?orgId=1) :
- Menu *Explore*
- Dashboard *Alertmanager Alerts*
---
## Plugin : Observations
- l'avantage principal de cette solution est d'avoir une seule interface pour la supervision des plateformes ;
- dans le menu *Explore* il n'y a pas d’autocomplétion ;
- dans dashboard labels `alertstatus` et `alertstatus_code` ne fonctionnent pas à cause d'une modification [upstream](https://github.com/camptocamp/grafana-prometheus-alertmanager-datasource/pull/98/files) ;
- repo maintenu :
- trois releases en 2022 (bug fixes et quelques features en plus) ,
- mise à jour récente : dernier commit 7 juin.
---
## Questions
<style type="text/css">
p {
font-size: smaller;
}
.reveal ul ul li {
font-size: smaller;
}
.reveal section {
text-align: left;
}
.reveal h2 {
color: orange;
text-align: left;
border-bottom: 1px solid orange;
}
.reveal h1 {
color: orange;
text-align: left;
border-bottom: 1px solid orange;
margin-bottom: 0.4em;
}
.reveal code {
color: aquamarine;
font-size: smaller;
}
</style>