Prometheus集成Jenkins时target返回HTTP 404 Not Found问题咨询
核心原因
90%以上该场景的报错都是YAML配置缩进不规范导致的:
- Prometheus采用YAML格式加载配置,对缩进层级要求极其严格,你贴出的配置中
metrics_path、scheme、static_configs等job子属性缩进过量,不属于jenkins这个job的有效配置,Prometheus加载时会直接使用默认参数发起请求:默认用HTTP协议、默认抓取路径为/metrics、默认请求80端口,实际请求地址变成http://jenkins_host/metrics,自然返回404。 - 剩余小概率原因包括:Jenkins前置反向代理的访问规则拦截了Prometheus服务器的请求、Jenkins HTTPS端口非默认443但配置中未指定、安全插件拦截了Prometheus的抓取请求。
解决步骤
- 修正配置缩进,标准可用的配置格式如下(注意所有job子属性和
job_name字段保持统一缩进层级):
scrape_configs: - job_name: 'jenkins' metrics_path: /prometheus scheme: https static_configs: - targets: ['jenkins_host'] # 如果Jenkins HTTPS用的非443端口,这里要写成jenkins_host:端口号 tls_config: insecure_skip_verify: true
- 用Prometheus自带的配置校验工具验证语法正确性,执行命令:
promtool check config 你的prometheus.yml配置文件绝对路径
命令返回SUCCESS说明配置语法无问题。 - 重载Prometheus配置生效,可执行以下命令热加载无需重启:
curl -X POST http://你的Prometheus服务地址/-/reload - 如果重载后Target仍然报404,登录到Prometheus所在服务器执行以下命令模拟抓取,验证链路连通性:
curl -v -k https://jenkins_host/prometheus- 如果该命令返回404,排查Jenkins前置反向代理的访问白名单、路径转发规则,确认Prometheus服务器出口IP有权限访问该路径
- 如果该命令正常返回指标内容,检查Jenkins侧是否安装了额外的安全拦截插件,确认
/prometheus路径已放开匿名访问权限
内容的提问来源于stack exchange,提问作者Kulandesu
相关产品推荐
相关产品推荐

