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进行更直观的图形化展示。

相关推荐
dessler1 小时前
Kubernetes(k8s)-日志(logs)和exec内部逻辑
linux·运维·kubernetes
geek_super2 小时前
Docker学习--容器操作相关命令--docker export 命令
docker
白夜易寒11 小时前
Docker学习之私有仓库(day10)
学习·docker·容器
tingting011915 小时前
k8s 1.30 安装ingress-nginx
nginx·容器·kubernetes
陈陈CHENCHEN16 小时前
【Kubernetes】CentOS 7 安装 Kubernetes 1.30.1
kubernetes
2201_7611990417 小时前
k8s2部署
云原生·容器·kubernetes
云上艺旅18 小时前
K8S学习之基础六十四:helm常用命令
学习·云原生·容器·kubernetes
geek_super20 小时前
Docker学习--容器生命周期管理相关命令--docker pause/unpause 命令
docker
RedCong20 小时前
在k8s中使用CronJob定时备份mysql
mysql·容器·kubernetes
FGGIT20 小时前
香橙派开发板玩法分享:Docker部署1Panel打造全能控制台远程访问
运维·docker·容器