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

Prometheus界面无法显示全部Azure VM节点排查求助

问题:Prometheus仅能识别自身节点,其余Node Exporter节点无法显示

我在3台Azure虚拟机上配置了Prometheus并安装了Node Exporter,但Prometheus界面里只能看到安装Prometheus的节点,另外两台的Node Exporter节点完全没显示。手动在配置文件里加了地址也没用。

我的prometheus.yml配置文件

#jinja2: lstrip_blocks: "True"
{{ prometheus_var_config | to_nice_yaml(indent=2) }}
{% if prometheus_node_exporter_group %}
- job_name: node_exporter
  scrape_interval: 15s
  metrics_path: /metrics
static_configs:
  - targets:
{% for server in groups[prometheus_node_exporter_group] %}
    - '{{ server }}:9100'
{% endfor %}
{% endif %}

Prometheus默认配置文件(defaults)

# defaults file for roles/prometheus
prometheus_dir_configuration: "/etc/prometheus"
prometheus_retention_time: "365d"
prometheus_scrape_interval: "30s"
prometheus_node_exporter: true
prometheus_node_exporter_group: "all"
prometheus_env: "production"
prometheus_var_config:
  global:
    scrape_interval: "{{ prometheus_scrape_interval }}"
    evaluation_interval: 5s
    external_labels:
      env: '{{ prometheus_env }}'
  scrape_configs:
    - job_name: prometheus
      scrape_interval: 15s
      static_configs:
        - targets: ['{{ inventory_hostname }}:9090']

问题排查与解决

1. 修复配置文件缩进错误

你的prometheus.yml模板存在缩进错误:static_configs和- job_name: node_exporter处于同一缩进级别,这会导致Node Exporter的job配置完全失效。static_configs必须缩进在对应job的层级下,正确模板如下:

#jinja2: lstrip_blocks: "True"
{{ prometheus_var_config | to_nice_yaml(indent=2) }}
{% if prometheus_node_exporter_group %}
- job_name: node_exporter
  scrape_interval: 15s
  metrics_path: /metrics
  static_configs:  # 缩进2个空格,与job的其他参数同级
    - targets:
{% for server in groups[prometheus_node_exporter_group] %}
        - '{{ server }}:9100'  # 再缩进2个空格,属于targets列表项
{% endfor %}
{% endif %}

渲染后检查最终的/etc/prometheus/prometheus.yml,确保node_exporter job下的static_configs和targets层级正确。

2. 验证Inventory与变量生效

  • 确认Ansible inventory的all组确实包含3台VM,无拼写或分组错误
  • 执行Playbook时,检查是否有其他地方覆盖了prometheus_node_exporter_group变量,导致其值不是all
  • 查看渲染后的最终配置文件,确认node_exporter job的targets列表包含另外两台VM的地址

3. 测试网络连通性

在Prometheus所在VM上,执行命令测试目标VM的Node Exporter端口:

curl http://<目标VM的IP/主机名>:9100/metrics

如果无法访问,排查:

  • Azure VM的网络安全组(NSG)是否开放了9100端口的入站规则
  • 目标VM上的Node Exporter服务是否正常运行:systemctl status node_exporter
  • 目标VM的防火墙是否允许9100端口的流量

4. 重启Prometheus服务

修改配置后必须重启服务才能生效:

systemctl restart prometheus

重启后查看日志确认无配置加载错误:

journalctl -u prometheus -f

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:43:20