kube-prometheus是coreos的一个开源项目,用来扩展 Kubernetes API,特定的应用程序控制器。(简单说:用于监控kubernetes集群)它被用来创建、配置和管理复杂的有状态应用,如数据库、缓存和监控系统。Operator是基于 Kubernetes的资源和控制器概念之上构建,但同时又包含了应用程序特定的一些专业知识:比如创建一个数据库的Operator,则必须对创建的数据库的各种运维方式非常了解,创建Operator的关键是CRD(自定义资源)的设计。目前Prometheus Operator已经不包含完整功能,完整的解决方案已经变为kube-prometheus。


prometheus告警rules prometheus告警恢复值发送_prometheus告警rules

kube-prometheus结构


1、Alertmanager

Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,而且很容易做到告警信息进行去重,降噪,分组等,是一款前卫的告警通知系统。

2、Grafana

Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它有以下六大特点:

(1)展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;

(2)数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;

(3)通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;

(4)混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;

(5)注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件源数据和标记;

(6)过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

搭建kube-prometheus监控步骤如下:

1、下载镜像:

注意:所有节点都要下载镜像。

[root@k8s-master ~]# docker pull quay.io/prometheus/alertmanager:v0.20.0
[root@k8s-master ~]# docker pull grafana/grafana:6.6.0
[root@k8s-master ~]# docker pull quay.io/coreos/kube-state-metrics:v1.9.5
[root@k8s-master ~]# docker pull quay.io/coreos/kube-rbac-proxy:v0.4.1
[root@k8s-master ~]# docker pull quay.io/prometheus/node-exporter:v0.18.1
[root@k8s-master ~]# docker pull quay.io/coreos/k8s-prometheus-adapter-amd64:v0.5.0
[root@k8s-master ~]# docker pull quay.io/prometheus/prometheus:v2.15.2
[root@k8s-master ~]# docker pull quay.io/coreos/prometheus-operator:v0.37.0
[root@k8s-master ~]# docker pull jimmidyson/configmap-reload:v0.3.0

2、克隆kube-prometheus

[root@k8s-master ~]# git clone https://github.com/coreos/kube-prometheus.git
准备prometheus相关的yaml文件
[root@k8s-master ~]# tree kube-prometheus


prometheus告警rules prometheus告警恢复值发送_数据库_02


3、创建prometheus资源

[root@k8s-master ~]# kubectl apply -f kube-prometheus/namespace.yaml
[root@k8s-master ~]# kubectl apply -f kube-prometheus/setup/
[root@k8s-master ~]# kubectl apply -f kube-prometheus/node-exporter

注意设置污点:

[root@k8s-master ~]# kubectl taint nodes k8s-master key1=value1:NoSchedule
[root@k8s-master ~]# kubectl apply -f kube-prometheus/kube-state-metrics
[root@k8s-master ~]# kubectl apply -f kube-prometheus/prometheus
[root@k8s-master ~]# kubectl apply -f kube-prometheus/grafana
[root@k8s-master ~]# kubectl apply -f kube-prometheus/alertmanager

4、查看Pod状态

[root@k8s-master ~]# kubectl get pods --all-namespaces -o wide


prometheus告警rules prometheus告警恢复值发送_prometheus告警rules_03


查看svc

[root@k8s-master ~]# kubectl get svc --all-namespaces -o wide


prometheus告警rules prometheus告警恢复值发送_数据源_04


5、登录prometheus

(1)查看运行数据状态

http://192.168.1.2:30090/targets


prometheus告警rules prometheus告警恢复值发送_数据源_05


(2)登录grafana

访问http://192.168.1.2:32000,输入用户名和密码(默认用户:admin,密码:admin)


prometheus告警rules prometheus告警恢复值发送_数据源_06


导入源数据,默认已经导入。


prometheus告警rules prometheus告警恢复值发送_数据库_07


(3)使用prometheus


prometheus告警rules prometheus告警恢复值发送_数据库_08


prometheus告警rules prometheus告警恢复值发送_prometheus告警rules_09


prometheus告警rules prometheus告警恢复值发送_数据库_10


(4)监控模板

请到https://grafana.com/grafana/dashboards查看和下载有两种方式:

A、直接输入模板ID,自动下载;

B、下载模板json文件,然后导入。