概述

在某些情况下,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 中。

  1. (前提)安装 K3s
  2. 安装 Grafana
  3. 安装 Zabbix
  4. 在 Grafana 上安装 Grafana-Zabbix 插件并启用
  5. 在 Grafana 上配置 DB 数据源和 Zabbix 数据源
  6. 在 Grafana 上导入 Zabbix 仪表板并查看监控效果
  7. (可选)在 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 数据库查询历史和趋势数据。 为了执行查询,插件仅需要对historyhistory_uinttrendstrends_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

  • Zabbix API details
    • UsernamePassword: 登录 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 的数据源,实现监控数据的统一展示和联动:

联动:

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

只能说,Grafana 为我们描绘了一个相当美妙的场景,未来可期。️️️

本文由博客一文多发平台 OpenWrite 发布!

使用 Grafana 统一监控展示-对接 Zabbix的更多相关文章

  1. 分布式监控系统Zabbix--使用Grafana进行图形展示

      今天介绍一款高颜值监控绘图工具Grafana,在使用Zabbix监控环境中,通常我们会结合Grafana进行图形展示.Grafana默认没有zabbix作为数据源,需要手动给zabbix安装一个插 ...

  2. Grafana部署监控docker服务

    Grafana部署监控docker服务 一.使用InfluxDB+cAdvisor+Grafana配置Docker监控 1.1Docker监控组件 1.2cAdvisor: 1.3Docker监控安装 ...

  3. Prometheus+Grafana企业监控系统

    Prometheus+Grafana企业监控系统 作者 刘畅 实验配置: 主机名称 Ip地址 controlnode 172.16.1.70/24 slavenode1 172.16.1.71/24 ...

  4. k8s实战之部署Prometheus+Grafana可视化监控告警平台

    写在前面 之前部署web网站的时候,架构图中有一环节是监控部分,并且搭建一套有效的监控平台对于运维来说非常之重要,只有这样才能更有效率的保证我们的服务器和服务的稳定运行,常见的开源监控软件有好几种,如 ...

  5. 如何监控 Tomcat?Zabbix 与 Cloud Insight 对比

    JVM 监控工具有很多,像命令 jstat,jmap,jstack,jinfo 可以根据不同需求查看不同的系统信息,还有图像化界面 jconsole,都是很方便的工具.这些可以参考 JAVA自带监控工 ...

  6. 性能测试五十:Jmeter+Influxdb+Grafana实时数据展示系统搭建

    如果用生成jtl文件再分析结果的方式的话,每一次请求就会往jtl里面写一条数据,在进行长时间的稳定性测试的时候,特别是当TPS很高的时候,写入的数据会非常的大,这个时候等稳定性测试完成,再对jtl进行 ...

  7. influxDB1.6版安装与配置(windows环境)、Jmeter+influxDB+Grafana性能监控

    influxDB1.6版安装与配置(windows环境).Jmeter+influxDB+Grafana性能监控 来源:https://blog.csdn.net/SwTesting/article/ ...

  8. 四十八.监控概述 、 Zabbix基础 、 Zabbix监控服务

     1.常用系统监控命令 查看内存信息 查看交换分区信息 查看磁盘信息 查看CPU信息 查看网卡信息 查看端口信息 查看网络连接信息   一般企业做监控的目的:实时报告系统状态,提前发现系统的问题. 监 ...

  9. Centos7.X 搭建Prometheus+node_exporter+Grafana实时监控平台

    Prometheus简介 什么是 Prometheus Prometheus是一个开源监控报警系统和时序列数据库 主要功能 多维数据模型(时序由 metric 名字和 k/v 的 labels 构成) ...

  10. 分布式监控系统之Zabbix proxy

    前文我们了解了zabbix 使用snmp和jmx信道采集数据的相关使用配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14029864.html:今天我们来 ...

随机推荐

  1. 【Azure Redis 缓存】Redis的指标显示CPU为70%,而Service Load却达到了100%。这两个指标意义的解释及如何缓解呢?

    问题描述 为什么Redis的指标显示CPU为70%,而Service Load却达到了100%, 如何来解释这两个指标,以及如何来缓解这样的情况呢? 问题回答 CPU指标:该值表示的是用于 Redis ...

  2. 图像识别算法--VGG16

    前言:人类科技就是不断烧开水(发电).丢石头(航天等).深度学习就是一个不断解方程的过程(参数量格外大的方程) 本文内容: 1.介绍VGG16基本原理 2.VGG16 pytorch复现 图像识别算法 ...

  3. C++ //排序案列 //描述:将person自定义数据类型进行排序,Person中有属性 姓名,年龄,身高 //排序规则: 按照年龄进行的升序,如果年龄相同按照身高进行降序

    1 //排序案列 2 //描述:将person自定义数据类型进行排序,Person中有属性 姓名,年龄,身高 3 //排序规则: 按照年龄进行的升序,如果年龄相同按照身高进行降序 4 5 #inclu ...

  4. Mac上LLAMA2大语言模型安装到使用

    LLAMA介绍 LLaMA是由Facebook的母公司Meta AI设计的一个新的大型语言模型.LLaMA拥有70亿到650亿个参数的模型集合,是目前最全面的语言模型之一. Llama是目前唯一一个可 ...

  5. 使用go语言开发自动化API测试工具

    前言 上一篇文章说到我还开发了一个独立的自动测试工具,可以根据 OpenAPI 的文档来测试,并且在测试完成后输出测试报告,报告内容包括每个接口是否测试通过和响应时间等. 这个工具我使用了 go 语言 ...

  6. Tomcat 系列

    Tomcat 系列 目录 Tomcat 系列 一. 基本概念 1.1 java jdk 概念 1.2 jsp.servlet是什么 1.3 web服务器.web容器.应用程序服务器 1.4 tomca ...

  7. MYSQL 主从不一致的原因分析

    数据库作为存储数据的组件,数据的一致性一定是要保证的前提,今天给出两个场景来分析数据不一致的原因. binlog同步模式导致主从不一致 在MYSQL 中主库向从库同步数据是利用binlog记录修改操作 ...

  8. (二)Linux环境的学习环境的搭建

    Xshell的安装和连接 由于我们打算通过Xshell进行命令的输入,就不再进行VMWARE-TOOLS的安装. 我们直接进行安装Xshell 并开始连接我们创建的创建的虚拟机 我们可以通过Xshel ...

  9. 推荐一款idea神级免费插件【Bito-ChatGPT】

    今天推荐一款IDEA 插件神器:Bito-ChatGPT,在 IDEA 中安装直接可以使用 GPT,不需要使用魔法! 还有很重要的一点这个插件完全免费,且不限次数(目前是免费不限制次数). 环境要求: ...

  10. .Net实现Html保存到照片

    本文将使用PuppeteerSharp组件.实现Html代码片段生成Jpg照片 PuppeteerSharp项目地址:https://github.com/hardkoded/puppeteer-sh ...