自动发现(Service Discovery)是 Prometheus 的一个关键功能,它允许 Prometheus 自动识别和监控新的目标,而无需手动配置每个目标。自动发现通常用于监控动态变化的环境,如容器编排平台(如 Kubernetes)、云服务(如 AWS、Azure)以及服务发现系统(如 Consul)中的应用程序和服务。
使用场景:
使用技巧:
scrape_configs
部分,以指定如何发现目标。常见的配置包括 Kubernetes 服务发现、EC2 目标发现、Consul 服务发现等。以下是一个简单的使用案例和示例配置:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
regex: my-app
action: keep
- job_name: 'ec2-instances'
ec2_sd_configs:
- region: us-east-1
relabel_configs:
- source_labels: [__meta_ec2_tag_environment]
regex: production
action: keep
在这个示例中,我们配置了两个作业(jobs),一个用于从 Kubernetes 中发现和监控具有 app=my-app
标签的 Pod,另一个用于从 AWS EC2 中发现和监控具有 environment=production
标签的实例。
自动发现是 Prometheus 在动态环境中有效监控的关键工具,它允许您自动管理和监控新的目标,确保您的监控系统与环境的变化保持同步。