Kubernetes. Запуск prometheus/grafana/alertmanager - запуск exporter для ingress-nginx-controller

Thank you for reading this post, don't forget to subscribe!

1.Установка prometheus
2.exporter nginx(ingress-controller)
3.exporter elasticsearch
4.exporter rabbitmq
5.exporter redis
6.настройка опо­ве­ще­ний в telegram
6.1 настрой­ка опо­ве­ще­ний в telegram в раз­лич­ные чаты(группы)
6.2. настрой­ка опо­ве­ще­ний в telegram раз­гра­ни­че­ние опо­ве­ще­ний по груп­пам (исклю­че­ния уведомлений)
7.Проблема с prometheus-kube-proxy
8.Настройка алер­та для опре­де­лён­но­го неймспейса
9.Добавление опо­ве­ще­ний и по email
10. Настрой­ка гра­фи­ков в grafana

Кача­ем репозиторий

git clone https://github.com/prometheus-community/helm-charts.git
cd helm-charts/charts/kube-prometheus-stack/
дока­чи­ва­ем чарты:
helm dep update

созда­ём namescpase в кото­ром будет всё крутиться:
kubectl create ns monitoring

теперь рас­смот­рим что пра­вим в пере­мен­ных у helm chart:

[root@prod-vsrv-kubemaster1 charts]# vim kube-prometheus-stack/values.yaml

namespaceOverride: "monitoring"

для рабо­ты telegram бота:

настра­и­ва­ем ingress у alertmanager:

настра­и­ва­ем volume для Alertmanager отме­чу что в кла­сте­ре настро­ен nfs-provisioner - nfs-storageclass

теперь настро­им grafana

тут ука­зы­ва­ем ingress а так­же добав­ля­ем хра­не­ние dashboard в nfs storage-class

теперь настра­и­ва­ем ingress для prometheus

а так же volume:

и теперь важ­ная фиш­ка, добав­ле­ние label кото­рый надо будет доба­вить на все неймспейсы:

так­же правим:

для выстав­ле­ния сро­ка хра­не­ния дан­ных можем поме­нять сле­ду­ю­щее значение:

 

запус­ка­ем теперь helm chart

[root@prod-vsrv-kubemaster1 charts]# helm upgrade --install -name prometheus kube-prometheus-stack/ -f kube-prometheus-stack/values.yaml --namespace monitoring

видим что при запус­ке доба­вил­ся label release=prometheus - проверяем:
kubectl describe pod prometheus-kube-prometheus-operator-659d5f8674-qxrf5 -n monitoring | grep -i release
release=prometheus

смот­рим label на всех неймсмейсах:
kubectl get ns --show-labels

про­ста­вим на них label release=prometheus
kubectl label namespace --all "prometheus=enabled"

про­ве­ря­ем:
kubectl get ns --show-labels

 

 

теперь настроим сбор метрик с ingress controller,

созда­ём сер­вис для ingress. Ука­зы­ва­ем namespace в кото­ром рабо­та­ет ingress, так же необ­хо­дим label app.kubernetes.io/name: ingress-nginx дан­ный лейб смот­рим так:
kubectl describe pod -n ingress-nginx ingress-nginx-controller-vqjkl | grep -A3 Labels

mkdir exporter-ingres

cat exporter-ingres/service.yaml

 

В дан­ном фай­ле так же обра­ща­ем вни­ма­ние на:
name: prometheus
на это имя будет натрав­лен port у ServiceMonitor

теперь созда­ём ServiceMonitor, он будет созда­вать в prometheus target с мет­ри­ка­ми ingress controller:

cat exporter-ingres/service-monitor.yaml

так­же правим:

 

при­ме­ня­ем:

[root@prod-vsrv-kubemaster1 charts]# kubectl apply -f exporter-ingres/service.yaml -f exporter-ingres/service-monitor.yaml

через пару мину­ток про­ве­ря­ем в prometheus

общий  вид у фай­ла values.yaml будет следующий:

cat helm-charts/charts/kube-prometheus-stack/values.yaml