需检查指标端点、抓取配置、告警规则、服务发现及指标可用性:一、验证/metrics端点可访问且格式合规;二、在prometheus.yml中添加正确scrape_config;三、配置并加载hermes_alerts.yml告警规则;四、K8s环境改用kubernetes_sd_configs动态发现;五、通过Prometheus表达式浏览器确认指标存在且告警条件有效。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您需要为HermesAgent实现监控告警能力,但其指标未被Prometheus正确采集或告警未触发,则可能是由于抓取配置缺失、目标发现失败、指标路径错误或告警规则未加载所致。以下是解决此问题的步骤:
一、确认HermesAgent暴露指标端点
HermesAgent必须以HTTP方式暴露符合Prometheus格式的指标(如/metrics路径),且响应内容为纯文本,每行以指标名称开头,后跟标签、值和时间戳。Prometheus仅能通过Pull模式拉取该端点数据,因此需首先验证该端点可访问且格式合规。
1、使用curl命令检查HermesAgent指标端点是否返回有效内容:
curl -s http://
2、确认响应中存在类似hermes_agent_up 1或hermes_agent_http_request_total{method="POST",status="200"} 42的指标行
3、若返回404、空内容或非文本格式,则需检查HermesAgent是否启用metrics endpoint,并确认其监听地址与端口已对外放开防火墙策略
二、在prometheus.yml中添加抓取任务
抓取任务(scrape_config)定义了Prometheus如何定位并拉取HermesAgent指标。必须确保job_name唯一、static_configs中目标地址准确、metrics_path与实际暴露路径一致,且scheme匹配(http或https)。
1、编辑prometheus.yml文件,在scrape_configs列表末尾新增如下配置块:
2、添加以下YAML片段(请替换
- job_name: 'hermes-agent'
static_configs:
- targets: ['
metrics_path: '/metrics'
scheme: http
3、保存文件后,向Prometheus进程发送SIGHUP信号或调用reload接口触发重载:
curl -X POST http://localhost:9090/-/reload
4、登录Prometheus Web UI(http://
三、配置HermesAgent专属告警规则
告警规则需以独立文件形式存于rule_files指定路径下,并在prometheus.yml中显式引用。规则应基于HermesAgent特有指标(如hermes_agent_up、hermes_agent_queue_length、hermes_agent_http_request_duration_seconds)定义异常条件,避免误报。
1、创建告警规则文件,例如/etc/prometheus/rules/hermes_alerts.yml
2、在该文件中写入以下规则(示例):
groups:
- name: hermes-agent-alerts
rules:
- alert: HermesAgentDown
expr: up{job="hermes-agent"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: "HermesAgent instance is down"
description: "HermesAgent at {{ $labels.instance }} has been unreachable for more than 2 minutes"
3、在prometheus.yml的global段下方添加rule_files配置项(若尚不存在):
rule_files:
- "/etc/prometheus/rules/hermes_alerts.yml"
4、执行配置重载,并访问Alerts页面,确认HermesAgentDown规则状态为inactive(正常)或firing(已触发)
四、通过服务发现自动管理HermesAgent实例
当HermesAgent部署于Kubernetes环境时,静态配置易失效。应改用服务发现机制(如kubernetes_sd_configs),由Prometheus动态感知Pod增删,自动更新target列表,确保监控覆盖始终与实际运行实例一致。
1、确保HermesAgent Pod已正确打标,例如添加label:
app: hermes-agent
2、在prometheus.yml的scrape_configs中替换原有static_configs为以下配置:
- job_name: 'hermes-agent-k8s'
kubernetes_sd_configs:
- role: pod
namespaces:
names: ['default'] # 替换为实际命名空间
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
action: keep
regex: hermes-agent
- source_labels: [__meta_kubernetes_pod_phase]
action: keep
regex: Running
- source_labels: [__meta_kubernetes_pod_container_port_number]
action: keep
regex: "8080" # 替换为HermesAgent实际metrics端口
- source_labels: [__meta_kubernetes_pod_ip, __meta_kubernetes_pod_container_port_number]
target_label: __address__
replacement: $1:$2
3、保存配置并重载,随后在Targets页面查看job_name为hermes-agent-k8s的targets是否随Pod上线/下线实时变化
五、验证指标可用性与告警触发逻辑
Prometheus内置表达式浏览器是验证指标存在性与告警条件准确性的直接手段。必须在Alerts页面看到规则处于active状态前,先确认底层指标可查、标签匹配无误、时间窗口内数据连续,否则告警将始终处于pending或inactive状态。
1、访问Prometheus Web UI,进入Graph页面
2、在查询框输入:hermes_agent_up,点击Execute,确认返回结果中instance标签值与实际部署地址一致,且值为1
3、输入:count by (instance) (hermes_agent_http_request_total[5m]),验证过去5分钟内是否有请求计数增长
4、输入:hermes_agent_queue_length > 1000,模拟高队列场景,观察是否立即返回样本;若无返回,说明该指标未被HermesAgent暴露或采集失败
5、在Alerts页面搜索HermesAgentDown,确认其State列显示为inactive(表示当前健康),或手动停掉HermesAgent进程后等待2分钟,观察是否转为firing











