在Kubernetes (K8S) 中,Persistent Volume (PV) 是集群中的一个抽象层,它代表了底层存储资源,例如网络存储系统(如NFS、Ceph、GlusterFS等)或本地存储(如硬盘驱动器、分区或目录)。PV 是集群级别的资源,可以被多个 Pod 共享,并且它的生命周期独立于任何使用它的 Pod。
当企业的 K8S 集群规模不断扩大和业务日益复杂时,其PV 卷的数量也在不断增加。PV 卷可能会出现容量不足、挂载异常、损坏等问题,这些问题如果不能及时发现和处理,可能会导致应用程序运行失败、数据丢失等严重后果。通过 Zabbix 对 K8S 的 PV 卷状态进行监控,我们可以实时获取 PV 卷的各项指标,提前预警潜在风险,保障业务的稳定运行。
本文将介绍如何使用Zabbix自定义键值脚本方式监控K8S的PV卷状态等信息。
#!/bin/bash echo -n '{"data": [' kubectl get pv -o custom-columns=NAME:.metadata.name,STATUS:.status.phase --no-headers | \ awk '{ if(NR>1) printf ","; printf "{\"{#PV_NAME}\":\"%s\", \"{#PV_STATUS}\":\"%s\"}", $1, $2 } END {print "]}" }'
UserParameter=kubernetes.pv.discovery,/usr/local/lwops/scripts/get_k8s_pv.sh #自动发现规则键值 UserParameter=kubernetes.pv.status[*],kubectl get pv $1 -o jsonpath='{.status.phase}' #获取STATUS列的状态键值
# systemctl restart zabbix_agentd
状态值如果是Failed或Pending状态产生告警
错误信息