Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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 ○ ...

Slide 6

Slide 6 text

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 ...

Slide 7

Slide 7 text

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.

Slide 8

Slide 8 text

8 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

Slide 9

Slide 9 text

9 Pyxida © 2018 - Reproduction interdite sans autorisation préalable

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

16 Pyxida © 2018 - Reproduction interdite sans autorisation préalable Dans un contexte Kubernetes

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

24 Pyxida © 2018 - Reproduction interdite sans autorisation préalable De nombreux SDK à dispositions

Slide 25

Slide 25 text

25 Pyxida © 2018 - Reproduction interdite sans autorisation préalable Ajouter un endpoint à la liste des targets

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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 !