参考文档:https://edu.51cto.com/course/30254.html
一、为什么需要服务发现
Prometheus Server 的数据抓取工作基于 Pull 模型,因而,它必须要事先知道各 target 的位置,然后才能从相应的 Exporter 或 Instrumentation 中抓取数据。
对于小型的系统环境,使用 static_configs 指定各 target 即可解决问题,但是对于较大的集群不适用,尤其不适用于使用容器和基于云的实例的动态集群,因为这些实例会经常出现变化、创建、或销毁的情况。Prometheus 为此专门设计了一组服务发现机制,以便于能够基于服务注册中心自动发现、检测、分类可被监控的各 target ,以及更新发生了变动的 target。
Prometheus 可以集成到多种不同的开源服务发现工具上,以便动态发现需要监控的目标。Prometheus 可以很好的集成到 Kubernetes 平台上,通过其 API Server 动态发现各类被监控的 Pod、Service、Endpoint、Ingress 及 Node 对象,还支持基于文件实现的动态发现。
二、prometheus目前支持的服务发现类型
prometheus目前支持的服务发现类型主要有如下几种:
1、基于文件的服务发现
2、基于consul的服务发现
3、基于k8s API的服务发现
4、基于eureka的服务发现
5、基于nacos的服务发现
6、基于DNS的服务发现
三、什么是基于consul的服务发现
我们大家都知道,Consul是一个服务配置、发现的中间件,常用来作为服务注册中心使用。
在基于文件的服务发现中提到,target的更新需要修改target.json,本质上没有解决运维操作的步骤。而基于Consul的服务发现,则是通过节点主动注册信息到Consul,prometheus通过和Consul集成,从Consul中以http协议获取target的信息。
具体实现案例详情请看参考文档