Zabbix 6.0 新特性
Zabbix 6.0 LTS新增Kubernetes监控功能,可以在Kubernetes系统从多个维度采集指标。我们今天就来实现Zabbix6.0对K8S的监控。
架构
指标模板
K8S集群以及组件模板
模板名称 | 解释 |
---|---|
Kubernetes API server by HTTP | K8S ApiServer组件指标模板 |
Kubernetes cluster state by HTTP | K8S 集群指标模板 |
Kubernetes Controller manager by HTTP | K8S ControllerManager组件指标模板 |
Kubernetes kubelet by HTTP | K8S Kubelet组件指标模板 |
Kubernetes nodes by HTTP | K8S 集群节点发现以及状态指标模板 |
Kubernetes Scheduler by HTTP | K8S Scheduler组件指标模板 |
K8S节点基础信息指标模板
模板名称 | 解释 |
---|---|
Linux by Zabbix agent | OS Linux系统监控模板 |
方法
主要监控方式
Agent
通过zabbix agent客户端,采集集群节点的CPU、内存、磁盘等基础信息指标。
Agentless
通过Zabbix内置的“HTTP agent”、“Script”两种类型的监控项,无需安装客户端,通过访问被监控端的API接口即可采集监控指标数据,主要用于K8S集群、服务组件、pod容器状态及性能指标的采集。
机器分布
本次实现使用两台虚拟机
主机名 | IP |
---|---|
k8s-master01 | 192.168.119.81 |
k8s-node01 | 192.168.119.91 |
部署Zabbix Proxy、Agent
在K8S集群中部署Zabbix Proxy 与 Zabbix Agent监控组件,这里采用官方提供的Helm Chart来安装。
文档:https://git.zabbix.com/projects/ZT/repos/kubernetes-helm/browse?at=refs%2Fheads%2Frelease%2F6.0
1、首先需要安装Helm工具
wget https://get.helm.sh/helm-v3.8.1-linux-amd64.tar.gz
tar zxvf helm-v3.8.1-linux-amd64.tar.gz
cp linux-amd64/helm usr/local/bin/helm
2、添加Helm Chart Repository
helm repo add zabbix-chart-6.0 https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/6.0
helm repo list
3、下载Zabbix Helm Chart,并解压
helm pull zabbix-chart-6.0/zabbix-helm-chrt
tar xf zabbix-helm-chrt-1.1.1.tgz
配置Chart.yaml
主要记录的是当前Chart的基本信息,包括版本、名称、依赖等。
参数 | 解释 |
---|---|
apiVersion | Chart API 版本 |
name | Chart 名称 |
description | 描述信息 |
home | 项目home页面的URL |
icon | 用做icon的SVG或PNG图片URL |
type | Chart 类型 |
version | 语义化2 版本 |
appVersion | 包含的应用版本 |
dependencies | 依赖的Chart列表,缓存在同级下charts目录中 |
配置values.yaml
主要为templates目录中定义K8S资源对象的配置文件变量值。
1、Zabbix Proxy 与 Agent参数配置
参数 | 值 | 解释 |
---|---|---|
fullnameOverride | zabbix | 覆盖完全限定应用名称 |
kubeStateMetricsEnabled | true | 部署kube-state-metrics |
zabbixProxy.image.tag | alpine-6.0.1 | ZabbixProxy Docker镜像tag,用于指定ZabbixProxy版本 |
zabbixProxy.env.ZBX_HOSTNAME | zabbix-proxy-k8s | ZabbixProxy hostname |
zabbixProxy.env.ZBX_SERVER_HOST | <IP> | ZabbixServer地址 |
zabbixAgent.image.tag | alpine-6.0.1 | ZabbiAgent Docker镜像tag,用于指定ZabbiAgent版本 |
2、kube-state-metrics 依赖Chart参数配置
参数 | 值 | 解释 |
---|---|---|
Image.repository | bitnami/kube-state-metrics | kube-state-metrics 镜像库配置 |
Image.tag | 2.2.0 | kube-state-metrics容器镜像本版本 |
1、创建monitoring命名空间
kubectl create namespace monitoring
2、Helm 安装Zabbix Chart
cd zabbix-helm-chrt
helm install zabbix . --dependency-update -n monitoring
3、查看K8S Zabbix Pod
kubectl get pods -n monitoring -o wide
4、获取API接口访问Token
kubectl get secret zabbix-service-account -n monitoring -o jsonpath={.data.token} | base64 -d
集群节点监控
1、页面创建Zabbix Proxy
注意此处的proxy ip 地址为kubectl get 到的值
2、创建“k8s-nodes”,挂载“Kubernets nodes by HTTP”,用于自动发现节点主机。
集群节点监控-宏变量配置
1、宏变量
{$KUBE.API.ENDPOINT} https://192.168.119.81:6443/api
{$KUBE.API.TOKEN} 之前获取的一长串值
{$KUBE.NODES.ENDPOINT.NAME} zabbix-agent
2、查看K8S服务endpoint信息
kubectl get ep -n monitoring
集群节点监控效果
1、自动发现的节点主机
2、最新数据
集群服务监控
创建“k8s-cluster”,挂载“Kubernetes cluster state by HTTP”,用于自动发现服务组件。
集群服务监控-宏变量配置
{$KUBE.API.HOST} 192.168.119.81
{$KUBE.API.PORT} 6443
{$KUBE.API.TOKEN}
{$KUBE.API_SERVER.PORT} 6443
{$KUBE.API_SERVER.SCHEME} https
{$KUBE.CONTROLLER_MANAGER.PORT} 10252
{$KUBE.CONTROLLER_MANAGER.SCHEME} http
{$KUBE.KUBELET.PORT} 10250
{$KUBE.KUBELET.SCHEME} https
{$KUBE.SCHEDULER.PORT} 10251
{$KUBE.SCHEDULER.SCHEME} http
{$KUBE.STATE.ENDPOINT.NAME} zabbix-kube-state-metrics
集群服务监控效果
1、自动发现的集群服务组件主机
2、最新数据
至此,我们已经完成了Zabbix6.0对K8S的监控。