Prometheus 普罗米修斯1.8/2.2.1“刮给”;“无代币”;错误-promtool仅显示少量警告

Prometheus 普罗米修斯1.8/2.2.1“刮给”;“无代币”;错误-promtool仅显示少量警告,prometheus,Prometheus,我别无选择。我安装了一个名为Confluence Prometheus exporter的系统,它工作了几个月。现在在迁移到Prometheus 2.x时,我注意到它失败了(但它现在在1.8上也失败了,所以这不是因为迁移)。我不知道目标系统有什么变化 到目前为止我检查过的东西: 刮取URL(https)正确,可以检索 promtool检查指标给出了一些警告,但没有错误 (汇流\集群\恐慌\计数计数器指标应具有“\总计”后缀) 响应没有BOM表 其他https目标被删除,没有问题 双重检查配置

我别无选择。我安装了一个名为Confluence Prometheus exporter的系统,它工作了几个月。现在在迁移到Prometheus 2.x时,我注意到它失败了(但它现在在1.8上也失败了,所以这不是因为迁移)。我不知道目标系统有什么变化

到目前为止我检查过的东西:

  • 刮取URL(https)正确,可以检索
  • promtool检查指标给出了一些警告,但没有错误 (汇流\集群\恐慌\计数计数器指标应具有“\总计”后缀)
  • 响应没有BOM表
  • 其他https目标被删除,没有问题
  • 双重检查配置
  • enabled--log.level=debug,但没有额外的输出
如何获取更多调试信息?这是我在普罗米修斯日志文件中得到的:

May  8 10:38:59 prometheus-2-test prometheus[3404]: level=warn ts=2018-05-08T10:38:59.038653969Z caller=scrape.go:697 component="scrape manager" scrape_pool=confluence-prod target="https://myserver:443/plugins/servlet/prometheus/metrics?token=feakingSecurityToken" msg="append failed" err="no token found"
我认为scarpe.go中对应的行是:

        // A failed scrape is the same as an empty scrape,
    // we still call sl.append to trigger stale markers.
    total, added, appErr := sl.append(b, start)
    if appErr != nil {
        level.Warn(sl.l).Log("msg", "append failed", "err", appErr)
        // The append failed, probably due to a parse error or sample limit.
        // Call sl.append again with an empty scrape to trigger stale markers.
        if _, _, err := sl.append([]byte{}, start); err != nil {
            level.Warn(sl.l).Log("msg", "append failed", "err", err)
        }
    }

在升级到较新的导出器版本后,再次访问此。在一个非常精细的刮取目标URL上仍然存在相同的“无令牌”错误

URL位于Apache 2.4反向代理的后面,该代理执行SSL终止(Confluence使用Tomcat托管端点)。Apache有一个典型的HTTPS设置(
RewriteRule^HTTPS://%{SERVER_NAME}%{REQUEST_URI}[END,QSA,R=permanent],在443 vhost RequestHeader上设置X-Forwarded-Proto“HTTPS”

我们注意到,当在Apache中临时删除HTTPS重定向并使用HTTP方案时,普罗米修斯抓到了目标

我们最终找到的解决方案是将Prometheus中的scrape URL保留为HTTP,并让Apache重定向到HTTPS。