PushGateway 数据操作示例

正常情况我们会使用 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")

猜你喜欢

转载自blog.csdn.net/knight_zhou/article/details/106154563