k8s配置Prometheus监控时,可以通过servicemonitor的方式增加job,以此来增加监控项,但这种方式进行监控配置,只能手工一个一个的增加,如果k8s集群规模较大的情况下,这种方式会很麻烦。
一种方式是采用consul注册中心的方式进行自动发现。
另外一种方式是基于kubernetes_sd_configs的自动发现的方式配置增加监控项,本文主要讲解此种配置方式。
基于consul的自动发现
在安装consul后,可以通过指定consul读取特定配置文件的方式发现并加载监控项
但这种方式和Prometheus基于文件的动态发现没有本质区别,甚至还增加了系统的复杂度,并不可取。
可以通过调用consul的API的方式,让程序自动向consul进行注册,在Prometheus中配置consul的相关项,让其自动增加监控Target
#Prometheus主配置文件增加如下内容
#以便可以从consul中自动获取监控信息
- job_name: 'consul-prometheus'
consul_sd_configs:
- server: '10.0.12.8:8500'
services: []
# 注册服务
curl -X PUT -d '{"id": "consul-redis","name": "redis","address": "10.0.12.8","port": 6379,"tags": ["service"],"checks": [{"http": "http://10.0.12.8:6379/","interval": "5s"}]}' http://10.0.12.8:8500/v1/agent/service/register
# 查询指定节点以及指定的服务信息
[root@iZ2zejaz33icbod2k4cvy6Z ~]# curl http://10.0.12.8:8500/v1/catalog/service/consul-redis
#删除指定服务 redis为要删除服务的id
curl -X PUT http://10.0.12.8:8500/v1/agent/service/deregister/consul-redis