Zabbix 监控 Kubernetes 集群

Zabbix 监控 Kubernetes 集群

Zabbix作为一个成熟且功能强大的监控系统,被许多企业广泛采用。它能够对各种IT基础设施进行全面的监控,包括服务器、网络设备、应用程序等。而将Zabbix与Kubernetes结合,可以实现对Kubernetes集群的全面监控,从而提高集群的可观察性和管理效率。
在这里插入图片描述
Zabbix 的最低标准是它在监控 Kubernetes 和云原生应用程序方面与 Prometheus 一样有效。
Zabbix 提供与 Prometheus、警报管理器和 Grafana for Kubernetes 类似的指标和触发器,因为它们都使用相同的后端工具来执行此操作。然而,Zabbix 可以在一个产品中做到这一点,同时仍然保持灵活性,并允许您监视几乎任何您可以编写代码来收集的内容。关于应用程序监控,Zabbix 可以转换 Prometheus 导出器和端点提供给它的 Prometheus 指标。此外,由于 Zabbix 可以调用任何 HTTP 端点,因此它可以监视没有专用 Prometheus 端点的应用程序,这与 Prometheus 不同。

在这里插入图片描述
准备kubernets集群

root@node40:~# kubectl get nodes -o wide
NAME     STATUS   ROLES           AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
node40   Ready    control-plane   60d   v1.29.3   192.168.72.40   <none>        Ubuntu 22.04.2 LTS   5.15.0-105-generic   containerd://1.7.15
node41   Ready    <none>          60d   v1.29.3   192.168.72.41   <none>        Ubuntu 22.04.2 LTS   5.15.0-76-generic    containerd://1.7.15
node42   Ready    <none>          60d   v1.29.3   192.168.72.42   <none>        Ubuntu 22.04.2 LTS   5.15.0-76-generic    containerd://1.7.15

准备可用的默认storageclass存储

root@node40:~# kubectl get sc
NAME                         PROVISIONER        RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
openebs-hostpath (default)   openebs.io/local   Delete          WaitForFirstConsumer   false                  60d

部署zabbix-server

项目地址:https://github.com/zabbix-community/helm-zabbix

本示例在kubernetes集群中部署zabbix-server。

添加helm仓库

helm repo add zabbix-community https://zabbix-community.github.io/helm-zabbix

安装zabbix-server

helm upgrade --install zabbix-server zabbix-community/zabbix \-n monitoring --create-namespace \--set zabbixWeb.service.type=NodePort \--set postgresql.persistence.enabled=true

查看创建的pods

root@kube001:~# kubectl -n monitoring get pods
NAME                                             READY   STATUS    RESTARTS   AGE
zabbix-server-postgresql-0                         1/1     Running   0          47m
zabbix-server-zabbix-server-6fd6c44b57-hrdlx       2/2     Running   0          47m
zabbix-server-zabbix-web-79d84c458b-pwt7c          1/1     Running   0          47m
zabbix-server-zabbix-webservice-b8765d785-rj6g2    1/1     Running   0          47m

查看创建的service

root@kube001:~# kubectl -n monitoring get svc
NAME                            TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)               AGE
zabbix-server-postgresql              ClusterIP   10.96.1.32    <none>        5432/TCP              48m
zabbix-server-zabbix-server           ClusterIP   10.96.3.147   <none>        10051/TCP,10052/TCP   48m
zabbix-server-zabbix-web              NodePort    10.96.2.122   <none>        80:31080/TCP          48m
zabbix-server-zabbix-webservice       ClusterIP   10.96.0.126   <none>        10053/TCP             48m

查看为postgresql创建的pvc持久卷申请

root@node40:~# kubectl -n monitoring get pvc
NAME                                         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS       VOLUMEATTRIBUTESCLASS   AGE
postgresql-data-zabbix-server-postgresql-0   Bound    pvc-21a8a49b-cc14-4d62-b08c-ba3a4c20ea8b   5Gi        RWO            openebs-hostpath   <unset>                 47s

浏览器访问zabbix-web,通过NodePort service 端口在集群外访问,默认账号密码为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 chart地址: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 proxy 需要访问 Zabbix server,而代理可以将数据发送到安装在与每个代理相同的命名空间中的代理。集群角色允许 Zabbix 通过 Kubernetes API 访问集群中的资源。虽然可以修改集群角色来限制授予 Zabbix 的权限,但这将导致某些项目不受支持。如果您想通过 Zabbix 充分利用 Kubernetes 监控,我们建议保持不变。

Zabbix Helm Chart 将 kube-state-metrics 项目安装为依赖项。您可能已经熟悉 Kubernetes 组织下的这个项目,该项目根据 Kubernetes 资源的当前状态生成 Prometheus 格式的指标。此外,如果您有使用 Prometheus 监控集群的经验,您可能已经安装了它。如果是这种情况,您可以指向此部署,而不是安装另一个部署。

添加helm仓库

helm repo add zabbix-chart-7.0 https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/7.0

安装zabbix-agent

helm upgrade --install zabbix-agent zabbix-chart-7.0/zabbix-helm-chrt \-n monitoring --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 \--set zabbixAgent.enabled=true

查看创建的pods

root@node40:~# kubectl -n monitoring get pods
......
NAME                                               READY   STATUS    RESTARTS   AGE
zabbix-agent-9dxl6                                 1/1     Running   0          43m
zabbix-agent-kube-state-metrics-67f68d9db9-fpw79   1/1     Running   0          43m
zabbix-agent-svv4l                                 1/1     Running   0          43m
zabbix-agent-wq2dt                                 1/1     Running   0          43m
zabbix-proxy-58bcbcf55c-g44q6                      1/1     Running   0          39m

查看创建的service

......
root@node40:~# kubectl -n monitoring get svc
NAME                                  TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)               AGE
zabbix-agent-kube-state-metrics       ClusterIP   10.96.2.212   <none>        8080/TCP              43m
zabbix-agent-zabbix-helm-chrt-agent   ClusterIP   10.96.1.235   <none>        10050/TCP             43m
zabbix-agent-zabbix-helm-chrt-proxy   ClusterIP   10.96.2.129   <none>        10051/TCP             43m

需要从我们的 zabbix 服务器中提取对 api 服务器进行身份验证所需的 zabbix 服务帐户令牌。将此命令的输出保存在某处,因为我们需要它来配置 zabbix UI。

kubectl get secret zabbix-service-account -n monitoring -o jsonpath={.data.token} | base64 -d

配置zabbix-web

添加代理

我们将通过管理 -> 代理来添加代理:

  1. 单击创建代理。因为默认情况下这是一个主动代理,所以我们只需要指定代理名称。如果您没有对 helm 图表进行任何更改,则默认为 zabbix-proxy。如果您想以不同的方式命名,可以在 helm 图表中更改代理的环境变量 zbx_hostname。我们暂时将其保留为默认值。您将输入该名称,然后单击“添加”。几分钟后,您将开始看到它说代理已被看到。
  2. 创建一个Host Group,放置与Kubernetes相关的主机。对于这个例子,我们创建一个,我们将其称为 Kubernetes。
  3. 前往配置下的主机页面,然后单击创建主机。第一个主机将收集与监控 Kubernetes 节点相关的指标,我们将使用 Zabbix 低级发现来发现节点并创建新主机。
  4. 将此主机命名为 Kubernetes Nodes。我们还将将此主机分配给我们创建的 Kubernetes 主机组,并通过 HTTP 附加模板 Kubernetes 节点。
  5. 将“Monitored by proxy”行更改为之前创建的代理,称为 zabbix-proxy。
  6. 单击“宏”选项卡并选择“继承和宿主宏”。您应该能够看到可能设置为影响集群中监视内容的所有宏。在这种情况下,我们需要更改前两个宏。第一个 {KUBE.API.ENDPOINT.URL} 应设置为 Kubernetes API 端点。在我们的例子中,我们可以将其设置为我之前提到的:default.svc.cluster.local:443/api。接下来,应将令牌设置为之前从命令行检索到的值。
  7. 点按添加。几分钟后,您应该开始在最新数据页上看到数据,并在代表每个节点的主机页上看到新主机。

zabbix-web创建proxy,选择管理–Proxy
在这里插入图片描述
确认proxy 状态为online
在这里插入图片描述

添加主机

新建主机组,选择数据采集–主机群组
在这里插入图片描述

zabbix-web创建host,选择数据采集–主机,在Templates/Applications中勾选Kubernetes nodes by HTTP模板。
在这里插入图片描述

配置宏
在这里插入图片描述

您还需要 Kubernetes API 端点。在大多数情况下,您将使用已安装的代理,而不是直接使用服务器或集群外部的代理。如果是这种情况,您可以使用 API 的服务 DNS。我们应该能够通过指向 https://kubernetes.default.svc.cluster.local:443 来访问它。

查看kubernetes监控指标,选择监测–最新数据
在这里插入图片描述

创建附加主机

现在让我们创建另一个主机来表示通过 Kubernetes API 和 kube-state-metrics 端点可用的指标。

  1. 再次单击“创建主机”,将该主机命名为“Kubernetes Cluster State”,并再次将其添加到 Kubernetes 组中。
  2. 我们还通过 HTTP 附加 Kubernetes 集群状态模板。同样,我们将选择之前创建的代理。
  3. 假设 Helm Chart 安装过程中没有进行任何其他更改,我们现在可以添加该主机。

在这里插入图片描述

几分钟后,您应该会收到与集群状态相关的指标,包括代表每个节点上 kubelet 的主机。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/31755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“打造智能售货机系统,基于ruoyi微服务版本生成基础代码“

目录 # 开篇 1. 菜单 2. 字典配置 3. 表配置 3.1 导入表 3.2 区域管理 3.3 合作商管理 3.4 点位管理 4. 代码导入 4.1 后端代码生成 4.2 前端代码生成 5. 数据库代码执行 6. 点位管理菜单顺序修改 7. 页面展示 8. 附加设备表 8.1 新增设备管理菜单 8.2 创建字…

使用上海云盾 CDN 和 CloudFlare 后 Nginx、 WordPress、 Typecho 获取访客真实 IP 方法

最近因为被 DDoS/CC 攻击的厉害,明月就临时的迁移了服务器,原来的服务器就空置下来了,让明月有时间对服务器进行了重置重新部署安装生产环境。因为站点同时使用了上海云盾和 CloudFlare(具体思路可以参考【国内网站使用国外 CloudFlare CDN 的思路分享】一文)两个 CDN 服务…

实验13 简单拓扑BGP配置

实验13 简单拓扑BGP配置 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 BGP&#xff08;Border Gateway Protocol&#xff0c;边界网关协议&#xff09;是一种用于自治系统间的动态路由协议&#xff0c;用于在自治系统&#xff08;AS&…

映射文件中#{}里的其他属性

#{}里除了可以写接收参数的名称外&#xff0c;还可以设置javaType&#xff0c;jdbcType&#xff0c;mode&#xff0c;numericScale,resultMap,typeHandler,jdbcTypeName这些属性的。 其他的属性除mode&#xff08;存储过程相关讲到存储过程的时候在讲&#xff09;外使用方式都…

openEuler 22.03 (LTS-SP1)服务器用ntpd同步GPS时间服务器的案例

本文记录了openEuler 22.03 (LTS-SP1)的二级时间服务器用chronyd不能自动同步GPS时间服务器&#xff0c;改用ntpd同步GPS时间服务器成功的案例 一、环境简述 1、本环境中有两台GPS一级时间服务器&#xff0c;IP如下&#xff1a; 192.168.188.66 192.168.188.74 2、有一台o…

go-admin-ui开源后台管理系统华为云部署

1.华为云开通8000与9527端口 2.编译 编译成功 3.发布到远程服务器 4.登陆华为云终端 5.安装Nginx 6.查看服务启动状态 7.添加网站 添加与修改配置www-data 改为 www 自定义日志输出格式 添加网站配置文件go_admin_ui.conf 添加如下内容: location 下的root指向网站文件夹 修…

Java用文件流mask文本文件某些特定字段

思路 在Java中&#xff0c;如果你想要掩码&#xff08;mask&#xff09;文本文件中的某些特定字段&#xff0c;你可以按照以下步骤进行&#xff1a; 读取文本文件内容。找到并识别需要掩码的字段。用特定的掩码字符&#xff08;如星号*&#xff09;替换这些字段。将修改后的内…

一个自定义流程的平台

脚本语言使用的是C#&#xff0c;当用户发布一个新的流程时&#xff0c;会把C#的脚本编译成dll&#xff0c;然后添加到微服务中&#xff0c;因为有了硬编译&#xff0c;所以执行速度是非常快的。逻辑脚本支持调试&#xff0c;可以断点和逐行调试。平台提供了调试工具&#xff0c…

python测试工程师 之 unittest框架总结

unittest 学习目标unittest 框架的基本使⽤⽅法(组成)断⾔的使⽤ (让程序⾃动的判断预期结果和实际结果是否相符)参数化(多个测试数据, 测试代码写⼀份 传参)⽣成测试报告 复习pythonunittest 框架的介绍核⼼要素(组成)1. TestCase 测试⽤例, 这个测试⽤例是 unittest 的组成部…

【windows】字体安装手册

windows字体安装手册 1 下载字体文件 百度搜索XXX字体ttf文件进行下载 附&#xff1a;宋体gb2312下载地址&#xff1a; https://www.downza.cn/soft/7780.html 2 字体安装 1.搜索字体 2.将下载的ttf文件拖拽添加 3.关闭办公软件重新打开后&#xff0c;outlook、word、…

Windows环境下使用VisualGDB进行Linux项目开发

1.新建项目-打开文件下的新建项目菜单 2.工程项目类型配置 3.Linux机器选择设置 4.设置代码位置 5.编译选项设置 6.调试环境设置

数据结构【二叉树】

前言 我们在前面学习了使用数组来实现二叉树&#xff0c;但是数组实现二叉树仅适用于完全二叉树&#xff08;非完全二叉树会有空间浪费&#xff09;&#xff0c;所以我们本章讲解的是链式二叉树&#xff0c;但由于学习二叉树的操作需要有一颗树&#xff0c;才能学习相关的基本…

20240620日志:TAS-MRAM的电阻开放分析

TAS-MRAM的电阻开放缺陷分析 1 MRAM介绍开放电阻的缺陷 1 MRAM介绍 MRAM(Magnetic random access memory)&#xff0c;磁随机存储器&#xff0c;利用磁性材料的状态来存储数据。MRAM的存储单元通常由一个磁隧道结&#xff08; M T J 茅台酒 MTJ^{茅台酒} MTJ茅台酒&#xff0c…

【大模型驯化-Prompt】企业级大模型Prompt调试技巧与batch批量调用方法

【大模型驯化-Prompt】企业级大模型Prompt调试技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的博客个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容文档关注&#x…

舒适佩戴,享受沉浸式音乐体验,西圣AVA2耳机体验

平时不管是听音乐&#xff0c;还是打电话&#xff0c;戴上一副耳机都可以让我们获得更好的隐私性&#xff0c;并且在公共场所&#xff0c;比如办公室、车厢里&#xff0c;也可以获得属于自己的空间。现在市面上耳机的选择非常多&#xff0c;音质、续航和佩戴的舒适度是我们选择…

接口自动化测试实战:测试用例也能自动生成

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 作为测试&#xff0c;你可能会对以下场景感到似曾相识&#xff1a;开发改好的 BUG 反复横跳&…

智慧园区数字化能源云平台的多元化应用场景,您知道哪些?

智慧园区数字化能源云平台的多元化应用场景&#xff0c;您知道哪些&#xff1f; 智慧园区数字化能源云平台&#xff0c;作为新一代信息技术与传统能源管理深度融合的典范&#xff0c;正引领着产业园区向智慧化、绿色化转型的浪潮。该平台依托于大数据、云计算及人工智能等前沿…

跨境多账号需知:指纹浏览器需要用独立IP吗?

指纹浏览器也成为反检测浏览器&#xff0c;旨在安全管理多个账户。在跨境多账号中&#xff0c;多个账号容易引发网站怀疑并最终导致大量账户被暂停&#xff0c;使用反检测浏览器的主要目的是通过创建新的浏览器指纹来隐藏用户的真实浏览器指纹。 但浏览器指纹并不是网站关注的唯…

解决Few-shot问题的两大方法:元学习与微调

基于元学习&#xff08;Meta-Learning&#xff09;的方法&#xff1a; Few-shot问题或称为Few-shot学习是希望能通过少量的标注数据实现对图像的分类&#xff0c;是元学习(Meta-Learning)的一种。 Few-shot学习&#xff0c;不是为了学习、识别训练集上的数据&#xff0c;泛化…

Java中将文件转换为Base64编码的字节码

在Java中&#xff0c;将文件转换为Base64编码的字节码通常涉及以下步骤&#xff1a; 读取文件内容到字节数组。使用java.util.Base64类对字节数组进行编码。 下面是一个简单的Java示例代码&#xff0c;演示如何实现这个过程&#xff1a; import java.io.File; import java.io…