Prometheus Operator默认的监控指标并不能完全满足实际的监控需求,这时候就需要我们自己根据业务添加自定义监控。添加一个自定义监控的步骤如下:
1、创建一个ServiceMonitor对象,用于Prometheus添加监控项
2、为ServiceMonitor对象关联metrics数据接口的Service对象
3、确保Services对象可以正确获取到metrics数据
演示如何添加etcd集群的监控
1.etcd证书
对于etcd集群一般情况下,为了安全都是开启https认证方式,所以要想让prometheus访问etcd集群的监控数据,就需要提供相应的证书校验
cd -
就是通过静态pod的方式在集群当中运行的一个etcd的pod.查看etcd pod的运行方式. 输出到yaml文件中
方便使用ip直接访问到2379端口,因为只要有节点的ip或者修改成0.0.0.0:2379都可以。不然通过ip:2379访问不到metrics数据
存活探针
使用证书就可以访问到etcd集群
通过hostpath形式挂载进去的现在想要在etcd集群中访问到该证书
通过secert对象吧证书添加到对象当中
通过文件创建。就是genetric
kubectl -n monitoring create secret generic etcd-certs --from-file=/etc/kubernetes/pki/etcd/healthcheck-client.key --from-file=/etc/kubernetes/pki/etcd/healthcheck-client.crt --from-file=/etc/kubernetes/pki/etcd/ca.crt
secret/etcd-certs created
etcd-certs的secert创建成功
创建的etcd证书的secert的一个对象。在对象里面的值都是做了一个编码然后吧证书注入到prometheus的pod中去,因为想要在prometheus的一个pod中能访问到这个证书,通过更改文件
为什么要把etcd-certs添加到monitoring命名空间下?
因为这样在prometheus下面就能识别到了
这个k8s是部署在集群当中的prometheus的一个资源对象
可以看到刚才添加的证书
可以看到这两个pod已经更新成功
可以到该pod中查看etcd证书是否已经注入进来
看到该pod中已经注入证书了
也就是pod中已经有了访问etcd的证书开始创建service monitoring文件
监控名字name:etcd-k8s
标签: lables :
jobLabel: 就是取对应的lable的标签的名称去作为监控项的名字
就是jobLable的值是k8s-app,而k8s-app对应的值就是etcd-k8s
endpoints指定抓取etcd集群的endpoints
interval 30秒抓去一次
etcd通过https。所以添加证书
insecureSkipVerify: true. 不加校验证书可能会失败
加seletor匹配service
想要去匹配一个service具有k8s-app=etcd的service。在xx命名空间下
创建
创建service
spec:
因为吧etcd看作是集群外部的一个应用,所以不能通过selector去匹配集群中的pod,而是手动创建一个endpoints去指定etcd集群的访问地址,要手动创建endpoints就需要clusIP设置为none,
ports: 就是service的端口
- name: port就是刚才在service monitoring中定义了的
接着endpoints需要自己手动创建一个
metadata部分要和service的保持一致
这样endpoints就能和上面的service匹配了
subsets 指定endpoints的地址
修改啊!!!!
Prometheus 监控Redis的正确姿势(redis集群)
Prometheus 监控 Redis cluster,其实套路都是一样的,使用 exporter。
exporter 负责采集指标,通过 http 暴露给 Prometheus 拉取。granafa 则通过这些指标绘图展示数据。Prometheus 收集的数据还会根据你设置的告警规则判断是否要发送给 Alertmanager, Alertmanager 则要判断是否要发出告警。
Alertmanager 告警分为三个阶段
Inactive 触发告警的规则会被发送到这来。
Pending 你设置的等待时间,即规则里面的 for
Firing 发送告警到邮件、钉钉之类的
扯远了,开始监控 Redis cluster
redis_exporter 监控 Redis cluster
监控什么应用,使用的相应的 exporter,可以在官网查到。EXPORTERS AND INTEGRATIONS
Redis 使用 redis_exporter ,链接:redis_exporter
现在 Prometheus 访问redis,接下来创建 ServiceMonitor 对象即可
prometheus-serviceMonitorRedis.yaml