pushgateway 的部署:
tar xf pushgateway-0.8.0.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/pushgateway-0.8.0.linux-amd64
./pushgateway --web.listen-address=":9091" --web.telemetry-path="/metrics" --persistence.interval=5m --persistence.file="persistence-data"
# 推送测试数据到 pushgateway
echo "some_metric 3.14" | curl --data-binary @- http://192.168.2.14:9091/metrics/job/some_job
添加更复杂的数据指标
cat <<EOF | curl --data-binary @- http://192.168.2.14:9091/metrics/job/some_job/instance/some_instance
# TYPE some_metric counter
some_metric{label="val1"} 42
# TYPE another_metric gauge
# HELP another_metric Just an example.
another_metric 2398.283
EOF
# 添加一个备份数据的job的metrics指标
cat <<EOF | curl --data-binary @- http://192.168.2.14:9091/metrics/job/backupdb/instance/1.1.1.1
# TYPE some_metric counter
backup_status{label="val1"} 1
# TYPE another_metric gauge
# HELP another_metric Just an example.
backuptime 34
EOF
# 添加一个归档数据的job的metrics指标
cat <<EOF | curl --data-binary @- http://192.168.2.14:9091/metrics/job/archivedb/instance/2.2.2.2
# TYPE some_metric counter
archive_status{label="val1"} 1
# TYPE another_metric gauge
# HELP another_metric Just an example.
archivetime 120
EOF
删除某个组下的某实例的所有数据:
curl -X DELETE http://192.168.2.14:9091/metrics/job/some_job/instance/some_instance
删除某个组下的所有数据:
curl -X DELETE http://192.168.2.14:9091/metrics/job/some_job
可以发现 pushgateway 中的数据我们通常按照 job 和 instance 分组分类,所以这两个参数不可缺少。
因为 Prometheus 配置 pushgateway 的时候,也会指定 job 和 instance, 但是它只表示 pushgateway 实例,不能真正表达收集数据的含义。所以在 prometheus 中配置 pushgateway 的时候,需要添加 honor_labels: true 参数, 从而避免收集数据本身的 job 和 instance 被覆盖。
直接访问 http://192.168.2.14:9091 即可看到我们push上去的2个metrics
然后,再到Prometheus节目去配置下:
prometheus 中添加pushgateway的采集target:
- job_name: pushgateway
honor_labels: true
static_configs:
- targets: ['192.168.2.14:9091']
labels:
instance: pushgateway
重载配置文件:
kill -SIGHUP $(pidof prometheus)
然后,在 Prometheus的9090 web界面即可查看到。