普罗米修斯 json 指标

Prometheus json metrics

我要监控的应用程序提供了一个 api 端点用于运行状况检查,该端点响应 json 中的指标。例如:

$ curl  https://example.com/api/stats
{"status":"success","code":0,"data":{"UserCount":140,"UserCountActive":23}}

我已经设置了 Prometheus blackbox_exporter 来监控这个端点 returns 200 Ok 但是我也希望获得这些指标。我了解仪器直接从应用程序导出此数据。但是由于该应用程序已经在 json 对象中导出了我想要的内容,因此我更愿意方便地不维护我自己的该软件分支以包含检测所需的 Prometheus 库。我应该如何使用 json 中的指标?

目前没有官方导出器来抓取 JSON 端点。可能是因为它是 easy to write one from scratch 并且任何通用解决方案都必须使用一些默认行为,例如构建从路径到数据的度量名称,但不考虑度量的类型;或任何相关标签以应用或解析日期等等。

您可以使用首选搜索引擎轻松找到可用的 JSON 出口商。它们可以随手替换 blackbox_exporter。鉴于提供的样品,它们应该很合适。

我想提的一个解决方案是 exporter_exporter,因为我发现它对于在等待临时导出器的同时快速实现导出器很有用。它可用于执行生成普罗米修斯指标的脚本。 在您的情况下,编写一个 python 脚本来抓取 Json 端点并使用它在标准输出中编写相应的普罗米修斯格式非常容易。

您可以使用 Prometheus JSON Exporter (https://github.com/prometheus-community/json_exporter) 调用您的服务并从 JSON

中提取值

部署 Prometheus JSON Exporter 可以被 Prometheus 拉动并且 Exporter 可以命中你的 URL

对于您的 JSON 示例 config.xml 对于 JSON 出口商将像

---
metrics:
  - name: user_count
    path: "{$.data.UserCount}"
    type: value
    help: UserCount value
  - name: user_count_active
    path: "{$.data.UserCountActive}"
    type: value
    help: UserCountActive value

并在 Prometheus 中抓取配置 (prometheus.yml):

    ## gather the metrics from third party json sources, via the json exporter
  - job_name: json_user_stat
    metrics_path: /probe
    static_configs:
      - targets:
          # URL of each API for json exporter
          - https://example.com/api/stats
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        # Location of the json exporter's real <hostname>:<port> from Prometheus
        replacement: json_exporter:7979

首先通过点击 URL 测试您的导出器(如果您想在浏览器之外使用,请对“目标”值进行编码,浏览器将自动编码)http://json_exporter:7979/ probe?target=https://example.com/api/stats 并检查输出

# HELP UserCount value
# TYPE logstash_audit_events_in untyped
user_count{} 140
# HELP lUserCountActive value
# TYPE logstash_audit_events_out untyped
user_count_active{} 23

如果你明白了 - 在 Prometheus 中配置 scape 并享受你的指标