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_exporterjob的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
相关产品推荐
相关产品推荐

