Zabbix 监控 Kubernetes 集群

news2024/11/23 21:21:54

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.coloradmin.cn/o/1847411.html

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

相关文章

qt 简单实验 画一个等边三角形

1.概要 2.代码 2.1 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr)…

3.3 Ubuntu24使用kubeadm部署高可用K8S集群

Ubuntu24使用kubeadm部署高可用K8S集群 使用kubeadm部署一个k8s集群&#xff0c;3个master1个worker节点。 1. 环境信息 操作系统&#xff1a;ubuntu24.04内存: 2GBCPU: 2网络: 能够互访&#xff0c;能够访问互联网 hostnameip备注k8s-master1192.168.0.51master1k8s-maste…

可视化数据科学平台在信贷领域应用系列七:自动机器学习(下篇)

在当今金融科技迅速发展的时代&#xff0c;自动机器学习&#xff08;AutoML&#xff09;逐步成为了信贷风控领域的重要工具。随着大数据和人工智能技术的进步以及信贷风险环境的快速变化&#xff0c;传统人工建模模式的时效性已经难以应对复杂多变的挑战。自动机器学习框架将数…

【linux】操作系统使用wget下载网络文件,内核tcpv4部分运行日志

打印日志代码及运行日志(多余日志被删除了些)&#xff1a; 登录 - Gitee.comhttps://gitee.com/r77683962/linux-6.9.0/commit/55a53caa06c1472398fac30113c9731cb9e3b482 测试步骤和手段&#xff1a; 1、清空 kern.log&#xff1b; 2、使用wget 下载linux-6.9.tar.gz&…

芯片方案SIC88336血氧仪方案

血氧仪利用红外线光源照射患者手指末梢&#xff0c;在经过血液的时候&#xff0c;光线会被血液中的氧合血红蛋白和脱氧血红蛋白吸收。传感器感知到吸收的光强度变化&#xff0c;并将其转化为电信号发送给主机。主机通过处理这些信号&#xff0c;计算出血氧饱和度值&#xff0c;…

数字贸易变革:新模式、新机遇、新发展

树莓集团通过积极探索数字贸易的新模式和新机遇&#xff0c;不断推动数字贸易的发展和创新。未来&#xff0c;树莓集团将继续秉承开放、合作、共赢的理念&#xff0c;与全球优秀的企业和合作伙伴共同探索新的发展路径&#xff0c;为实现数字贸易的升级贡献一份力量。 一、数字贸…

使用ASP.NET Core封装接口请求参数格式

有些人获取接口请求参数是直接使用数据库实体类来获取的&#xff0c;这种方式虽然写起来很方便&#xff0c;但是会导致swagger接口文档出现很多没用的参数&#xff0c;让人看着不舒服。 比如&#xff0c;新增用户只需要传用户名、密码、邮箱就可以了&#xff0c;但是实体类也包…

C语言之顺序结构以及程序调试的debug宏

一&#xff1a;C语言中的顺序结构 1:最浅显的顺序结构理解&#xff1a;三种结构之一 &#xff08;1&#xff09;代码执行的时候没有遇到判断跳转或者循环&#xff0c;默认是顺序执行的。执行完上一句则开始执行下一句。 &#xff08;2&#xff09;顺序结构说明cpu的工作状态&a…

GD32学习

参考视频13.立创开发板GD32教程&#xff1a;串口配置_哔哩哔哩_bilibili 固件库跟用户手册基本上差不多&#xff0c;只不过用用户手册编写程序的话会更加的底层&#xff0c;固件库的话就是把一些函数封装起来&#xff0c;用的时候拿过来即可&#xff0c;目前我还没有找到固件库…

AI日报|我国人工智能核心产业规模已达5784亿元!阿里通义Qwen2成斯坦福大模型榜单最强开源模型!

⭐️搜索“可信AI进展“关注公众号&#xff0c;动手做AI Agent书籍&#xff0c;限量免费赠送&#xff01;快来参与吧&#xff5e; 文章链接&#xff1a; 福利来啦&#xff01;动手做AI Agent书籍&#xff0c;限量免费赠送&#xff01; 今日热点&#xff1a; 我国人工智能企业…

6.21 移动语义与智能指针

//先构造&#xff0c;再拷贝构造//利用"hello"这个字符串创建了一个临时对象//并复制给了s3//这一步实际上new了两次String s3 "hello"; 背景需求&#xff1a; 这个隐式创建的字符串出了该行就直接销毁掉&#xff0c;效率比较低 可以让_pstr指向这个空间…

AI赋能前端:你的Chrome 控制台需要AI(爱)

像会永生那样去学习,像明天就要死亡那样去生活。——圣雄甘地 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder 此篇文章所涉及到的技术有 AI(Gemini)ChromeDevTool🪜魔法接码平台因为,行文字数所限,有些概念可能会一带而过亦或者提供对应的学习…

刘亦菲新剧玫瑰的故事

刘亦菲新剧《玫瑰的故事》&#xff1a;开放结局&#xff0c;无限遐想 当刘亦菲再次踏入荧屏&#xff0c;与导演汪俊携手打造的《玫瑰的故事》便引发了无数观众的期待与关注。这部剧不仅汇聚了众多实力派演员&#xff0c;更以其独特的剧情和精致的制作成为了近期热门的话题。《…

生成模型的两大代表:VAE和GAN

生成模型 给定数据集&#xff0c;希望生成模型产生与训练集同分布的新样本。对于训练数据服从\(p_{data}(x)\)&#xff1b;对于产生样本服从\(p_{model}(x)\)。希望学到一个模型\(p_{model}(x)\)与\(p_{data}(x)\)尽可能接近。 这也是无监督学习中的一个核心问题——密度估计…

服装连锁实体店如何做好会员营销管理

在现代商业环境中&#xff0c;会员营销管理已经成为服装连锁实体店提升客户忠诚度和增加销售额的重要手段。随着消费者对个性化服务需求的不断增加&#xff0c;如何通过有效的会员营销管理来满足客户需求、提高客户满意度和增强品牌粘性&#xff0c;已经成为服装连锁实体店亟需…

FFmpeg源码:AV_RB32宏定义分析

一、AV_RB32宏定义的作用 AV_RB32是FFmpeg源码中经常出现的一个宏&#xff0c;其定义如下&#xff1a; #ifndef AV_RB32 # define AV_RB32(p) AV_RB(32, p) #endif 该宏定义有多层。把它简化为函数&#xff0c;其函数声明可以等价于&#xff1a; uint32_t AV_RB32(uint…

网络爬虫设置代理服务器

目录 1&#xff0e;获取代理 IP 2&#xff0e;设置代理 IP 3. 检测代理 IP 的有效性 4. 处理异常 如果希望在网络爬虫程序中使用代理服务器&#xff0c;就需要为网络爬虫程序设置代理服务器。 设置代理服务器一般分为获取代理 IP 、设置代理 IP 两步。接下来&#xff0c;分…

oracle报错ora-01691,如何扩大表空间大小

1.目的 解决oracle数据库表结构空间不足&#xff0c;导致客户端或服务端程序无法连接数据库&#xff1b;知悉 oralce提示ora-01691的查询分析语句及快速解决办法 2.解决办法 查询表结构容量空间以及扩大容量后进行查询验证 select b.file_id,b.tablespace_name,b.file_name,b…

智汇云舟成为中煤集团中煤智能创新联盟成员单位

6月21日&#xff0c;第八届世界智能产业博览会平行会议暨中煤智能创新联盟交流会在天津水游城丽筠酒店顺利举行。智汇云舟受邀参与&#xff0c;并由中国中煤能源集团授予荣誉证书&#xff0c;正式成为中煤智能创新联盟成员单位。会议上&#xff0c;清华大学、中国矿业大学&…

CAC 2.0融合智谱AI大模型,邮件安全新升级

在数字化时代&#xff0c;电子邮件的安全问题日益成为关注的焦点。Coremail CACTER邮件安全人工智能实验室&#xff08;以下简称“CACTER AI实验室”&#xff09;凭借其在邮件安全领域的深入研究与创新实践&#xff0c;不断推动技术进步。 此前&#xff0c;CACTER AI实验室已获…