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

如何在Prometheus告警邮件中添加节点主机名(含IP和端口)

在Prometheus告警邮件中同时显示节点主机名、IP和端口

要实现这个需求,核心是让Prometheus的告警规则能获取到节点主机名标签,以下是两种可行方案:

方案一:通过关联node_exporter内置指标获取主机名

node_exporter默认会暴露node_uname_info指标,其中包含nodename标签(对应节点主机名)。我们可以通过PromQL的标签关联,把主机名标签附加到up指标上:

  1. 修改告警规则的expr语句,用group_left关联node_uname_info:
- alert: instance_down
  expr: 'up{job="node_exporter"} == 0 * on(instance) group_left(nodename) node_uname_info{job="node_exporter"}'
  for: 1m
  labels:
    severity: critical
  annotations:
    title: 'Instance {{ $labels.nodename }} ({{ $labels.instance }}) down'
    description: >-
      Node {{ $labels.nodename }} ({{ $labels.instance }}) of job {{ $labels.job }} has been down for
      more than 1 minute.

这样$labels.nodename就能直接调用节点主机名,同时保留$labels.instance的IP:端口格式。

方案二:让node_exporter直接携带主机名标签

修改node_exporter的启动参数,添加自定义主机名标签,这样所有暴露的指标都会自带主机名:

  1. 启动node_exporter时添加--labels参数(要求node_exporter版本≥0.18):
./node_exporter --labels="nodename=$(hostname)"
  1. 无需修改告警的expr,直接在annotations中引用$labels.nodename:
- alert: instance_down
  expr: 'up{job="node_exporter"} == 0'
  for: 1m
  labels:
    severity: critical
  annotations:
    title: 'Instance {{ $labels.nodename }} ({{ $labels.instance }}) down'
    description: >-
      Node {{ $labels.nodename }} ({{ $labels.instance }}) of job {{ $labels.job }} has been down for
      more than 1 minute.

两种方案都能实现同时显示主机名、IP和端口的需求,你可以根据现有部署环境选择合适的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:33:24