赞
踩
- Pushgateway 是一种中介服务,允许您从无法抓取的作业中推送指标。
- The Pushgateway is an intermediary service which allows you to push metrics from jobs which cannot be scraped. For details, see Pushing metrics.
- Pushgateway 是一种中介服务,允许您从无法抓取的作业中推送指标。有关详细信息,请参阅推送指标。
up
指标(每次抓取生成)的自动实例运行状况监控。所以,一般在 Prometheus 无法主动采集的情况下才会使用 Pushgateway,比如一些 shell 脚本,不存在客户端可以提供给 Prometheus 采集,就可以按照 Prometheus 的指标
内容格式
推送给 Pushgateway 来实现指标的采集,但是一定要对 Pushgateway 里面的历史数据做清理
同样也是在 k8s 内部署,并且开放 nodeport 端口给外部采集使用,部署的版本是:v1.8.0
--- apiVersion: v1 kind: Service metadata: annotations: labels: app: pushgateway name: pushgateway-svc namespace: monitor spec: type: NodePort ports: - name: gateway port: 9091 protocol: TCP targetPort: 9091 nodePort: 31091 selector: app: pushgateway
--- apiVersion: apps/v1 kind: Deployment metadata: annotations: labels: app: pushgateway name: pushgateway namespace: monitor spec: replicas: 1 selector: matchLabels: app: pushgateway template: metadata: annotations: prometheus.io/path: /metrics prometheus.io/port: "9091" prometheus.io/scrape: "true" prometheus.io/type: pushgateway labels: app: pushgateway spec: containers: - args: - "--web.listen-address=:9091" image: prom/pushgateway:v1.8.0 livenessProbe: failureThreshold: 60 initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 tcpSocket: port: gateway timeoutSeconds: 1 name: pushgateway ports: - containerPort: 9091 name: gateway protocol: TCP readinessProbe: failureThreshold: 60 initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 tcpSocket: port: gateway timeoutSeconds: 1 terminationGracePeriodSeconds: 0
因为之前在 Prometheus 里面做了针对 pod 的服务发现,所以可以直接从 Prometheus 的 targets 页面的 kubernetes-pod 里面找到 Pushgateway
http://<pushgateway ip>:<pushgateway prod>/metrics/job/<job name>/<label name>/<label value>
job name
可以自定义的,但是前面的 job 是固定的,不能修改,这个也是属于 label 之一的,后面的<label name>/<label value>
也是自己自定义的 label,都是会存在 TSDB 里面可以查询的- 下面就是往 Pushgateway 里面推送一个指标名为
hello_world
,值为2024
,label 有{exported_job="test-pushgateway",instance="192.168.11.167",study="pushgateway"}
的数据
echo "hello_world 2024" | curl --data-binary @- http://192.168.11.167:31091/metrics/job/test-pushgateway/instance/192.168.11.167/study/pushgateway
从 pushgateway 看到,已经有数据存在了
从 Prometheus 查看指标信息,由于我的服务发现里面配置过 job 和 instance 这两个 label,导致进入 Prometheus 之后,从 Pushgateway 采集的这两个 label 变成了 exported_instance 和 exported_job
先去生成一个不同 label 的数据
echo "hello_world_2024 2024" | curl --data-binary @- http://192.168.11.167:31091/metrics/job/test-pushgateway/instance/192.168.11.167/study/test_delete
echo "hello_world_2025 2025" | curl --data-binary @- http://192.168.11.167:31091/metrics/job/test-pushgateway/instance/192.168.11.167/study/test_delete
echo "hello_world_2025 2025" | curl --data-binary @- http://192.168.11.167:31091/metrics/job/test-pushgateway/instance/192.168.11.167/study/test_delete_2
可以看出来,pushgateway 是相同 label 为一组,一组里面可以有多个指标
- Pushgateway 只能删除一个组里面的所有指标内容,没法针对某个组里面的指定指标删除,所以只能把组删了,重新写入才能实现指标名称的替换,或者新写一个组
- 一个组有几个 label,就要把路径写完整,少一个 label 就不会删除这组数据
curl -XDELETE http://192.168.11.167:31091/metrics/job/test-pushgateway/instance/192.168.11.167/study/test_delete
- 所以我们删除
study/test_delete
这个标签,不会影响另外两个组,即时剩下的两个组,都存在job/test-pushgateway
,我们执行的命令是curl -XDELETE http://192.168.11.167:31091/metrics/job/test-pushgateway
,也不会把这两个组给删了,必须把剩余的 label 补齐了,才可以删除这个组- 删除了组之后,Prometheus 再次扫描没有这个指标,也将无法通过 PromQL 来查询到相关的指标了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。