当前位置: 首页 > 知识库问答 >
问题:

普罗米修斯json指标

虞展
2023-03-14

我要监控的应用程序为健康检查提供了一个apiendpoint,该endpoint使用json中的指标进行响应。例如:

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

我已经设置了Prometheus blackbox\u exporter,以监视此endpoint是否返回200 Ok,但理想情况下,我也希望获得这些指标。我知道instrumentation直接从应用程序导出这些数据。但是,由于应用程序已经在导出json对象中我想要的内容,我更希望不维护我自己的这个软件分支,以便包含插装所需的Prometheus库。我应该如何使用json中的指标?

共有2个答案

骆雅昶
2023-03-14

您可以使用Prometheus JSON导出器(https://github.com/prometheus-community/json_exporter)调用您的服务并从JSON中提取值

部署普罗米修斯JSON导出器,它可以被普罗米修斯拉动,导出器可以点击您的URL

对于您的JSON示例config.xmlJSON导出器将类似于

---
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测试您的导出程序(请对“target”值进行编码如果您想在浏览器之外使用,浏览器将自动编码)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

如果你得到了它-在普罗米修斯中配置scape并享受你的指标

薛云瀚
2023-03-14

目前还没有官方的导出程序来获取JSONendpoint。可能是因为从头开始编写很容易,任何通用解决方案都必须使用一些默认行为,例如从数据路径构建度量名称,而不考虑度量的类型;或任何相关的标签来应用或解析日期。

您可以通过首选搜索引擎轻松找到可用的JSON导出器。他们可以很容易地取代blackbox\u导出器。考虑到提供的样品,它们应该是很合适的。

我想提到的一个解决方案是exporter\u exporter,因为我发现它有助于在等待临时exporter的同时快速实现exporter。它可以用于执行生成普罗米修斯度量的脚本。在您的例子中,编写一个python脚本来刮取Jsonendpoint并使用它在标准输出中编写相应的prometheus格式非常容易。

 类似资料:
  • 我将我的GKE API服务器升级到1.6,并正在将节点升级到1.6,但遇到了一个障碍... 我有一个prometheus服务器(版本1.5.2),运行在一个由Kubernetes部署管理的pod中,其中两个节点运行版本1.5.4Kubelet,一个新节点运行版本1.6。 但普罗米修斯仍然得到401。 更新:就像乔丹所说的kubernetes认证问题。在这里看到新的、更集中的问题;https://s

  • 我试图使用现有的Prometheus(集群外部)从EKS集群内部聚合所有的指标,EC2(CPU、ram、disk)和POD(CPU、ram、disk)。我开始使用node-exporter、kube-state-metrics添加数据,但我一直坚持部署metrics-server。使用helm I conf并安装它,和正在提取数据,但是有人能告诉我如何将所有这些都提取到外部的Prometheus吗

  • 我有一个启用了监视和日志记录的GKE集群(1.15)。到目前为止,我们一直使用metrics-server对StackDriver进行度量监控。对于其他自定义度量标准,我们使用了自定义度量标准适配器,该适配器使用Prometheus-to-SD将度量标准刮取并导出到stackdriver。 我想开始看看prometheus是否能给我们提供其他功能,比如HPA的聚合度量。 在GCP marketpl

  • 我正在使用带Spring靴2的SCDF。x metrics和SCDF metrics collector从我的Spring Boot应用程序收集指标。我真的不理解收集器关于聚合度量(aggregateMetrics)数据的逻辑。 当我获取为我的流收集的指标列表时,我只有以开头的指标,因此我只有平均值。我尝试了所有方法来查看其他指标,就像endpoint公开的指标一样。 我想我误解了指标的聚合方式。

  • 我在普罗米修斯使用spring boot2。我们使用Postgres作为数据库。普罗米修斯url没有获取数据库指标。 任何参考资料都会很有帮助。 我已经试过了 当我到达终点/普罗米修斯时,我得到了这个错误

  • 我把普罗米修斯和格拉法纳部署到我的集群里。 当我打开仪表板时,我不会获得pod CPU使用情况的数据。 当我检查Prometheus UI时,它显示pods 0/0向上,但是我的集群中有许多pods在运行。