Prometheus 1.8 / 2.2.1 scrape给出了“无令牌”错误 - promtool只显示了一些警告

时间:2018-05-08 10:42:57

标签: prometheus

我在这里没有选择。我安装了Confluence Prometheus出口商,该出口商已经工作了几个月。现在在迁移到Prometheus 2.x时我注意到它失败了(但它现在也在1.8上执行此操作,因此它不是由于迁移)。我不知道目标系统有任何变化。

到目前为止我检查过的事情:

  • 抓取网址(https)正确且可以检索
  • promtool check metrics提供了一些警告,但没有错误 (confluence_cluster_panic_count计数器指标应具有“_total”后缀)
  • 响应没有BOM
  • 其他https目标在没有问题的情况下被抓取
  • double checked config
  • 启用--log.level = debug,但没有其他输出

如何获取更多信息进行调试?这是我在prometheus logfile中得到的:

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)
        }
    }

1 个答案:

答案 0 :(得分:0)

升级到较新的导出器版本后重新访问此内容。仍然相同"没有令牌"完美的刮擦目标网址上的错误。

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

我们注意到暂时删除了Apache中的HTTPS重定向并使用HTTP方案Prometheus刮掉了目标。

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