Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Monitoring avancé dans Kubernetes avec Prometheus

Monitoring avancé dans Kubernetes avec Prometheus

Etienne Coutaud

October 09, 2019
Tweet

More Decks by Etienne Coutaud

Other Decks in Technology

Transcript

  1. 1 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Bordeaux 33000 > France > www.pyxida.io Monitoring avancé dans k8s Cloud Native Apps - Observabilité : Mise en place et Utilisation des métrique Meetup CNCF @Toulouse v1-102019
  2. 2 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Devops Engineer Kubernetes Expert Freelance Certified Kubernetes Administrator (CKA) CNCF Speaker CNCF Bordeaux Meetup Founder https://github.com/etiennecoutaud @etiennecoutaud whoami : Etienne Coutaud
  3. 3 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Bordeaux 33000 > France > www.pyxida.io 01 Généralités sur l’observabilité
  4. 4 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Bordeaux 33000 > France > www.pyxida.io Observabilité (n.f.) Qualité de ce qui est observable Phénomène ou processus observable
  5. 5 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Nos SI cachent de la data Les infrastructures de SI cachent 2 types d’informations : • Les informations techniques ◦ Consommation CPU ◦ Espace disques utilisés ◦ Nombre de serveurs ◦ ... • Les information business ◦ Nombre de clients ◦ Age moyen des utilisateurs ◦ ...
  6. 6 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Nécessité de collecter toute les données Load Balancer Service Login Application File message Application Application ...
  7. 7 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Bordeaux 33000 > France > www.pyxida.io Je ne maîtrise pas une plateforme que je ne connais pas.
  8. 10 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Bordeaux 33000 > France > www.pyxida.io 02 OpenMetrics & Prometheus
  9. 11 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Genèse de Prometheus Créé en 2012 par Reversé à la CNCF en 2016 S’est depuis installé comme système de métrique “by design” 2017
  10. 12 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Les sources de données de Prometheus Tout ce qui expose des métriques au format open metrics : • des métriques systèmes (RAM, CPU, Disk … ) -> Node Exporter • des métriques middleware (db, kafka, control plane k8s … ) -> Exporter spécifique ou métriques by design • des métriques métiers ou spécifiques -> votre code applicatif directement
  11. 13 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Architecture de Prometheus et de ses composants
  12. 14 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Bordeaux 33000 > France > www.pyxida.io Demo Time
  13. 15 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Bordeaux 33000 > France > www.pyxida.io 03 Kubernetes Prometheus
  14. 17 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Ce déploiement est facilité par la communauté coreos/kube-prometheus coreos/prometheus-operator Contient l’ensemble des manifests nécessaire au déploiement de la stack complète code Go de l’opérateur Prometheus
  15. 18 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    L’opérateur kube-prometheus gère le cycle de vie Boucle de réconciliation + Custom Resource Definition Observe Analyse Act La stack Prometheus est composée de : • un pod Prometheus Server • un pod Grafana La stack Prometheus devrait être composée de : • un pod Prometheus Server • un pod Grafana • un pod AlertManager L’opérateur se charge de résoudre la différence : 1. Démarre un pod AlertManager avec le bonne configuration 2. Reconfigure le Prometheus server pour utiliser ce nouveau composant
  16. 19 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Ce mécanisme nécessite de nouvelles ressources spécifiques (Custom Resource Definition aka CRD) • alertmanager.monitoring.coreos.com • podmonitor.monitoring.coreos.com • prometheuses.monitoring.coreos.com • prometheusrules.monitoring.coreos.com • servicemonitors.monitoring.coreos.com
  17. 20 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Exemple : Prometheus server CRD apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: labels: prometheus: k8s name: k8s namespace: monitoring spec: alerting: alertmanagers: - name: alertmanager-main namespace: monitoring port: web baseImage: quay.io/prometheus/prometheus nodeSelector: kubernetes.io/os: linux replicas: 2 resources: requests: memory: 400Mi ruleSelector: matchLabels: prometheus: k8s role: alert-rules serviceAccountName: prometheus-k8s version: v2.11.0
  18. 21 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Bordeaux 33000 > France > www.pyxida.io Demo Time
  19. 22 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Listing des ressources créées : ➜ (⎈ |cncf_toulouse:monitoring) ~ ▶ kubectl get pods NAME READY STATUS RESTARTS AGE alertmanager-main-0 2/2 Running 0 3h14m alertmanager-main-1 2/2 Running 0 3h14m alertmanager-main-2 2/2 Running 0 3h14m grafana-598f68c777-h49m6 1/1 Running 0 3h14m kube-state-metrics-5c9bd5465b-9tsk5 3/3 Running 0 3h14m node-exporter-7vv2n 2/2 Running 0 3h14m node-exporter-bdnbx 2/2 Running 0 3h14m node-exporter-bhqfl 2/2 Running 0 3h14m prometheus-adapter-74fc6495d7-986x2 1/1 Running 0 3h14m prometheus-k8s-0 3/3 Running 1 3h14m prometheus-k8s-1 3/3 Running 1 3h14m prometheus-operator-658766d58-j64pw 1/1 Running 0 3h14m cluster AlertManager Grafana (dashboard) exporter système sur les noeuds Prometheus server HA Prometheus opérateur agrège et expose métrique propre à k8s permet à k8s d’utiliser des métriques prom
  20. 23 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Bordeaux 33000 > France > www.pyxida.io 04 Exposer ses propres métriques
  21. 26 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Bordeaux 33000 > France > www.pyxida.io Demo Time
  22. 27 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Bordeaux 33000 > France > www.pyxida.io Conclusion
  23. 28 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

    Take Away • Le monitoring est bon pour la santé, abusez en ! • N'hésitez pas à inclure des métriques métiers à vos applications • Affiner les “alertes” cela prend du temps, c’est répétitif mais nécessaire pour éviter “l’alerte fatigue” • De même que la customisation des dashboards • Prometheus sert de la donnée chaude, une autre architecture est à envisager pour du stockage long terme • le langage PromQL propose plein de fonctions prédéfinies, jouez avec ! • L’opérateur Prometheus vous permet d’affiner votre stratégie vis à vis de vos utilisateurs ! un Prometheus commun ou chacun le sien ? à vous de choisir !