微服务配置
- 安装Exporter:在每个微服务所在的服务器上安装对应操作系统或应用的Exporter,如Node Exporter用于收集操作系统层面指标(包括CPU使用率)。以Linux系统安装Node Exporter为例,可从官方下载对应二进制文件,解压后赋予执行权限。
- 配置Exporter:部分Exporter可能需要简单配置,例如指定监听地址和端口等。Node Exporter默认监听
0.0.0.0:9100
,一般无需额外配置即可收集CPU使用率等指标。
- 暴露指标接口:确保Exporter将指标数据通过HTTP接口暴露出来,例如Node Exporter会在
http://<server-ip>:9100/metrics
路径下提供指标数据,微服务可通过健康检查等机制确保Exporter正常运行且指标可访问。
Prometheus发现目标微服务及获取指标数据流程
- 静态配置:在Prometheus的配置文件(
prometheus.yml
)中,通过static_configs
字段手动指定目标微服务的Exporter地址。例如:
scrape_configs:
- job_name: 'node-exporter'
static_configs:
- targets: ['<server-1-ip>:9100', '<server-2-ip>:9100']
- 服务发现:
- 基于文件的服务发现:Prometheus支持通过定期读取文件来发现目标。创建一个包含目标Exporter地址的文件(如
targets.json
),在prometheus.yml
中配置:
scrape_configs:
- job_name: 'node-exporter'
file_sd_configs:
- files:
- 'targets.json'
- **基于DNS的服务发现**:若微服务通过DNS记录注册(如SRV记录),Prometheus可配置通过DNS发现目标。在`prometheus.yml`中配置:
scrape_configs:
- job_name: 'node-exporter'
dns_sd_configs:
- names: ['_prometheus._tcp.example.com']
type: 'SRV'
port: 9100
- **基于Kubernetes的服务发现**:在Kubernetes环境中,Prometheus可利用Kubernetes API进行服务发现。通过配置`kubernetes_sd_configs`,Prometheus可以发现Kubernetes集群中的所有Node Exporter服务,例如:
scrape_configs:
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs:
- role: node
relabel_configs:
- source_labels: [__address__]
regex: '(.*):10250'
replacement: '${1}:9100'
target_label: __address__
- 采集指标:Prometheus按照配置的时间间隔(默认1分钟,可在
prometheus.yml
中scrape_interval
字段配置),向已发现的目标微服务Exporter的指标接口(如http://<server-ip>:9100/metrics
)发送HTTP GET请求,获取包含CPU使用率等指标的文本格式数据,然后将这些数据进行解析、存储,供后续查询和可视化使用。