VCI 支持对接自建 Prometheus 服务对 VCI 实例进行监控。本文主要介绍在自建 Prometheus 服务中配置 VCI 监控指标采集规则的方法。
VCI 实例提供 CPU、内存、网络吞吐等性能指标。详细的指标说明,请参见 支持的指标。
若在集群中部署了 Prometheus Operator,可通过修改 Prometheus Operator 配置来采集 VCI 实例基础指标。
下文以通过 ServiceMonitor 配置服务发现进行指标采集为例:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: kubernetes-cadvisor
spec:
selector:
matchLabels:
k8s-app: kubelet
namespaceSelector:
any: true
endpoints:
- port: https
interval: 15s
path: /metrics/cadvisor
scheme: https
tlsConfig:
caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecureSkipVerify: true
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
relabelings:
- sourceLabels: [__meta_kubernetes_node_name]
regex: '(.+)'
targetLabel: __metrics_path__
replacement: /metrics/cadvisor
- action: labelmap
regex: '__meta_kubernetes_node_label_(.+)'
自建 Prometheus 通过访问 virtual-kubelet 获取实例指标,采集配置方法与访问原生 Kubernetes kubelet 相同。您可以通过修改开源 Prometheus 配置文件,采集 VCI 实例基础指标。开源 Prometheus 配置文件通常位于/etc/prometheus/prometheus.yml
或者您自定义的配置目录下。
以 cAdvisor 指标为例, 通过标准配置文件配置采集规则的示例如下:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'kubernetes-cadvisor'
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: true
kubernetes_sd_configs:
- role: node
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: metrics/cadvisor
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
说明
scrape_configs
参数相关配置说明,请参见 Prometheus 官网文档。
您可以在自建 Prometheus 上执行如下图命令,验证采集结果:
VCI GPU 监控使用的 GPU Exporter 兼容开源 DCGM Exporter 提供的监控指标。详细的指标说明,请参见 DCGM 支持的指标。
若在集群中部署了 Prometheus Operator,可通过 Prometheus Operator 的 ServiceMonitor 或 PodMonitor 配置服务发现来采集 VCI GPU 指标。
说明
采集指标前,需在 VCI Pod 中显示声明容器暴露端口,端口号为1025
。声明的示例代码片段如下:
...
spec:
containers:
ports:
- containerPort: 1025 # 在容器配置中,对容器端口进行显示声明
name: gpu-metrics
通过 PodMonitor 进行采集的示例如下:
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: vci-gpu
spec:
selector:
matchLabels:
app: gpu # 此处需修改为目标 VCI Pod 的 Label
namespaceSelector:
any: true
podMetricsEndpoints:
- port: gpu-metrics
interval: 15s
scheme: http
relabelings:
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
自建 Prometheus 可通过修改开源 Prometheus 配置文件,访问 VCI Pod 的1025
端口进行 GPU 指标采集。开源 Prometheus 配置文件通常位于/etc/prometheus/prometheus.yml
或者您自定义的配置目录下。
配置采集规则的示例如下:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'vci-gpu'
scheme: http
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_ip]
regex: (.*)
target_label: __address__
replacement: $1:1025
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
您可以在自建 Prometheus 上执行如下图命令,验证采集结果: