Zabbix实现监控Kubernetes

网上监控 Kubernetes 的工具大部分是 Promethues,基本很少有关于 Zabbix 实现监控Kubernetes 的文章。Zabbix 6.0 LTS 新增 Kubernetes 监控功能,可以从 Kubernetes 系统从多个维度采集指标。我们通过这篇文章实现对 Kubernetes 的监控。

Zabbix实现监控Kubernetes_第1张图片

一、集群监控模板

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 ProxyAgent 参数配置
参数 解释
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

Zabbix实现监控Kubernetes_第2张图片

2、创建机器

创建节点机器,关联 Kubernets nodes by HTTP 模板,用于自动发现节点主机。
Zabbix实现监控Kubernetes_第3张图片
Zabbix实现监控Kubernetes_第4张图片
这三个宏变量参数是必填参数:

{$KUBE.API.ENDPOINT.URL}
{$KUBE.API.TOKEN}
{$KUBE.NODES.ENDPOINT.NAME} # kubectl get ep -n monitoring

集群节点监控添加后效果如下:
在这里插入图片描述

3、集群服务监控

新建一台集群状态机器,关联 Kubernets cluster state by HTTP 模板,用于自动发现集群组件并监控其状态。

Zabbix实现监控Kubernetes_第5张图片
依旧要修改如下三个宏变量参数
Zabbix实现监控Kubernetes_第6张图片
添加后效果如下
Zabbix实现监控Kubernetes_第7张图片
Zabbix实现监控Kubernetes_第8张图片

四、注意事项

Node 节点关联的 Linux by Zabbix agent 模板有部分监控项获取不到数据时,确认是不是只有 zabbix active 模式的监控项取不到值,如果是的话那么在 values.yml 没有设置 ZBX_ACTIVESERVERSZBX_ACTIVE_ALLOW 参数,按照文档开头修改参数值。替换后控制台可能会报 Kubernetes: Failed to get nodes 告警,是因为token 失效,重新获取最新的 token 替换。


Reference:

  • https://blog.zabbix.com/monitoring-kubernetes-with-zabbix/25055/

你可能感兴趣的:(Zabbix,Kubernetes,kubernetes,zabbix,linux)