使用 Grafana 统一监控展示-对接 Zabbix

使用,grafana,统一,监控,展示,对接,zabbix · 浏览次数 : 849

小编点评

**使用 Grafana 对接 Zabbix 进行统一监控** **简介** 在某些情况下,Metrics 监控的 2 大顶流:Zabbix: 用于非容器的虚拟机环境Prometheus: 用于容器的云原生环境是共存的。但是,在这种情况下,统一监控展示就不太方便。 **解决方案** 利用 Grafana 对接 Zabbix,可以创建更完整和可视的监控场景。 **步骤** 1. **安装 K3s** 和 **Grafana**。 2. **安装 Grafana-Zabbix 插件**并启用在 Grafana 上配置 DB 数据源和 Zabbix 数据源。 3. **导入 Zabbix 仪表板**并查看监控效果。 4. **配置 Zabbix 数据源**启用插件。 5. **测试**并验证插件是否正常运行。 **配置步骤** **1. 安装 K3s 和 Grafana** ```bash # 安装 K3s 安装 Grafana 安装 Zabbix helm repo add aekondnin-zabbix-app# install 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> ``` **2. 安装 Grafana-Zabbix 插件** ```bash kubectl apply -n grafana -f grafana-zabbix-app.yaml ``` **3. 配置 Zabbix 数据源** ```yaml dataSources: - type: Zabbix config: host: zabbix-web.zabbix.com port: 10051 username: admin password: your_password ``` **4. 配置插件** 在 Grafana 的 Nodeport 上访问并登录 Grafana,进入 Plugins 界面,选择 Zabbix,并启用插件。 **5. 测试插件** 在 Grafana 的侧面板的 Alerting 选项卡中选择 Zabbix,并查看监控效果。确保插件正常运行。 **6. 配置 Zabbix 数据源** 选择添加新的 Zabbix 数据源,并从下拉列表中选择 Zabbix。设置配置项,并在必要时点击保存。 **7. 验证插件** 在 Grafana 的侧面板的 Alerts 选项卡中选择 Zabbix,查看是否已成功创建了 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 中。

  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 DB - PostgreSQL Data Source

之所以启用数据库直连, 是因为如果海量的 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 选项卡并启用插件。如下图:

启用 Grafana-Zabbix 插件

配置 Zabbix 数据源

启用插件后,就可以添加 Zabbix data source 了。

要添加新的 Zabbix 数据源,单击 Add data source 并从下拉列表中选择 Zabbix。如下图:

配置 Zabbix 数据源示例 1

配置 Zabbix 数据源示例 2

关键的配置项有以下几个:(其他一般不需要动)

  • HTTP
  • Zabbix API details
    • UsernamePassword: 登录 Zabbix API 的账号密码。记得要用足够的权限。
    • Trends: 如果是 Zabbix 3.x 及以上就 enable. 当显示长时间段(超过几天)时这个选项强烈建议使用,因为几天的项目历史包含海量的数据点。使用趋势将提高 Grafana 的性能。
  • Direct DB Connection
    • 启用并选择上面创建好的 Zabbix DB Data Source.

在 Grafana 上导入 Zabbix 仪表板并查看监控效果

之后,导入自带的几个 Zabbix 的仪表板:

自带的 Zabbix 仪表板

接下来就能看到效果啦:

Grafana 支持灵活的表达式配置 zabbix 仪表板

如上图,Grafana 支持灵活的表达式配置 zabbix 仪表板:

  • Query Mode
  • Group
  • Host
  • item tag
  • Item: 聚合的表达式
  • Functions

完全不用担心 Zabbix 上某些复杂的仪表板无法在 Grafana 上复现。

下面是官方的一些 demo:

Grafana-Zabbix demo

Problems Panel

变量

突出一个酷炫

在 Grafana 上基于 Zabbix 指标配置告警

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

用 Grafana 配置 Zabbix 告警

以上就是本次全部的演示全过程,感兴趣的可以自己尝试复现一下。

🎉🎉🎉

总结

在本文中,我们介绍了利用 Grafana + 插件:Grafana-Zabbix 实现了以下效果:

  • Grafana 负责展示甚至告警
  • Zabbix 作为 Grafana 的其中一个数据源。

更近一步,我们的环境上,可能不止有 Zabbix 和 Prometheus 2 个数据源,甚至还会有:

  • Metrics
    • AWS CloudWatch
    • ...
  • Logging
  • Tracing

在这种情况下,将所有的这些监控都视作 Grafana 的数据源,实现监控数据的统一展示和联动:

统一展示:Grafana 可观察性技术栈

联动:

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

无缝联动:Grafana + Loki + Tempo

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

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

与使用 Grafana 统一监控展示-对接 Zabbix相似的内容:

使用 Grafana 统一监控展示-对接 Zabbix

概述 在某些情况下,Metrics 监控的 2 大顶流: Zabbix: 用于非容器的虚拟机环境 Prometheus: 用于容器的云原生环境 是共存的。但是在这种情况下,统一监控展示就不太方便,本文介绍利用 Grafana 对接 Zabbix, 来作为统一监控展示端。Let's go! 在这里,主

Grafana系列-统一展示-6-Zabbix仪表板

系列文章 Grafana 系列文章 📝Notes: 关于 Grafana系列-统一展示-6-Zabbix 数据源, 其实已经在之前的文章: 使用 Grafana 统一监控展示 - 对接 Zabbix 里详细介绍过了, 感兴趣的请移步阅读. 知识储备 一个图表上的多个 Items 我们可以在 met

Grafana 系列-统一展示-3-Prometheus 仪表板

系列文章 Grafana 系列文章 知识储备 Prometheus Template Variables 你可以使用变量来代替硬编码的细节,如 server、app 和 pod_name 在 metric 查询中。Grafana 在仪表盘顶部的下拉选择框中列出这些变量,帮助你改变仪表盘中显示的数据。

Grafana系列-统一展示-8-ElasticSearch日志快速搜索仪表板

系列文章 Grafana 系列文章 概述 我们是基于这篇文章: Grafana 系列文章(十二):如何使用 Loki 创建一个用于搜索日志的 Grafana 仪表板, 创建一个类似的, 但是基于 ElasticSearch 的日志快速搜索仪表板. 最终完整效果如下: 📝Notes: 其实我基于 E

Grafana系列-统一展示-7-ElasticSearch数据源

系列文章 Grafana 系列文章 ElasticSearch 数据源 Grafana内置了对Elasticsearch的支持。你可以进行多种类型的查询,以可视化存储在Elasticsearch中的日志或指标,并使用存储在Elasticsearch中的日志事件对图表进行注释。 配置 ES 数据源 关

[转帖]使用 Grafana 监控 TiDB 的最佳实践

https://docs.pingcap.com/zh/tidb/stable/grafana-monitor-best-practices 使用 TiUP 部署 TiDB 集群时,如果在拓扑配置中添加了 Grafana 和 Prometheus,会部署一套 Grafana + Prometheus

Apisix网关-使用Grafana可视化Apisix的Prometheus数据

Apisix安装部署 Apisix官网安装教程 Apisix Dashboard官网安装教程 本次教程使用RPM包安装方式 使用systemctl管理服务 Apisix配置要点 /usr/local/apisix/conf/config.yaml Apisix服务监听 etcd连接配置 admin_

[转帖]Promethues + Grafana + AlertManager使用总结

Prometheus是一个开源监控报警系统和时序列数据库,通常会使用Grafana来美化数据展示。 1|01. 监控系统基础架 1|11.1核心组件 Prometheus Server, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。 exporters ,数据采

Grafana 系列文章(二):使用 Grafana Agent 和 Grafana Tempo 进行 Tracing

👉️URL: https://grafana.com/blog/2020/11/17/tracing-with-the-grafana-cloud-agent-and-grafana-tempo/ ✍Author: Robert Fratto • 17 Nov 2020 📝Description

[转帖]使用Prometheus和Grafana监控RabbitMQ集群 (使用RabbitMQ自带插件)

https://www.cnblogs.com/hahaha111122222/p/15683696.html 配置RabbitMQ集群 官方文档:https://www.rabbitmq.com/prometheus.html#quick-start 官方github地址:https://gith