概述
Prometheus Server的数据抓取工作于Pull模型,因而,它必需要事先知道各Target的位置,然后才能从相应的 Exporter 或 Instrumentation 中抓取数据
对于小型的系统环境来说,通过static_configs指定各Target便能解决问题,这也是最简单的配置方法;
- 每个Targets用一个网络端点(ip:port)进行标识;
对于中大型的系统环境或具有较强动态性的云计算环境来说,静态配置显然难以适用;
因此,Prometheus为此专门设计了一组服务发现机制,以便于能够基于服务注册中心(服务总线)自动发现、检测、分类可被监控的各Target,以及更新发生了变动的Target;
Prometheus可集成的服务发现机制
不同场景中,服务注册中心的指代也会有所不同
公有或私有IaaS云自身保存有平台上的所有资源信息,其API Server便可作为Prometheus的服务发现媒介;
- azure、ec2、digitalocean、gce、hetzner、
Prometheus也可以集成到多种不同的开源服务发现工具上,以动态发现需要监控的目标;
- Consul、Eureka Zookeeper Serverset或Airbnb Nerve等
Prometheus也可以很好地集成到Kubernetes平台上,通过其API Server动态发现各类被监控的Pod(容器集)、Service、Endpoint、Ingress和Node对象;
- 它也支持基于dockerswarm和marathon两款编排工具进行服务发现;
Prometheus还支持基于DNS或文件的动态发现机制;