You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Prometheus+Grafana中获取各target的内存使用情况

首先纠正当前配置的核心问题

你当前将业务服务端口(8000~8040)全部加入node采集Job的配置是错误的:Node Exporter默认只会在9100端口暴露整机级别的系统指标,其余业务端口没有对应的Node Exporter metrics接口,无法通过这个配置拿到单服务的资源数据。


实现单端口对应服务的内存使用率采集

Node Exporter本身只采集整机维度的资源,要拿到单服务/单进程的内存数据,根据你的部署方式选择对应方案:

  • 容器部署业务:部署cAdvisor采集容器维度资源指标,Prometheus对接cAdvisor后,使用如下PromQL即可查询每个容器对应的内存使用率:
    sum(container_memory_usage_bytes{image!="", container_label_port=~".+"}) by (container_label_port) / sum(container_spec_memory_limit_bytes{image!="", container_label_port=~".+"}) by (container_label_port) * 100
    
    可以直接按端口标签分组输出每个服务的内存使用率,匹配你需要的展示效果。
  • 裸机部署进程:部署Process Exporter,配置规则匹配对应端口的业务进程,采集进程级别的资源指标,使用如下PromQL查询:
    100 - (sum by (name, instance) (process_memory_bytes{job="process"}) / sum by (instance) (node_memory_MemTotal_bytes) * 100)
    

多节点独立运行Node Exporter的配置方法

要通过instance标签区分不同节点的监控数据,操作步骤如下:

  1. 在每台需要监控的节点上单独部署Node Exporter,默认使用9100端口即可,同一主机部署多实例时再调整端口。
  2. 修改Prometheus配置的scrape_configs部分,将所有节点的IP:9100加入node Job的targets:
    scrape_configs:
      - job_name: node
        scrape_interval: 15s
        static_configs:
          - targets: 
              - '192.168.1.10:9100' # 节点1
              - '192.168.1.11:9100' # 节点2
              - '192.168.1.12:9100' # 节点3
            # 可自定义分组标签
            labels:
              env: production
    
  3. Prometheus会自动给所有采集到的node指标新增instance标签,标签值为你配置的IP:端口,直接通过该标签即可过滤不同节点的监控数据。Grafana中可配置instance变量,查询语句填写label_values(node_cpu_seconds_total, instance)即可实现节点下拉选择切换。

内容的提问来源于stack exchange,提问作者PythonNewbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:09:03