借助Python request.get
和json.loads
函数,我能够从URL获取数据。数据包含一个实例列表,其中每个实例都具有诸如instance_id,状态等指标。
我的问题是,有什么方法可以将这些指标上传到Prometheus?我调查了pushgateway函数,但不确定这是否是进行数据推送和存储的正确方法。
我目前将数据推送到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轴。
任何想法或帮助将不胜感激。谢谢!
答案 0 :(得分:0)
由于我做了类似的事情,所以我可以给你一些指导。您可以按github页上的说明使用pushgateway进行“ 临时和批处理作业,以将其指标公开给Prometheus ”。
我认为您需要摘要指标,但是请确保阅读普罗米修斯docs页面上有关指标类型的文档。
您已经完成了第一部分,通过 pushgateway 公开了所需的指标,您始终可以通过Web浏览器或curl来检查其是否有效:
您的IP地址:9091
如果您可以在该端口上看到一些数据,则必须在 prometheus服务器上设置配置。
您需要告诉Prometheus服务器,该服务器应该抓取节点pushgateway的指标。您要查找的文件是“ prometheus.yml”,其位置取决于安装Prometheus服务器的位置。
当您打开它时,应该这样写:
- job_name: 'SomeJob-Name'
static_configs:
- targets: ['YourIPADDRESS:9091']
labels:
environment: 'prod'
在重新启动Prometheus服务器之后,来自节点的数据应该在路径 YourPrometheusIP:9090 / targets 上可见。