zabbix监控k8s
参考资料
现状我已经部署了zabbix-server,但是没有在k8s部署zabbix-agent
zabbix-agent和zabbix-proxy的区别
- Zabbix 代理默认以 DaemonSet 的形式部署在所有集群节点上,以被动模式监控各个节点主机资源,使用“Linux by Zabbix agent”模板。
- Zabbix 代理以单副本的 Deployment 形式(默认)以活动模式安装在集群中。它从 Kubernetes API、kube-state-metrics 端点和 Zabbix 代理收集数据。所有收集的数据都会先在本地缓存,然后再传输到代理所属的外部 Zabbix 服务器 ,用于监控
安装步骤
- 添加仓库
helm repo add zabbix-chart-7.0 https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/7.0
- 将图表
zabbix-helm-chart的默认值导出到文件$HOME/zabbix_values.yaml:
helm show values zabbix-chart-7.0/zabbix-helm-chart > $HOME/zabbix_values.yaml
将
env.ZBX_SERVER_HOST文件$HOME/zabbix_values.yaml中的环境变量更改为用于监控且可由 Zabbix 代理访问的 Zabbix 服务器的地址。例如我的zabbix-server的地址是192.168.1.100,那么我需要将env.ZBX_SERVER_HOST改为192.168.1.100列出集群的命名空间
kubectl get namespaces
- 如果集群中不存在命名空间监控,请创建命名空间
monitoring:
kubectl create namespace monitoring
- 在 Kubernetes 集群中部署图表
zabbix-helm-chart到命名空间monitoring:
helm install zabbix zabbix-chart-7.0/zabbix-helm-chart --dependency-update -f $HOME/zabbix_values.yaml -n monitoring
- 获取服务帐户名称。如果使用其他版本名称。
kubectl get serviceaccount -n monitoring
- 获取为服务帐户自动创建的令牌TOKEN:
kubectl get secret -n monitoring zabbix-agent -o jsonpath='{.data.token}' | base64 -d
这样就安装了zabbix-agent和zabbix-proxy.
zabbix-server配置
创建zabbix-proxy
- administration -> proxies -> create proxy ->proxy name: zabbix-proxy
- zabbix-proxy是默认值,无需修改.直接保存即可.等待一会,zabbix-proxy的状态变成online.
创建node监控
- 选择模板
Kubernetes nodes by HTTP

image.png
- 在 宏 - 继承及主机 宏 中,修改两个宏:
{$KUBE.API.URL}
{$KUBE.API.TOKEN}

image.png
创建集群监控
选择模板Kubernetes cluster state by HTTP,其他的都是一样的配置.
我必须很悲伤的告诉你,虽然每一步都正常,但是由于我的监控指标显示7283个,可能触发了zabbix的bug,所有指标都正常的情况下,zabbix没有图标显示