虽然 Prometheus 被认为是 监控的Kubernetes最合适的工具 ,但其配置复杂、存储成本高以及告警管理繁琐等问题,使得一些传统运维团队更倾向于使用 Zabbix 这样的成熟监控方案。Zabbix 凭借其强大的数据采集、灵活的告警机制和直观的图形化界面,依然在企业监控体系中占据重要地位。
现在将演示如果通过Zabbix来监控K8s集群
K8s集群: #master3是NotReady状态先忽略不计,就相当于两台master一台node
一:下载Zabbix的helm包
nullhttps://git.zabbix.com/projects/ZT/repos/kubernetes-helm/browse
1.1:在K8s集群中安装helm
下载地址:https://github.com/helm/helm/releases
根据zabbix的helm部署前提下载合适的版本
1.2:在k8s集群主机上安装helm
tar zxvf helm-v3.12.3-linux-amd64.tar.gz #解压安装包
mv linux-amd64/helm /usr/bin/helm #移动到bin目录下
1.3:验证安装是否成果
helm version #查看helm版本
二:解压zabbix7.0helm包
2.1:存放目录,解压到当前目录
mkdir /Zabbix-monitor #创建存放helm包解压后的存放目录
unzip kubernetes-helm-release-7.0\@7236237491a.zip #解压helm包,我下载的是7.0版本的
解压后的就是这些东西:
2.2:查看并修改values.yaml文件
2.2.1:查看镜像
[root@master1 zabbix-monitor]# grep "repository:" values.yaml repository: zabbix/zabbix-proxy-sqlite3repository: zabbix/zabbix-agent2repository: zabbix/zabbix-java-gateway
kube-state-metrics这个资源没有定义镜像,我们自己给定义一下
修改成这样即可
2.2.2:接下来修改变量:
Zabbix-Proxy部分:
ZBX_PROXYMODE=1 #被动模式
ZBX_HOSTNAME=Zabbix-proxy-HA #proxy名称,后续在web端配置的时候需要
ZBX_SERVER_HOST="192.168.8.100" #server ip
zabbix-proxy还要修改一下service的类型:
修改成NodePort类型,因为这样的话集群外的机器才能访问到
Zabbix-agent部分:
ZBX_SERVER_HOST="192.168.8.100" #server ip
修改完之后保存退出value.yaml
2.3:拉取镜像
现在我们需要拉取的镜像一共有四个:
关于zabbix的镜像的标签都是统一的alpine-7.0.4
zabbix/zabbix-proxy-sqlite3:alpine-7.0.4
zabbix/zabbix-agent2:alpine-7.0.4
zabbix/zabbix-java-gateway:alpine-7.0.4
bitnami/kube-state-metrics:2.2.0
使用Docker拉取镜像,之后用docker save打包
拉取命令就是:
docker pull 镜像名字:标签
拉取下来之后save打包:
docker save -o tar包名字 镜像名字:标签
举例:docker save -o Zabbix-agent.tar zabbix/zabbix-agent2:alpine-7.0.4
2.4:将镜像文件导入K8s集群(所有节点都要执行导入的命令)
因为我的K8s集群的容器运行时是containerd所以用ctr命令导入。
ctr -n k8s.io image import Zabbix-agent.tar
ctr -n k8s.io image import Zabbix-java-gateway.tar
ctr -n k8s.io image import Zabbix-proxy.tar
ctr -n k8s.io image import kube-state-metrics_V2.2.0.tar
如果容器运行时是docker的话就用docker load -i导入
查看容器运行时的命令:
kubectl get node -owide
这一列就是容器运行时
三:helm部署
3.1: 创建命名空间
kubectl create ns monitoring
3.2:更新依赖
cd /Zabbix-monitor/ #存放helm包解压后文件的目录
helm dependency update . #更新依赖命令
3.3:开始部署
四:Zabbix-server端配置:
4.1:添加zabbix-proxy
这个端口用:kubectl get svc -n monitoring查看
然后点击添加即可。
过一会查看已经是在线状态了。
4.2:创建主机组
数据采集 > 主机群组 > 创建主机组 > 填写组名
我的主机组就叫K8s-HA
4.3:创建用于自动发现节点的主机
填完这些先别添加,还要修改一下宏变量:
{$KUBE.API.TOKEN} 这个宏写的值使用以下这个命令查看:
kubectl get secret zabbix-service-account -n monitoring -o jsonpath={.data.token} | base64 -d
现在就可以点击添加了
4.4:查看是否成功自动发现到K8s所有节点
可以看到已经成功发现并且添加上了,master3是红色的属于正常,因为我测试高可用,没有给master3开机。
主机也被监控到了数据
4.5:创建用于监控集群状态的主机
就是用来监控K8s的所有的核心组件, apiserver,etcd,kubelet等
点击添加主机
4.6:查看是否监控到集群状态
可以看到标记的就是由集群状态的主机自动发现并且添加的核心组件
4.7:查看集群状态主机的最新数据

五:自定义仪表盘展示:
后续也可以对接Grafana进行更直观的图形化展示。