In deze blog wordt beschreven hoe monitoring en alarmering binnen een cluster ingeschakeld kan worden met behulp van de nieuwe monitoringtoepassing van Rancher, die werd geïntroduceerd in Rancher v2.5.
Voordat van de nieuwe monitoring-functies gebruik gemaakt kan worden, moeten alle! monitoring / alarmering / notifiers in Cluster Manager uitgeschakeld worden (van de ‘oude’ versie van Rancher dus) voordat de nieuwe monitoring-functies gebruikt kunnen gaan worden via Cluster Explorer.
Monitoring
De rancher-monitoring
operator wordt aangestuurd door Prometheus, Grafana, Alertmanager, de Prometheus Operator en de Prometheus-adapter.
Met Prometheus kunnen metrics van de verschillende Rancher- en Kubernetes-objecten bekeken worden. Met behulp van zogenaamde ‘timestamps’ kan met Prometheus deze statistieken worden opgevraagd en bekeken in eenvoudig te lezen grafieken en visuals. Het opvragen van de statistieken in Prometheus geschiedt middels PromQueries.
Met behulp van Grafana kunnen de statistieken opgevraagd en gevisualiseerd worden. Tevens kunnen er waarschuwingen (alerts) gegenereerd en verstuurd worden via notifiers.
Installatie
- Ga in de gebruikersinterface van Rancher naar het cluster waar monitoring ge-installeerd dient te worden en klik op Cluster Explorer.
- Klik op Apps & Marketplace.
- Klik op de Monitoring app.
- Optioneel: Klik op Chart options en configureer Prometheus, Grafana en AlertManager. Raadpleeg de configuratiereferentie voor hulp .
- Scrol naar de onderkant van de README en klik op Install.
Standaard implementeert Rancher Monitoring exporters (zoals node-exporter en kube-state-metrics ), evenals standaard Prometheus-alerts en Grafana-dashboards (samengesteld door het kube-prometheus- project) op het cluster. Om de monitoring en alerts functies te gebruiken, ga naar Monitoring vanuit het menu van de Rancher Explorer.
Alertmanager
Er worden een aantal standaard alerts aangemaakt tijdens de installatie en deze kunnen via de Prometheus Alertmanager bekeken worden. Hier kunnen filters toegepast worden om bepaalde alerts te zoeken.
Grafana
Hiermee kunnen dashboards bekeken en gemaakt worden om de ‘metrics’ inzichtelijk te maken.
Prometheus Graph
Met behulp van Prometheus Query Language (promQL) kunnen de metrics opgehaald en in real-time weergegeven worden in o.a. graphs en ‘tabular data’ in deze expression browser.
Prometheus Rules
De ‘rules’ worden gebruikt om de cluster statistieken te bewaken en om alerts uit te sturen indien bepaaalde waardes overschreden worden.
Prometheus Targets
Via de ‘targets’ worden de metrics ingesteld die door Prometheus gebruikt worden.
Instellen alerting
Via het menu van Cluster Explorer en de optie ‘Monitoring‘ verschijnt het volgende menu:
‘Service Monitors‘ definieert de groep services en de endpoints die Prometheus zal gebruiken voor de metrics. Dit is de meest gebruikelijke optie om het verzamelen van metrics te definiëren. ‘Pod Monitors‘ wordt alleen gebruikt in specifieke gevallen waar een ‘Service Monitor’ niet het gewenste resultaat biedt.
‘Receiver’ is wat voorheen als ‘Notifier’ aangeduid werd, Standaard is dat ‘null’ maar de volgende receivers kunnen toegevoegd worden:
- Slack
- Webhook
- Custom
Bijvoorbeeld een Slack receiver form:
Via ‘Route’ wordt aangegeven welke ‘Receiver’ gebruikt wordt voor een alert. Hierin worden ook de ‘Grouping’ parameters gedfinieerd (voorheen ‘Alert Groups’) en de ‘Mathing’ opties zoals bv. een key/value.
Bijvoorbeeld route-1 voor Cronjob Failures meldingen naar Slack:
Prometheus Rules
Via het menu ‘Monitoring‘ -> ‘Advanced‘ -> ‘Prometheus Rules‘ kunnen de recording en alert rules gedefinieerd worden. Bijvoorbeeld een alert-rule voor failed cronjobs:
De overeenkomende yaml-file voor deze alert rule:
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: cronjob-failures namespace: cattle-monitoring-system spec: groups: - name: cronjobs rules: - alert: cronjob-failure expr: kube_job_failed{condition="true",job_name=~"cronjob2-.+",namespace="nico-jobtest"} > 0 for: 1m labels: severity: warning annotations: summary: Cronjob 2 Failure
Uiteindelijk zal er dan een melding in Slack verschijnen als de Cronjob gefaald is: