PushGateway 数据操作示例
正常情况我们会使用 Client SDK 推送数据到 pushgateway, 但是我们还可以通过 请求API从而达到数据推送的目的。示例如下:使用Shell脚本echo "xxxo 18" | curl --data-binary @- http://192.168.0.51:9091/metrics/job/prometheus...
·
客户端使用push的方式上报监控数据到pushgateway,prometheus会定期从pushgateway拉取数据。使用它的原因主要是:
- Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙原因,导致Prometheus 无法直接拉取各个 target数据。
- 在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。
正常情况我们会使用 Client SDK 推送数据到 pushgateway, 但是我们还可以通过 请求API从而达到数据推送的目的。示例如下:
使用Shell脚本
(1)新增数据
echo "xxoo 18" | curl --data-binary @- http://192.168.0.51:9091/metrics/job/prometheus
--data-binary 表示发送二进制数据,注意:它是使用POST方式发送的!
添加更多更复杂数据,通常数据会带上 instance, 表示来源位置:
cat <<EOF | curl --data-binary @- http://192.168.0.51:9091/metrics/job/some_job/instance/some_instance
# TYPE some_metric counter
some_metric{name="knight"} 42
age 18
EOF
(2)删除数据
curl -X DELETE http://192.168.0.51:9091/metrics/job/some_job/instance/some_instance
使用Python的SDK去操作
安装模块,本文使用flask,实际使用的是SDK的方式
pip3 install flask
pip3 install prometheus_client
Metrics:
Prometheus提供4种类型Metrics:Counter, Gauge, Summary和Histogram
(1)Counter
Counter可以增长,并且在程序重启的时候会被重设为0,常被用于任务个数,总处理时间,错误个数等只增不减的指标。
示例代码:
import prometheus_client
from prometheus_client import Counter
from prometheus_client.core import CollectorRegistry
from flask import Response, Flask
app = Flask(__name__)
requests_total = Counter("request_count", "Total request cout of the host")
@app.route("/metrics")
def requests_count():
requests_total.inc()
# requests_total.inc(2)
return Response(prometheus_client.generate_latest(requests_total),
mimetype="text/plain")
@app.route('/')
def index():
requests_total.inc()
return "Hello World"
if __name__ == "__main__":
app.run(host="0.0.0.0")
更多推荐
已为社区贡献3条内容
所有评论(0)