Zabbix监控K8s集群

虽然 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-sqlite3
    repository: zabbix/zabbix-agent2
    repository: 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进行更直观的图形化展示。

相关推荐
功德+n3 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭4 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿4 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher5 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家7 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR7 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆7 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w6100104667 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin999998 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊8 小时前
Docker 入门之网络基础
网络·docker·php