其他容器监控接入
更新时间:2024-08-20
1. pod容器需满足以下条件:
- 暴露TCP port {{PORT}}
- label中包含KV对 {{KEY}}:{{VALUE}}
2. 创建service
Plain Text
1apiVersion: v1
2kind: Service
3metadata:
4 annotations:
5 prometheus.io/port: "{{PORT}}"
6 prometheus.io/scrape: "true"
7 name: {{NAME}}
8 namespace: {{NS}}
9spec:
10 ports:
11 - port: {{PORT}}
12 protocol: TCP
13 targetPort: {{PORT}}
14 selector:
15 {{KEY}}: {{VALUE}}
3. 配置例子
Plain Text
1---
2apiVersion: apps/v1
3kind: Deployment
4metadata:
5 name: operator
6 namespace: bec-cds
7spec:
8 replicas: 1
9 selector:
10 matchLabels:
11 bec.baidubce.com/cds-component: operator
12 template:
13 metadata:
14 labels:
15 bec.baidubce.com/cds-component: operator
16 spec:
17 containers:
18 - args:
19 - -http-addr=:8001 # 该 pod 在 8001 端口暴漏 http /metrics 接口
20 - -log-file=/cds/operator/log/operator.log
21 - -log-stdout-also
22 - -leader-elect
23 command:
24 - /cds/operator/bin/operator
25 image: registry.baidubce.com/bec_sandbox/cds-operator:dev-mnt1
26 name: operator
27---
28apiVersion: v1
29kind: Service
30metadata:
31 annotations:
32 prometheus.io/scrape: "true" # 有该 annotation 的 svc 所选择的 pod,会被 vmagent 拉取 http://<podIP>:<port>/metrics 这个地址的内容;
33 # 当 service 选中多个 pod 时,每个 pod 都会被拉取,多个 pod 建的指标通过 instance label 区分;
34 prometheus.io/port: 8001 # 若有多个,默认全部拉取,该 annotation 指定仅从一个 port 拉取指标;
35 # .spec.ports 只有一个 port 时,该 annotation 可以省略;
36 name: operator
37 namespace: bec-cds
38spec:
39 ports:
40 - port: 8001
41 protocol: TCP
42 targetPort: 8001
43 selector:
44 bec.baidubce.com/cds-component: operator
45 type: ClusterIP
4. check检查
- 在容器内部curl metrics,检验服务本身是否正常
- 在vmagent内部通过service的ip:port curl (如果没有curl,apk add curl)metrics,检验service是否正常
- kubectl -n monitor port-forward vmagent-0 8429:8429,然后打开chrome,访问 http://localhost:8429 ,检查vmagent是否成功抓取指标;如图例,上面一行是成功,下面一行红色的是失败
- 前往grafana explore,检查指标是否正常上传
- 前往grafana dashboard,检查图表是否正常渲染