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 上执行如下图命令,验证采集结果: