MST

星途 面试题库

面试题:微服务架构下Prometheus如何采集微服务的CPU使用率指标

在微服务架构中,Prometheus用于监控各项指标。请阐述Prometheus采集微服务CPU使用率指标的基本流程,包括微服务需要做哪些配置,Prometheus如何发现目标微服务并获取指标数据。
30.0万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

微服务配置

  1. 安装Exporter:在每个微服务所在的服务器上安装对应操作系统或应用的Exporter,如Node Exporter用于收集操作系统层面指标(包括CPU使用率)。以Linux系统安装Node Exporter为例,可从官方下载对应二进制文件,解压后赋予执行权限。
  2. 配置Exporter:部分Exporter可能需要简单配置,例如指定监听地址和端口等。Node Exporter默认监听0.0.0.0:9100,一般无需额外配置即可收集CPU使用率等指标。
  3. 暴露指标接口:确保Exporter将指标数据通过HTTP接口暴露出来,例如Node Exporter会在http://<server-ip>:9100/metrics路径下提供指标数据,微服务可通过健康检查等机制确保Exporter正常运行且指标可访问。

Prometheus发现目标微服务及获取指标数据流程

  1. 静态配置:在Prometheus的配置文件(prometheus.yml)中,通过static_configs字段手动指定目标微服务的Exporter地址。例如:
scrape_configs:
  - job_name: 'node-exporter'
    static_configs:
      - targets: ['<server-1-ip>:9100', '<server-2-ip>:9100']
  1. 服务发现
    • 基于文件的服务发现: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__
  1. 采集指标:Prometheus按照配置的时间间隔(默认1分钟,可在prometheus.ymlscrape_interval字段配置),向已发现的目标微服务Exporter的指标接口(如http://<server-ip>:9100/metrics)发送HTTP GET请求,获取包含CPU使用率等指标的文本格式数据,然后将这些数据进行解析、存储,供后续查询和可视化使用。