Prometheus CRD
介绍¶
本文档介绍如何让 Datakit 支持 Prometheus-Operator CRD 并采集对应指标。
描述¶
Prometheus 有一套完善的 Kubernetes 应用指标采集方案,流程简述如下:
- 在 Kubernetes 集群中创建 Prometheus-Operator
- 根据需求,创建对应的 CRD 实例,该实例必须携带采集目标指标的必要配置,例如
matchLabels
port
path
等配置 - Prometheus-Operator 会监听 CRD 实例,并根据其配置项开启指标采集
在此处,Datakit 扮演了第 3 步的角色,由 Datakit 来监听和发现 Prometheus-Operator CRD,并根据配置开启指标采集,最终上传到观测云。
目前 Datakit 支持 Prometheus-Operator 两种 CRD 资源 —— PodMonitor
和 ServiceMonitor
,以及其必要(require)配置,包括以下部分:
- PodMonitor [monitoring.coreos.com/v1]
- podTargetLabels
- podMetricsEndpoints:
- interval
port
path
params
- namespaceSelector:
any
matchNames
- ServiceMonitor:
- bearerTokenFile
- targetLabels
- podTargetLabels
- endpoints:
- interval
port
path
params
tlsConfig
caFile
certFile
keyFile
insecureSkipVerify
- namespaceSelector:
any
matchNames
注意:tlsConfig
暂不支持从 Kubernetes Secret/ConfigMap 获取证书。
params
支持以 measurement
字段来指定数据的指标集,例如:
示例¶
以 Nacos 集群为例。
安装 Nacos:
$ git clone https://github.com/nacos-group/nacos-k8s.git
$ cd nacos-k8s
$ chmod +x quick-startup.sh
$ ./quick-startup.sh
nacos/nacos-quick-start.yaml 容器端口配置:
containers:
- name: k8snacos
imagePullPolicy: Always
image: nacos/nacos-server:latest
ports:
- containerPort: 8848
name: client
- containerPort: 9848
name: client-rpc
- containerPort: 9849
name: raft-rpc
- containerPort: 7848
name: old-raft-rpc
- metrics 接口:
$IP:8848/nacos/actuator/prometheus
- metrics port:8848
现在在 Kubernetes 集群中存在一个 Nacos metrics 服务可以采集指标。
创建 Prometheus-Operator CRD¶
- 安装 Prometheus-Operator
$ wget https://github.com/prometheus-operator/prometheus-operator/releases/download/v0.62.0/bundle.yaml
$ kubectl apply -f bundle.yaml
$ kubectl get crd
NAME CREATED AT
alertmanagerconfigs.monitoring.coreos.com 2022-08-11T03:15:57Z
alertmanagers.monitoring.coreos.com 2022-08-11T03:15:57Z
podmonitors.monitoring.coreos.com 2022-08-11T03:15:57Z
probes.monitoring.coreos.com 2022-08-11T03:15:57Z
prometheuses.monitoring.coreos.com 2022-08-11T03:15:57Z
servicemonitors.monitoring.coreos.com 2022-08-11T03:15:57Z
thanosrulers.monitoring.coreos.com 2022-08-11T03:15:57Z
- 创建 PodMonitor
$ cat pod-monitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: nacos
labels:
app: nacos
spec:
podMetricsEndpoints:
- port: client
interval: 15s
path: /nacos/actuator/prometheus
namespaceSelector:
matchNames:
- default
selector:
matchLabels:
app: nacos
$ kubectl apply -f pod-monitor.yaml
几个重要的配置项要和 Nacos 一致:
- namespace: default
- app:
nacos
- port: client
- path:
/nacos/actuator/prometheus
配置参数文档,目前 Datakit 只支持 require 部分,暂不支持诸如 baseAuth
bearerTokenSecret
和 tlsConfig
等认证配置。
指标集和 tags¶
详见参考此处。
验证¶
启动 Datakit,使用 datakit monitor -V
或在观测云页面上查看,能找到以 nacos_
开头的指标集说明采集成功。