Zabbix监控k8s的Deployment状态

需求:监控k8s集群中所有Deployment的就绪状态
思路:取所有命名空间中Deployment的期望值与就绪值,当两者不相等时就输出其Deployment名称,输出格式为“namespace.deploymentName"
过程:在zabbix配置文件中添加UserParameter

UserParameter=k8s.dplmStas,kubectl get deployment --all-namespaces |grep / | awk '{print $1,$2,$3}'|sed 's#/# #g'|awk '{if ($3!=$4) print $1,$2}'|sed 's# #.#g'

说明:

  • kubectl get deployment --all-namespaces |grep / 获取所有命名空间的deployment状态信息,并过滤首行标题
  • awk '{print $1,$2,$3}' 只保留前3列:namespace名称、deployment名称、期望副本值/就绪副本值
  • sed 's#/# #g' 将第3列中的“/”转换为空格,以便后期处理,这里由于"/"是特殊符号,故要使用“#”作为分隔符
  • awk '{if ($3!=$4) print $1,$2}' 将拆开后的期望副本值与就绪副本值作比较,若不相等则输出namespace与Deployment名称
  • |sed 's# #.#g' 再次将namespace与Deployment之间的空格转换为“."号输出

你可能感兴趣的:(Zabbix监控k8s的Deployment状态)