You need to enable JavaScript to run this app.
导航
使用自建 Prometheus 监控 VCI
最近更新时间:2024.10.09 16:44:19首次发布时间:2024.09.30 17:41:18

VCI 支持对接自建 Prometheus 服务对 VCI 实例进行监控。本文主要介绍在自建 Prometheus 服务中配置 VCI 监控指标采集规则的方法。

前提条件

  • VCI 实例所属的集群,已安装 vci-virtual-kubelet 组件。详细操作,请参见 安装组件
  • 已创建 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 上执行如下图命令,验证采集结果:
alt

采集 GPU 指标

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