Zabbix 监控 Kubernetes 集群
Zabbix是一个成熟、功能强大的监控系统,被很多公司广泛使用。您可以全面监控服务器、网络设备、应用程序等各种IT基础设施。 Zabbix与Kubernetes相结合,提供对Kubernetes集群的全面监控,提高集群的可观测性和管理效率。
Zabbix 的最低要求是在监控Kubernetes 和云原生应用方面与Prometheus 一样有效。
Zabbix 为Prometheus、Alert Manager 和Grafana for Kubernetes 提供类似的指标和触发器。他们都使用相同的后端工具来执行此操作。然而,Zabbix 在一个产品中做到了这一点,同时保持灵活性并允许您编写代码来监视几乎所有您可以收集的内容。在应用程序监控方面,Zabbix 可以转换Prometheus 导出器和端点提供的Prometheus 指标。此外,Zabbix 可以调用任何HTTP 端点,允许您监控没有专用Prometheus 端点的应用程序,这与Prometheus 不同。
准备Kubernetes 集群
root@node40:~# kubectl get node -o Wide
名称状态角色年龄版本内部IP 外部IP 操作系统映像内核版本容器运行时
Node 40 Ready 控制平面60d v1.29.3 192.168.72.40 无Ubuntu 22.04.2 LTS 5.15.0-105-genericcontainerd://1.7.15
node41 就绪无60d v1.29.3 192.168.72.41 无Ubuntu 22.04.2 LTS 5.15.0-76-genericcontainerd://1.7.15
节点42 就绪无60d v1.29.3 192.168.72.42 无Ubuntu 22.04.2 LTS 5.15.0-76-genericcontainerd://1.7.15
准备可用的默认存储类存储
root@node40:~# kubectl 获取sc
名称提供商回收策略卷绑定模式允许卷扩展年龄
openebs-hostpath(默认) openebs.io/local 删除WaitForFirstConsumer false 60d
部署zabbix-server
项目地址:https://github.com/zabbix-community/helm-zabbix
本示例在kubernetes 集群上部署zabbix-server。
添加Helm 存储库
添加Helm 存储库zabbix-community https://zabbix-community.github.io/helm-zabbix
安装zabbix服务器
Helm 升级–安装zabbix-server zabbix-community/zabbix \\
-n 监视器–create-namespace \\
–set zabbixWeb.service.type=NodePort \\
–设置postgresql.persistence.enabled=true
查看创建的Pod
root@kube001:~# kubectl -n 获取监控Pod
姓名准备状态简历年龄
zabbix-server-postgresql-0 1/1 运行0 47m
zabbix-server-zabbix-server-6fd6c44b57-hrdlx 2/2 运行0 47 分钟
zabbix-server-zabbix-web-79d84c458b-pwt7c 1/1 运行0 47 分钟
zabbix-server-zabbix-webservice-b8765d785-rj6g2 1/1 运行0 47m
查看创建的服务
root@kube001:~# kubectl -n 监控获取svc
名称类型集群IP 外部IP 端口期限
zabbix-server-postgresql ClusterIP 10.96.1.32 无5432/TCP 48m
zabbix-server-zabbix-server ClusterIP 10.96.3.147 无10051/TCP, 10052/TCP 48m
zabbix-server-zabbix-web NodePort 10.96.2.122 无80:31080/TCP 48m
zabbix-server-zabbix-webservice ClusterIP 10.96.0.126 无10053/TCP 48m
查看为postgresql 创建的PVC 持久卷应用程序
root@node40:~# kubectl -n 监控获取pvc
名称状态卷容量访问模式存储类别卷属性类别年龄
postgresql-data-zabbix-server-postgresql-0 绑定pvc-21a8a49b-cc14-4d62-b08c-ba3a4c20ea8b 5Gi RWO openebs-hostpath 未设置47s
浏览器访问zabbix-web,通过NodePort服务端口访问集群外部。默认账户密码为Admin/zabbix。
http://192.168.72.40:31080
Web访问如下。
部署zabbix-agent
项目地址:https://git.zabbix.com/projects/ZT/repos/kubernetes-helm/browse
官方博客:https://blog.zabbix.com/monitoring-kubernetes-with-zabbix/25055/
Helm图表地址:https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/7.0/
Zabbix 通过收集Kubernetes API 和kube-state-metrics 公开的指标来监控Kubernetes。在集群中安装必要的组件,以使用Zabbix 提供的Helm Chart 监控集群。 Helm Chart 包括作为一组守护进程安装的Zabbix 代理,用于监视每个节点上的本地资源和应用程序。还安装了Zabbix 代理来收集监控数据并将其发送到外部Zabbix 服务器。
只有Zabbix 代理需要访问Zabbix 服务器,并且代理可以将数据发送到安装在与每个代理相同的命名空间中的代理。集群角色允许Zabbix 通过Kubernetes API 访问集群内的资源。可以通过更改集群的角色来限制授予Zabbix的权限,但随后某些项目将不再受支持。如果您想通过Zabbix 充分利用Kubernetes 监控,我们建议保持不变。
Zabbix Helm Chart 将kube-state-metrics 项目安装为依赖项。您可能已经了解Kubernetes 组织下的这个项目,该项目根据Kubernetes 资源的当前状态生成Prometheus 风格的指标。此外,如果您有使用Prometheus 监控集群的经验,那么您可能已经安装了Prometheus。在这种情况下,您可以指定此部署,而不是安装另一个部署。
添加Helm 存储库
添加Helm 存储库zabbix-chart-7.0 https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/7.0
安装zabbix代理
Helm升级–安装zabbix-agent zabbix-chart-7.0/zabbix-helm-chrt \\
-n 监视器–create-namespace \\
–set zabbixProxy.enabled=true \\
–set zabbixProxy.env[0].name=ZBX_HOSTNAME \\
–set zabbixProxy.env[0].value=zabbix-proxy \\
–set zabbixProxy.env[1].name=ZBX_SERVER_HOST \\
–set zabbixProxy.env[1].value=zabbix-server-zabbix-server \\
–设置zabbixAgent.enabled=true
查看创建的Pod
root@node40:~# kubectl -n 获取pod 监控
.
姓名准备状态简历年龄
zabbix-agent-9dxl6 1/1 运行0 43 米
zabbix-agent-kube-state-metrics-67f68d9db9-fpw79 1/1 运行0 43 分钟
zabbix-agent-svv4l 1/1 运行0 43m
zabbix-agent-wq2dt 1/1 运行0 43 米
zabbix-proxy-58bcbcf55c-g44q6 1/1 运行0 39 米
查看创建的服务
.
root@node40:~# kubectl -n 监控获取svc
名称类型集群IP 外部IP 端口期限
zabbix-agent-kube-state-metrics ClusterIP 10.96.2.212 无8080/TCP 43m
zabbix-agent-zabbix-helm-chrt-agent ClusterIP 10.96.1.235 无10050/TCP 43m
zabbix-agent-zabbix-helm-chrt-proxy ClusterIP 10.96.2.129 无10051/TCP 43m
必须从zabbix 服务器中提取向API 服务器进行身份验证所需的zabbix 服务帐户令牌。将此命令的输出保存在某处,因为您将需要它来配置zabbix UI。
kubectl 获取秘密zabbix-service-account -n 监视器-o jsonpath={.data.token} |
配置zabbix-web
添加代理
从“管理-代理”添加代理。
单击创建代理。默认情况下这是活动代理,因此您只需指定代理名称。如果您不对helm 图表进行任何更改,它将默认为zabbix-proxy。如果您想给它一个不同的名称,您可以在Helm Chart 中更改代理的环境变量zbx_hostname。此处保留默认值。输入名称并单击“添加”。几分钟后,您将开始看到一条消息,表明您的代理已被发现。创建主机组,放置Kubernetes相关主机。在此示例中,我们将创建一个称为Kubernetes 的东西。进入“配置”下的“主机”页面,然后单击“创建主机”。第一个主机收集与监控Kubernetes 节点相关的指标,使用Zabbix 低级发现发现节点,并创建新主机。将此主机命名为“Kubernetes Nodes”。另外,将此主机分配给您创建的Kubernetes 主机组,并通过HTTP 附加模板Kubernetes 节点。将“Monitored by proxy”行更改为您之前创建的名为zabbix-proxy 的代理。单击宏选项卡并选择宏继承和托管。您应该会看到配置为影响集群中监控内容的宏。在这种情况下,您需要更改前两个宏。第一个{KUBE.API.ENDPOINT.URL} 必须设置为您的Kubernetes API 端点。在本示例中,可以将其设置为如上所述的default.svc.cluster.local:443/api。接下来,您需要将令牌设置为之前从命令行获取的值。单击添加。几分钟后,您应该在“最新数据”页面上看到数据,并且您应该开始在“主机”页面上看到代表每个节点的新主机。
zabbix-web创建代理并选择management-Proxy
验证代理状态是否在线
添加主机
创建新的主机组并选择数据收集> 主机组。
使用zabbix-web创建主机,选择Data Collection Hosts,在Templates/Applications下勾选带有HTTP模板的Kubernetes节点。
配置宏
还需要Kubernetes API 端点。在大多数情况下,您将使用已安装的代理,而不是直接使用服务器或群集外部的代理。在这种情况下,您可以使用API的服务DNS。您应该能够通过指定https://kubernetes.default.svc.cluster.local:443 来访问它。
查看Kubernetes监控指标,选择“监控-最新数据”。
创建附加主机
现在,让我们创建另一个主机来表示通过Kubernetes API 和kube-state-metrics 端点可用的指标。
再次单击“创建主机”,将主机命名为“Kubernetes Cluster State”,并再次将其添加到Kubernetes 组中。还通过HTTP 附加Kubernetes 集群状态模板。再次选择您之前创建的代理。假设在Helm Chart 安装期间没有进行其他更改,您现在应该能够添加主机。
几分钟后,您应该会收到与集群状态相关的指标,包括代表每个节点上kubelet 的主机。
#Zabbix监控以上Kubernetes集群相关内容来源仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91186.html