暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

手把手教你实现zabbix对Kubernetes的监控

昨夜辰风AZ 2022-12-03
5135

Zabbix 6.0 新特性

Zabbix 6.0 LTS新增Kubernetes监控功能,可以在Kubernetes系统从多个维度采集指标。我们今天就来实现Zabbix6.0对K8S的监控。

架构

指标模板

K8S集群以及组件模板

模板名称解释
Kubernetes API server by HTTPK8S ApiServer组件指标模板
Kubernetes cluster state by HTTPK8S 集群指标模板
Kubernetes Controller manager by HTTPK8S ControllerManager组件指标模板
Kubernetes kubelet by HTTPK8S Kubelet组件指标模板
Kubernetes nodes by HTTPK8S 集群节点发现以及状态指标模板
Kubernetes Scheduler by HTTPK8S Scheduler组件指标模板

K8S节点基础信息指标模板


模板名称解释
Linux by Zabbix agentOS Linux系统监控模板

方法

主要监控方式

Agent

通过zabbix agent客户端,采集集群节点的CPU、内存、磁盘等基础信息指标。

Agentless

通过Zabbix内置的“HTTP agent”、“Script”两种类型的监控项,无需安装客户端,通过访问被监控端的API接口即可采集监控指标数据,主要用于K8S集群、服务组件、pod容器状态及性能指标的采集。

机器分布

本次实现使用两台虚拟机

主机名IP
k8s-master01192.168.119.81
k8s-node01192.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的基本信息,包括版本、名称、依赖等。


        参数解释
        apiVersionChart API 版本
        nameChart 名称
        description描述信息
        home项目home页面的URL
        icon用做icon的SVG或PNG图片URL
        typeChart 类型
        version语义化2 版本
        appVersion包含的应用版本
        dependencies依赖的Chart列表,缓存在同级下charts目录中

        配置values.yaml

        主要为templates目录中定义K8S资源对象的配置文件变量值。


        1、Zabbix Proxy 与 Agent参数配置

        参数解释
        fullnameOverridezabbix覆盖完全限定应用名称
        kubeStateMetricsEnabledtrue部署kube-state-metrics
        zabbixProxy.image.tagalpine-6.0.1ZabbixProxy Docker镜像tag,用于指定ZabbixProxy版本
        zabbixProxy.env.ZBX_HOSTNAMEzabbix-proxy-k8sZabbixProxy hostname
        zabbixProxy.env.ZBX_SERVER_HOST<IP>ZabbixServer地址
        zabbixAgent.image.tagalpine-6.0.1ZabbiAgent Docker镜像tag,用于指定ZabbiAgent版本

        2、kube-state-metrics 依赖Chart参数配置

        参数解释
        Image.repositorybitnami/kube-state-metricskube-state-metrics 镜像库配置
        Image.tag2.2.0kube-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的监控。


                文章转载自昨夜辰风AZ,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论