使用 Grafana 统一监控展示——对接 Zabbix | 运维进阶
使用 Grafana 统一监控展示——对接 Zabbix | 运维进阶
talkwithtrend
talkwithtrend.com社区(即twt社区)官方公众号,持续发布优秀社区原创内容。内容深度服务企业内各方向的架构师、运维主管、开发和运维工程师等IT专业岗位人群,让您时刻和国内企业IT同行保持信息同步。
【作者】崔凯东, 毕业于南京航空航天大学,擅长中间件、Oracle、应用性能领域相关技术,是APM行业认证专家、容器技术认证专家、DevOps技术专家。
Zabbix: 用于非容器的虚拟机环境 Prometheus: 用于容器的云原生环境
在这里,主要是用到了 alexanderzobnin/grafana-zabbix [1] 开源项目。
Grafana-Zabbix 功能
丰富的绘图功能 使用 Regex 选择多个指标 使用模板 (template) 变量 (variableds) 创建交互式和可重用的仪表板 在带有注释 (Annotations) 的图形上显示事件 -
使用指标处理函数(平均值 Avg、中值 Median、最小值 Min、最大值 Max、乘 Multiply、汇总 Summarize、时移 Time shift、别名 Alias)转换和调整数据 在同一仪表板或面板中混合来自多个数据源的指标 在 Grafana 中创建告警 使用 Problems 面板显示 triggers 在官方库中发现和共享仪表板
快速演示
安装 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 [2] 里找一个安装:
helm repo add aekondratiev https://aekondratiev.github.io/helm-charts
helm install zabbix aekondratiev/zabbix-server -n zabbix --create-namespace
这个 aekondratiev/zabbix-server [3] 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
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 的数据源,实现监控数据的统一展示和联动:
联动:
1.在 Slack 上收到 Grafana 发出的告警
2.点击链接或仪表板跳转到 Grafana 对应 Dashboard
3.在 Grafana 上查看相关 Metrics
4.在 Grafana 上跳转到 Metrics 异常时间点的日志
5.在 Grafana 上跳转到 Logs 异常的 Trace
6.发现并在 IDE 上 coding 解决问题
只能说,Grafana 为我们描绘了一个相当美妙的场景,未来可期。
References
[1] alexanderzobnin/grafana-zabbix: https://github.com/alexanderzobnin/grafana-zabbix/ [2] Artifact Hub: https://artifacthub.io/ [3] aekondratiev/zabbix-server: https://github.com/aekondratiev/helm-charts
资料/文章推荐:
-
在Grafana环境里配置Zabbix导航盘及导航盘数据解析 | 运维进阶
-
一文搞懂 Grafana Mimir | 运维进阶
-
通过 Docker 安装设定 Grafana | 运维进阶
-
经典干货:银行 Zabbix 监控架构
-
基于 Zabbix 系统监控 Windows、Linux、VMware 等
欢迎关注社区 "监控" 技术主题 ,将会不断更新优质资料、文章。地址:
http://www.talkwithtrend.com/Topic/3937
下载 twt 社区客户端 APP
长按识别二维码即可下载
或到应用商店搜索“twt”
长按二维码关注公众号
*本公众号所发布内容仅代表作者观点,不代表社区立场
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
