参考文章: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的服务发现
三、什么是基于k8s API的服务发现
基于 Kubernetes API 的服务发现机制支持将 API Server 中的 Pod、Service、Endpoint、Ingress 和 Node 等资源类型下的各资源对象作为 target 对其进行监控。这些资源对象分别由各自的发现机制进行定义,负责发现每种类型资源对象的组件,在 Pro