在Python和request.get
函数的帮助下,我能够从json.loads
中获取数据。数据包含一个实例列表,其中每个实例都有度量标准,如instance_id、status等。
我的问题是,我有没有办法把这些指标上传给普罗米修斯?我查看了推网关功能,但不确定这是否是正确的数据推送和存储方式。
我目前向Prometheus推送数据的工作如下:
from prometheus_client import CollectorRegistry, Gauge, push_to_gateway
from prometheus_client import Summary
registry1 = CollectorRegistry()
registry2 = CollectorRegistry()
s = Summary('request_latency_seconds', 'Description of summary', registry=registry1)
s.observe(4.7)
g = Gauge('job_last_success_unixtime', 'Last time a batch job successfully finished', registry=registry2)
g.set_to_current_time()
push_to_gateway('localhost:9091', job='batch_summary', registry=registry1)
push_to_gateway('localhost:9091', job='batch_gauge', registry=registry2)
然而,我不知道我应该推动什么度量类型(量规,摘要或其他什么?)
下面是我希望推送的实例数据的一个示例:
{'url': 'https://example.com',
'created': '2017-09-17-time',
'status_code': 200,
'instance_start': '2018-09-17-time', }
我之所以把这些数据推给Prometheus,是因为我想使用Grafana来获取这些数据并将它们可视化。
Grafana图的例子是:时间作为x轴,有状态代码的实例数: 200作为y轴。
任何想法或帮助都将不胜感激。谢谢!
发布于 2018-09-27 00:34:52
既然我做了类似的事情,我可以给你一些建议。您可以使用推网关进行“临时作业和批处理作业,以便向Prometheus公开它们的度量标准”,就像github页面上所说的那样。
我认为您需要摘要度量,但要确定,请阅读prometheus 文档页面上有关度量类型的文档。
您完成了第一部分,您通过推网关公开了您想要的度量标准,您可以始终通过web浏览器或curl检查它是否有效:
YOURIP:9091
如果您可以看到该端口上的一些数据,则必须在prometheus服务器上设置您的配置。
您需要告诉prometheus服务器,即应该刮掉节点推网关的度量标准。您要查找的文件是"prometheus.yml“,它的位置取决于安装prometheus服务器的位置。
当你打开它时,你应该写这样的东西:
- job_name: 'SomeJob-Name'
static_configs:
- targets: ['YourIPADDRESS:9091']
labels:
environment: 'prod'
在此之后,重新启动prometheus服务器,来自节点的数据应该在路径YourPrometheusIP:9090/targets.上可见。
https://stackoverflow.com/questions/52484052
复制相似问题