指标与监控
监控指南
DirectPV 节点通过端口导出 Prometheus 兼容的指标数据10443.
要从 Prometheus 中抓取数据,每个节点必须可以通过端口访问10443.
-
使节点服务器指标端口可被访问
localhost:8080.kubectl -n directpv port-forward node-server-4nd6q 8080:10443 -
将以下内容添加到您的 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' -
在 Prometheus Web 界面中使用 PromQL 运行 Prometheus 查询以测试配置。
例如,以下查询返回总字节数指标
node1:directpv_stats_bytes_total{node="node1"}
支持的指标
DirectPV 节点服务器导出以下指标:
-
directpv_stats_bytes_used卷使用的总字节数
-
directpv_stats_bytes_total分配给卷的总字节数
在 4.0.17 或 4.1.5 及更高版本中,提供了以下额外指标。
-
directpv_stats_drive_ready提供驱动器状态,在线或离线
-
directpv_stats_drive_total_read_bytes从驱动器读取的总字节数
-
directpv_stats_drive_total_write_bytes写入驱动器的总字节数
-
directpv_stats_drive_read_latency_seconds驱动器读取延迟,单位:秒
-
directpv_stats_drive_write_latency_seconds驱动器写入延迟,以秒为单位
-
directpv_stats_drive_wait_time_secondsDrive Wait Time, in seconds
这些指标按标签分类[drive, 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-3directpv_stats_bytes_total{node="node-3"} -
要筛选卷的
tenant-1已安排node-5directpv_stats_bytes_used{tenant="tenant-1", node="node-5"}