近期在做 KEDA 基于 Prometheus 的自动伸缩功能时,针对自定义的指标,可以通过 Prometheus 的 pushgateway 快速部署,然后在外部推送之后,KEDA 就可以使用自定义指标来进行自动扩缩容。本文主要介织如何部署 pushgateway 并推送自定义指标。
本人是基于 kube-prometheus-stack 部署的 pushgateway,这里需要注意,pushgateway 使用的是另一个 Chart。
1
2
3
4
5
6
7
8
|
# pull下来解压
helm pull prometheus-community/prometheus-pushgateway
# 修改一下镜像
helm install pg . -f db-values.yaml
# 部署成功后向pushgateway推送指标
echo "test_metric 1" | curl --data-binary @- http://prometheus-pushgateway:9091/metrics/job/test_job
# 推送指标之后可以删除
curl -X DELETE http://prometheus-pushgateway:9091/metrics/job/test_job
|
从 Prometheus 的页面可以确定自定义的指标已经推送进去了。
另外需要注意 ServiceMonitor,默认情况下 kube-prometheus-stack 要求 ServiceMonitor 要含有 release: kube-prometheus-stack
这个 Label 才会自动被 Prometheus 加入到 Target 里。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
annotations:
meta.helm.sh/release-name: pg
meta.helm.sh/release-namespace: kube-prometheus-stack
labels:
app.kubernetes.io/instance: pg
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: prometheus-pushgateway
app.kubernetes.io/version: v1.10.0
helm.sh/chart: prometheus-pushgateway-2.15.0
# 这必须符合标准
release: kube-prometheus-stack
name: pg-prometheus-pushgateway
namespace: kube-prometheus-stack
spec:
endpoints:
- honorLabels: true
path: /metrics
port: http
namespaceSelector:
matchNames:
- kube-prometheus-stack
selector:
matchLabels:
app.kubernetes.io/instance: pg
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: prometheus-pushgateway
app.kubernetes.io/version: v1.10.0
helm.sh/chart: prometheus-pushgateway-2.15.0
|
- Pushing metrics