popyone
发布于 2024-03-26 / 16 阅读
0
0

通过zabbix proxy和zabbix agent监控kubernetes基本指标

Helm 图表安装 Zabbix 监控 Kubernetes 集群的组件。

kube 状态度量

kube-state-metrics (KSM)是一项简单的服务,用于侦听 Kubernetes API 服务器并生成有关集群中对象状态的指标。

如果集群中已安装 kube-state-metrics,则可以使用它来代替此图表所部署的那个。根据环境,在“Kubernetes cluster state by HTTP”模板中的宏中设置kube-state-metrics.enabled参数值并指定端点名称。如果 kube-state-metrics 配置偏离默认值,某些指标可能不可用。

笔记

  • 安装 OpenShift 的 kube-state-metrics 需要在 ReplicaSet 级别进行一项修改。必须删除或更改此块:

      securityContext:
        runAsUser: 65534
        runAsGroup: 65534
        fsGroup: 65534
    

Zabbix代理

Zabbix Agent通过DaemonSet以被动模式(默认情况下)部署在集群所有节点上的 ,以使用“Linux by Zabbix agent”模板监控各个节点主机资源。

zabbixAgent.tolerations根据所使用的 Kubernetes 发行版,如果需要监控控制平面节点,可能需要调整参数中的污点。

如果不需要使用“Linux by Zabbix agent”模板监控节点,可以通过将zabbixAgent.enabled参数设置为false来禁用它,这将阻止部署 DaemonSet。

Zabbix代理

Zabbix proxy以主动模式(默认)作为单个副本部署安装在集群中。它从 Kubernetes APIkube-state-metrics 端点和 Zabbix agent收集数据。所有收集到的数据都缓存在本地,然后传输到代理所属的外部Zabbix服务器并用于监控。

如果集群中已经安装了 Zabbix proxy,则可以使用它来代替此图表中部署的 Zabbix proxy。设置zabbixProxy.enabled参数值false,并在用于监控的Zabbix服务器上添加代理,。

笔记

  • Kubernetes APIkube-state-metrics 端点和 Zabbix agent(如果已部署)必须可由代理访问。

安装

  • zabbix server和zabbix proxy版本只能有小版本号差别,zabbix server版本为6.0.22,zabbix proxy版本必须是6.0.xx

按照说明安装kubectl和helm工具。

添加存储库:
helm repo add zabbix-chart-6.0 https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/6.0

将图表的默认值导出helm-zabbix到文件$HOME/zabbix_values.yaml:
helm show values zabbix-chart-6.0/zabbix-helm-chrt > $HOME/zabbix_values.yaml
将$HOME/zabbix_values.yaml文件中的环境变量值zabbixProxy.env.ZBX_SERVER_HOST更改为用于监控的Zabbix服务器的地址,且Zabbix代理可以访问。如果需要,其他值可以根据环境更改。

列出集群的命名空间。
kubectl get namespaces

monitoring如果集群中不存在命名空间,则创建该命名空间。
kubectl create namespace monitoring

在 Kubernetes 集群中部署图表(如有必要,更新 YAML 文件路径)。
helm install zabbix zabbix-chart-6.0/zabbix-helm-chrt --dependency-update -f $HOME/zabbix_values.yaml -n monitoring

获取为服务帐户自动创建的令牌。
kubectl get secret zabbix-service-account -n monitoring -o jsonpath={.data.token} | base64 -d

zabbix server配置

1、添加agent代理

管理 - agent代理程序
zabbix-proxy

  • agent代理程序名称需要和部署的zabbix proxy 中的配置的相同,默认按照上面产生的默认配置名称:zabbix-proxy

      env:
        ## The variable allows to switch Zabbix proxy mode. By default, value is 0 - active proxy. Allowed values are 0 and 1.
        - name: ZBX_PROXYMODE
          value: 0
        ## Zabbix proxy hostname
        - name: ZBX_HOSTNAME
          value: zabbix-proxy
    

系统代理程序模式:主动式
代理地址:pod地址,主机地址

2、创建主机

用到的模板有两个
template
首先创建群组kubernetes

① 创建node监控

选择模板Kubernetes nodes by HTTP,群组kubernetes
node
在 宏 - 继承及主机 宏 中,修改两个宏:

{$KUBE.API.URL}
{$KUBE.API.TOKEN}

node-macro

② 创建 集群状态监控

选择模板Kubernetes cluster state by HTTP,群组kubernetes
cluster-state
在 宏 - 继承及主机 宏 中,修改两个宏:
cluster-state-macro

Kubernetes cluster state by HTTP模板会自动发现API serversController managerSchedulerKubelet

过一会儿,在主机列表中会显示出新增的监控项
主机发现清单


评论