prometheus监控k8s集群
简介
- 在日常的运维工作中,为了减少业务故障的发现和解决时间,通常是需要监控系统的支持,zabbix作为常用监控手段,并不足以满足kubernetes集群的监控,而Prometheus可以更好的进行相关指标的监控。
- 监控的四个黄金指标分为“延迟,通讯量,错误,饱和度”。
- 从网络到编排的指标及手段可以查看下面图片
环境介绍
kubernetes 1.16.4
安装部署
涉及到的部署文件已经放到了github,需要自取,另外不要脸的求点个5星好评。
github地址:
https://github.com/zhangyudd/prometheus.git
本文涉及到Prometheus存储,使用了pvc,可自行更换存储。
部署metrics
cd metrics/kube-state-metrics
kubectl apply -f .
cd metrics/
kubectl apply -f .
部署prometheus
cd prometheus
kubectl apply -f .
拷贝rules到容器对应存储目录 /prometheus/
如果修改了配置文件可以进行热更:curl -X POST http://prometheus/-/reload
部署alertmanager
cd alertmanager
kubectl apply -f .
这里使用的邮箱,修改对应的邮箱为自己邮箱。
部署node-exporter
cd node-exporter
kubectl apply -f .
部署blackbox-exporter
cd blackbox-exporter
kubectl apply -f .
service 发现需要在service中添加以下字段
#http_probe
annotations:
prometheus.io/scrape: ‘true’
prometheus.io/http-probe: ‘true’
prometheus.io/http-probe-port: ‘8080’
prometheus.io/http-probe-path: ‘/healthz’
#tcp_probe
annotations:
prometheus.io/scrape: ‘true’
prometheus.io/tcp-probe: ‘true’
prometheus.io/tcp-probe-port: ‘80’
查看所有pod状态
kubectl get pods -n kube-system
部署完成后可以添加Prometheus和alertmanager的ingress,方便查看状态及问题。
查看界面及日志,确认运行状态
添加grafana数据源展示图表
url填写以下链接:
http://prometheus.kube-system:9090/
以下为一些监控常用图表:
12870 这个模板是kube-state-metrics采集的各种k8s资源对象的状态的图表
315这个模板是cadvisor采集的各种指标的图表
1860 和 9276 这个模板是node-exporter采集的各种主机相关的指标的图表
6417这个模板是kube-state-metrics采集的各种k8s资源对象的状态的图表
4859和4865这两个模板是blackbox-exporter采集的服务的http状态指标的图表(两个效果基本一样,选择其一即可)
5345这个模板是blackbox-exporter采集的服务的网络状态指标的图表
11529和9965blackbox采集的关于http tcp探针