上一篇文章讲述了k8s部署consul集群
接下来讲一下prometheus如何配置consul以达到服务自动发现
这个是prometheus的config配置
![af6ab05633d78d529ab506ffcb35a691.png](https://img-blog.csdnimg.cn/img_convert/af6ab05633d78d529ab506ffcb35a691.png)
server是你consul的地址,services是你prometheus作为target的服务名称,
realable_configs是你需要打上的标签,这个稍后在consul注册服务的meta里面会提到。
然后是consul注册服务:
![1376ce1be0ca0d8c9750aa17b44b38ca.png](https://img-blog.csdnimg.cn/img_convert/1376ce1be0ca0d8c9750aa17b44b38ca.png)
这个是刚刚在prometheus里配置的server name。
curl -X PUT -d '{
"id": "130000000173_1",
"name": "prometheus1_k8sCluster","address": "172.0.0.1","port": 9090,
"tags": ["clusterName-test"],
"meta":{
"clusterId":"130000000173",
"clusterName":"test0173",
"instance":"172.0.0.1:9080",
"targetType":"k8sCluster",
"tenant":"test",
"tenantId":"101"
}}' http://172.0.0.1:8500/v1/agent/service/register
这是consul注册服务的一个deamon请求。
id是consul的service_id,之后删除需要用到;name就是之前提到的server name,所有相同服务名称的服务都会放在这下面;address、port就是要采集的服务的地址和端口;meta是放一些其他数据,我主要用来放额外的lable的。因为我的target走的https,所以健康检查什么的去掉了,详细的consul注册服务接口可以参考文档 Consul by HashiCorp 。
注册完之后看一下效果:
![91fca55992e484752066883dd92900f6.png](https://img-blog.csdnimg.cn/img_convert/91fca55992e484752066883dd92900f6.png)
![144cc15934ac2eeff1b2db810d644e0b.png](https://img-blog.csdnimg.cn/img_convert/144cc15934ac2eeff1b2db810d644e0b.png)
这边注册成功之后大约2-3秒,prometheus的targets列表就会出现:
![54189173dcff509d892ccb7521d3948f.png](https://img-blog.csdnimg.cn/img_convert/54189173dcff509d892ccb7521d3948f.png)
然后prometheus就自动发现并开始采集了,之前注册时附带的lable也打上去了。
这样整个k8s集群内prometheus+consul的自动服务发现就算完成了。
转载请注明出处
有任何问题欢迎评论或者邮件