指標與監控

監控指南

DirectPV 節點透過連接埠 10443 匯出與 Prometheus 相容的指標資料。

為了在 Prometheus 中擷取資料,每個節點都必須可透過連接埠 10443 存取。

  1. 讓節點伺服器指標連接埠可透過 localhost:8080 存取。

    kubectl -n directpv port-forward node-server-4nd6q 8080:10443
    
  2. 將下列內容新增至您的 Prometheus 組態

    scrape_configs:
      - job_name: 'directpv-monitor'
        # Override the global default and scrape targets from this job every 5 seconds.
        scrape_interval: 5s
        static_configs:
          - targets: ['localhost:8080']
            labels:
              group: 'production'
    
  3. 在 Prometheus 網頁介面中使用 PromQL 執行 Prometheus 查詢,以測試組態。

    例如,下列查詢會傳回 node1 的總位元組指標

    directpv_stats_bytes_total{node="node1"}
    

支援的指標

DirectPV 節點伺服器匯出下列指標

  • directpv_stats_bytes_used
  • directpv_stats_bytes_total

這些指標會依標籤 ['tenant'、'volumeID'、'node'] 分類,並表示已發佈磁碟區的磁碟區統計資料。

組態

套用下列 Prometheus 組態以擷取公開的指標

global:
  scrape_interval: 15s
  external_labels:
    monitor: 'directpv-monitor'
scrape_configs:
- job_name: 'directpv-metrics'
  scheme: http
  metrics_path: /directpv/metrics
  authorization:
    credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - source_labels: [__meta_kubernetes_namespace]
    regex: "directpv-(.+)"
    action: keep
  - source_labels: [__meta_kubernetes_pod_controller_kind]
    regex: "DaemonSet"
    action: keep
  - source_labels: [__meta_kubernetes_pod_container_port_name]
    regex: "healthz"
    action: drop
    target_label: kubernetes_port_name
- job_name: 'kubernetes-cadvisor'
  scheme: https
  metrics_path: /metrics/cadvisor
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    insecure_skip_verify: true
  authorization:
    credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  kubernetes_sd_configs:
  - role: node
  relabel_configs:
  - action: labelmap
    regex: __meta_kubernetes_node_label_(.+)
  - source_labels: [__meta_kubernetes_namespace]
    action: replace
    target_label: kubernetes_namespace
  - source_labels: [__meta_kubernetes_service_name]
    action: replace
    target_label: kubernetes_name

篩選

Prometheus 支援使用 PromQL 語言篩選結果。

例如,使用下列 PromQL 查詢磁碟區統計資料

  • 若要篩選在 node-3 中排程的磁碟區

    directpv_stats_bytes_total{node="node-3"}
    
  • 若要篩選在 node-5 中排程的 tenant-1 的磁碟區

    directpv_stats_bytes_used{tenant="tenant-1", node="node-5"}