使用 Grafana 统一监控展示-对接 Zabbix
概述
在某些情况下,Metrics 监控的 2 大顶流:
- Zabbix: 用于非容器的虚拟机环境
- Prometheus: 用于容器的云原生环境
是共存的。但是在这种情况下,统一监控展示就不太方便,本文介绍利用 Grafana 对接 Zabbix, 来作为统一监控展示端。Let's go!
在这里,主要是用到了 alexanderzobnin/grafana-zabbix 开源项目。
Grafana-Zabbix 功能亮点
Grafana-Zabbix 是 Grafana 的一个插件,允许可视化来自 Zabbix 的监控数据,并创建用于分析指标和实时监控的仪表板。 该项目的主要目标是扩展 Zabbix 的监控数据可视化功能,并提供快速、强大的方法来创建仪表板。
Grafana 与 Grafana-Zabbix 插件相结合,可以创建很棒的仪表板。 Grafana-Zabbix 有如下的功能亮点:
- 丰富的绘图功能;
- 使用 Regex 选择多个指标;
- 使用模板 (template) 变量 (variableds) 创建交互式和可重用的仪表板;
- 在带有注释 (Annotations) 的图形上显示事件
- 使用指标处理函数(平均值 Avg、中值 Median、最小值 Min、最大值 Max、乘 Multiply、汇总 Summarize、时移 Time shift、别名 Alias)转换和调整数据
- 在同一仪表板或面板中混合来自多个数据源的指标
- 在 Grafana 中创建告警
- 使用 Problems 面板显示 triggers
- 在官方库中发现和共享仪表板
快速演示
接下来我们进行一个快速演示,所有资源都安装在 K8s 中。
- (前提)安装 K3s
- 安装 Grafana
- 安装 Zabbix
- 在 Grafana 上安装 Grafana-Zabbix 插件并启用
- 在 Grafana 上配置 DB 数据源和 Zabbix 数据源
- 在 Grafana 上导入 Zabbix 仪表板并查看监控效果
- (可选)在 Grafana 上基于 Zabbix 指标配置告警
安装 K3s
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
安装完成后执行以下命令查看运行状态:
sudo systemctl status k3s.service
kubectl get node
kubectl get addons -A
安装 Grafana
使用 Helm 安装:
# 添加 Grafana repo
helm repo add grafana https://grafana.github.io/helm-charts
# 安装
helm upgrade --install my-release grafana/grafana -n grafana --create-namespace --set persistence.enabled=true --set service.type=NodePort
这里为了后续使用方便加了 2 个参数:
persistence.enabled=true数据持久化,重启不丢失service.type=NodePort方便通过 NodePort 直接访问 Grafana UI
安装 Zabbix
为了图省事,也直接将 Zabbix 安装在 K3s 中。
但是注意,往往在生产使用场景中,Zabbix 是安装在虚拟机环境上的,并用 Zabbix Proxy 和 Zabbix Agent 监控 Prometheus 覆盖不到的区域(典型如:非容器化的物理机、虚机;网络设备;数据库等)
直接在 Helm Chart 官方市场 - Artifact Hub 里找一个安装:
helm repo add aekondratiev https://aekondratiev.github.io/helm-charts
helm install zabbix aekondratiev/zabbix-server -n zabbix --create-namespace
这个 aekondratiev/zabbix-server helm chart 会安装以下组件:
- zabbix-server
- 和 zabbix-server 一起,以 sidecar 形式运行的 zabbix-agent
- zabbix-web
- postgresql
在 Grafana 上配置 DB 数据源和 Zabbix 数据源
Grafana-Zabbix 的数据库直连功能
这里提一下,Grafana-Zabbix 插件可以使用 MySQL、Postgres 或 InfluxDB 数据源直接从 Zabbix 数据库查询历史和趋势数据。 为了执行查询,插件仅需要对history、history_uint、trends 和 trends_uint 表的读访问权限。 为了使连接更安全并防止不必要数据泄漏,强烈建议只授予对表的读访问权限。 但是如果您想使用这个数据源来查询其他数据,您可以向整个 zabbix 数据库授予 SELECT 权限。 此外,所有查询都由 Grafana 服务器调用,因此您可以将连接限制为仅与 Grafana 主机连接。 下面是 MySQL 示例:
GRANT SELECT ON zabbix.* TO 'grafana'@'grafana-host' identified by 'password';
配置 DB 数据源
在 Grafana 的创建 Data Source 选项中,选择 PostgreSQL 数据源类型并提供数据库主机地址和端口(默认值为 5432)。 填写数据库名称(通常为 zabbix)并指定凭据。如下图所示:

之所以启用数据库直连, 是因为如果海量的 zabbix 历史和趋势数据都通过 zabbix 的 API 查询,性能会有一定问题。
在 Grafana 上安装 Grafana-Zabbix 插件并启用
进入 Grafana 容器中,并使用 grafana-cli 安装:
kubectl exec -n grafana -it <grafana-pod-name> -- /bin/sh
# 进入容器后,执行
grafana-cli plugins install alexanderzobnin-zabbix-app
# 安装完成后
exit
# 退出容器后
kubectl rollout -n grafana restart deployment <grafana-deploy-name>
Warning:
通过
grafana-cli安装插件后需要重启生效,所以一定需要配置persistence.enabled=true, 否则重启后数据丢失,插件还是没装上。
安装后,就可以启用插件了。
通过 Grafana 的 Nodeport (如:http://192.168.1.5:30000) 访问并登录 Grafana(密码在 K8s Secret 中), 进入 Grafana 侧面板的 plugins 界面,选择 Apps 选项卡,然后选择 Zabbix ,打开 Config 选项卡并启用插件。如下图:

配置 Zabbix 数据源
启用插件后,就可以添加 Zabbix data source 了。
要添加新的 Zabbix 数据源,单击 Add data source 并从下拉列表中选择 Zabbix。如下图:


关键的配置项有以下几个:(其他一般不需要动)
- HTTP
- URL: Zabbix API url, 一般就是
/api_jsonrpc.php, 如上图 1 中的:http://zabbix-web.zabbix/api_jsonrpc.php
- URL: Zabbix API url, 一般就是
- Zabbix API details
- Username 和 Password: 登录 Zabbix API 的账号密码。记得要用足够的权限。
- Trends: 如果是 Zabbix 3.x 及以上就 enable. 当显示长时间段(超过几天)时这个选项强烈建议使用,因为几天的项目历史包含海量的数据点。使用趋势将提高 Grafana 的性能。
- Direct DB Connection
- 启用并选择上面创建好的 Zabbix DB Data Source.
在 Grafana 上导入 Zabbix 仪表板并查看监控效果
之后,导入自带的几个 Zabbix 的仪表板:

接下来就能看到效果啦:

如上图,Grafana 支持灵活的表达式配置 zabbix 仪表板:
- Query Mode
- Group
- Host
- item tag
- Item: 聚合的表达式
- Functions
完全不用担心 Zabbix 上某些复杂的仪表板无法在 Grafana 上复现。
下面是官方的一些 demo:




在 Grafana 上基于 Zabbix 指标配置告警
点击侧边栏 Alerting, 就可以创建基于 Zabbix 的告警,也可以直接在仪表板上编辑 panel 的 alert 进行配置,配置后效果如下:

以上就是本次全部的演示全过程,感兴趣的可以自己尝试复现一下。
总结
在本文中,我们介绍了利用 Grafana + 插件:Grafana-Zabbix 实现了以下效果:
- Grafana 负责展示甚至告警
- Zabbix 作为 Grafana 的其中一个数据源。
更近一步,我们的环境上,可能不止有 Zabbix 和 Prometheus 2 个数据源,甚至还会有:
- Metrics
- AWS CloudWatch
- ...
- Logging
- Tracing
在这种情况下,将所有的这些监控都视作 Grafana 的数据源,实现监控数据的统一展示和联动:

联动:
- 在 Slack 上收到 Grafana 发出的告警
- 点击链接或仪表板跳转到 Grafana 对应 Dashboard
- 在 Grafana 上查看相关 Metrics
- 在 Grafana 上跳转到 Metrics 异常时间点的日志
- 在 Grafana 上跳转到 Logs 异常的 Trace
- 发现并在 IDE 上 coding 解决问题

只能说,Grafana 为我们描绘了一个相当美妙的场景,未来可期。️️️
本文由博客一文多发平台 OpenWrite 发布!
使用 Grafana 统一监控展示-对接 Zabbix的更多相关文章
- 分布式监控系统Zabbix--使用Grafana进行图形展示
今天介绍一款高颜值监控绘图工具Grafana,在使用Zabbix监控环境中,通常我们会结合Grafana进行图形展示.Grafana默认没有zabbix作为数据源,需要手动给zabbix安装一个插 ...
- Grafana部署监控docker服务
Grafana部署监控docker服务 一.使用InfluxDB+cAdvisor+Grafana配置Docker监控 1.1Docker监控组件 1.2cAdvisor: 1.3Docker监控安装 ...
- Prometheus+Grafana企业监控系统
Prometheus+Grafana企业监控系统 作者 刘畅 实验配置: 主机名称 Ip地址 controlnode 172.16.1.70/24 slavenode1 172.16.1.71/24 ...
- k8s实战之部署Prometheus+Grafana可视化监控告警平台
写在前面 之前部署web网站的时候,架构图中有一环节是监控部分,并且搭建一套有效的监控平台对于运维来说非常之重要,只有这样才能更有效率的保证我们的服务器和服务的稳定运行,常见的开源监控软件有好几种,如 ...
- 如何监控 Tomcat?Zabbix 与 Cloud Insight 对比
JVM 监控工具有很多,像命令 jstat,jmap,jstack,jinfo 可以根据不同需求查看不同的系统信息,还有图像化界面 jconsole,都是很方便的工具.这些可以参考 JAVA自带监控工 ...
- 性能测试五十:Jmeter+Influxdb+Grafana实时数据展示系统搭建
如果用生成jtl文件再分析结果的方式的话,每一次请求就会往jtl里面写一条数据,在进行长时间的稳定性测试的时候,特别是当TPS很高的时候,写入的数据会非常的大,这个时候等稳定性测试完成,再对jtl进行 ...
- influxDB1.6版安装与配置(windows环境)、Jmeter+influxDB+Grafana性能监控
influxDB1.6版安装与配置(windows环境).Jmeter+influxDB+Grafana性能监控 来源:https://blog.csdn.net/SwTesting/article/ ...
- 四十八.监控概述 、 Zabbix基础 、 Zabbix监控服务
1.常用系统监控命令 查看内存信息 查看交换分区信息 查看磁盘信息 查看CPU信息 查看网卡信息 查看端口信息 查看网络连接信息 一般企业做监控的目的:实时报告系统状态,提前发现系统的问题. 监 ...
- Centos7.X 搭建Prometheus+node_exporter+Grafana实时监控平台
Prometheus简介 什么是 Prometheus Prometheus是一个开源监控报警系统和时序列数据库 主要功能 多维数据模型(时序由 metric 名字和 k/v 的 labels 构成) ...
- 分布式监控系统之Zabbix proxy
前文我们了解了zabbix 使用snmp和jmx信道采集数据的相关使用配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14029864.html:今天我们来 ...
随机推荐
- 【Azure Redis 缓存】Redis的指标显示CPU为70%,而Service Load却达到了100%。这两个指标意义的解释及如何缓解呢?
问题描述 为什么Redis的指标显示CPU为70%,而Service Load却达到了100%, 如何来解释这两个指标,以及如何来缓解这样的情况呢? 问题回答 CPU指标:该值表示的是用于 Redis ...
- 图像识别算法--VGG16
前言:人类科技就是不断烧开水(发电).丢石头(航天等).深度学习就是一个不断解方程的过程(参数量格外大的方程) 本文内容: 1.介绍VGG16基本原理 2.VGG16 pytorch复现 图像识别算法 ...
- C++ //排序案列 //描述:将person自定义数据类型进行排序,Person中有属性 姓名,年龄,身高 //排序规则: 按照年龄进行的升序,如果年龄相同按照身高进行降序
1 //排序案列 2 //描述:将person自定义数据类型进行排序,Person中有属性 姓名,年龄,身高 3 //排序规则: 按照年龄进行的升序,如果年龄相同按照身高进行降序 4 5 #inclu ...
- Mac上LLAMA2大语言模型安装到使用
LLAMA介绍 LLaMA是由Facebook的母公司Meta AI设计的一个新的大型语言模型.LLaMA拥有70亿到650亿个参数的模型集合,是目前最全面的语言模型之一. Llama是目前唯一一个可 ...
- 使用go语言开发自动化API测试工具
前言 上一篇文章说到我还开发了一个独立的自动测试工具,可以根据 OpenAPI 的文档来测试,并且在测试完成后输出测试报告,报告内容包括每个接口是否测试通过和响应时间等. 这个工具我使用了 go 语言 ...
- Tomcat 系列
Tomcat 系列 目录 Tomcat 系列 一. 基本概念 1.1 java jdk 概念 1.2 jsp.servlet是什么 1.3 web服务器.web容器.应用程序服务器 1.4 tomca ...
- MYSQL 主从不一致的原因分析
数据库作为存储数据的组件,数据的一致性一定是要保证的前提,今天给出两个场景来分析数据不一致的原因. binlog同步模式导致主从不一致 在MYSQL 中主库向从库同步数据是利用binlog记录修改操作 ...
- (二)Linux环境的学习环境的搭建
Xshell的安装和连接 由于我们打算通过Xshell进行命令的输入,就不再进行VMWARE-TOOLS的安装. 我们直接进行安装Xshell 并开始连接我们创建的创建的虚拟机 我们可以通过Xshel ...
- 推荐一款idea神级免费插件【Bito-ChatGPT】
今天推荐一款IDEA 插件神器:Bito-ChatGPT,在 IDEA 中安装直接可以使用 GPT,不需要使用魔法! 还有很重要的一点这个插件完全免费,且不限次数(目前是免费不限制次数). 环境要求: ...
- .Net实现Html保存到照片
本文将使用PuppeteerSharp组件.实现Html代码片段生成Jpg照片 PuppeteerSharp项目地址:https://github.com/hardkoded/puppeteer-sh ...