网上监控
Kubernetes
的工具大部分是Promethues
,基本很少有关于Zabbix
实现监控Kubernetes
的文章。Zabbix 6.0 LTS
新增Kubernetes
监控功能,可以从Kubernetes
系统从多个维度采集指标。我们通过这篇文章实现对Kubernetes
的监控。
一、集群监控模板
在 Zabbix 6.0
版本中默认带 Kubernetes
监控模板,如果是从低版本升级上来的,我们也可以通过下载官方模板进行导入。官方模板地址
模板名称 | 解释 |
---|---|
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组件指标模板 |
Kubernetes 基础依赖模板
模板名称 | 解释 |
---|---|
Linux by Zabbix agent | OS Linux系统监控模板 |
二、服务部署
官方给我们提供了全套的容器化服务部署方式,这里采用官方提供的 Helm Chart
来安装。
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 repo add zabbix-chart-6.0 https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/6.0
# helm repo list
NAME URL
zabbix-chart-6.0 https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/6.0
3、配置values.yaml
templates
目录中定义 Kubernetes
资源对象的配置文件变量值。
Zabbix Proxy
与Agent
参数配置
参数 | 值 | 解释 |
---|---|---|
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 | ZabbixServer地址 | |
zabbixAgent.image.tag | alpine-6.0.1 | ZabbiAgent Docker镜像tag,用于指定ZabbiAgent版本 |
zabbixAgent.env.ZBX_PROXYMODE | 0 | 一般修改为主动模式 |
zabbixAgent.env.ZBX_ACTIVE_ALLOW | true | 客户端运行主动模式 |
zabbixAgent.env.ZBX_ACTIVESERVERS | zabbix-proxy | ZabbixProxy地址,kubectl get svc 获取 |
- 资源限制配置
对 zabbix agent
需要限制其使用的最大资源,避免影响业务
# vim values.yaml
......
zabbixAgent:
## Enables use of Zabbix agent
enabled: true
resources:
requests:
cpu: 100m
memory: 54Mi
limits:
cpu: 200m
memory: 120Mi
......
kube-state-metrics
参数配置
kube-state-metrics
默认仓库镜像地址在国内被墙访问不上,所以修改成bitnami
参数 | 值 | 解释 |
---|---|---|
image.repository | bitnami/kube-state-metrics | kube-state-metrics 镜像库配置 |
4、安装Zabbix Chart
# kubectl create namespace monitoring
# cd zabbix-helm-chrt
# helm install zabbix . --dependency-update -n monitoring
# kubectl get pods -n monitoring
NAME READY STATUS RESTARTS AGE
zabbix-agent-ssf6x 1/1 Running 0 30h
zabbix-agent-wflqt 1/1 Running 0 30h
zabbix-kube-state-metrics-c4cc9c88-svgpf 1/1 Running 0 30h
zabbix-proxy-779754bfd6-gc6dh 1/1 Running 0 30h
通过 API
获取访问 Token
# kubectl get secret zabbix-service-account -n monitoring -o jsonpath={.data.token} | base64 -d
三、添加集群监控
1、创建 Zabbix Proxy
2、创建机器
创建节点机器,关联 Kubernets nodes by HTTP
模板,用于自动发现节点主机。
这三个宏变量参数是必填参数:
{$KUBE.API.ENDPOINT.URL}
{$KUBE.API.TOKEN}
{$KUBE.NODES.ENDPOINT.NAME}
# kubectl get ep -n monitoring
集群节点监控添加后效果如下:
3、集群服务监控
新建一台集群状态机器,关联 Kubernets cluster state by HTTP
模板,用于自动发现集群组件并监控其状态。
依旧要修改如下三个宏变量参数
添加后效果如下
四、注意事项
当 Node
节点关联的 Linux by Zabbix agent
模板有部分监控项获取不到数据时,确认是不是只有 zabbix active
模式的监控项取不到值,如果是的话那么在 values.yml
没有设置 ZBX_ACTIVESERVERS
和 ZBX_ACTIVE_ALLOW
参数,按照文档开头修改参数值。替换后控制台可能会报 Kubernetes: Failed to get nodes
告警,是因为token
失效,重新获取最新的 token
替换。
Reference: