Prometheus 是由 SoundCloud 开源监控告警解决方案,支持多维 数据模型(时序由 metric 名字和 k/v 的 labels 构成),具备灵活的查询语句(PromQL),支持多种数据采集 exporters;支持告警管理,基于指标实现告警监控;支持多种统计数据模型,图形化展示友好,图形展示除了内置的浏览器,也支持 Grafana 集成。
EMQ X 提供 emqx_statsd 插件,用于将 EMQ X 运行指标及 Erlang 虚拟机状态数据输出到第三方的监控系统如 Prometheus 中。通过 Prometheus 自带的 node-exporter 还可以采集 Linux 服务器相关指标,实现服务器 + EMQ X 整体运维监控。
本文提供了 Prometheus + Grafana 整套 EMQ X 运维监控方案搭建过程。
安装与准备
Docker 镜像下载
# Docker 镜像包下载 |
启动 node-exporter
可选,用于收集服务器指标如 CPU、内存、网络等,如果使用 Docker 安装则需要映射目标服务器响应的状态文件:
docker run -d -p 9100:9100 \ |
启动 pushgateway
pushgateway 用于接收 EMQ X 指标推送数据,需要保证 EMQ X 能够访问:
docker run -d -p 9091:9091 prom/pushgateway |
启动 Prometheus
指定配置文件与监听端口以启动 Prometheus:
# 指定配置文件并启动 |
Prometheus 配置文件 prometheus.yaml
样例如下,详细含义请参考 Prometheus 文档:
# prometheus.yaml |
启动 EMQ X statsd 插件
打开 etc/emqx_statsd.conf
,确认以下配置:
## pushgateway 地址 |
启动插件:
./bin/emqx_ctl load plugins emqx_statsd
效果查看
通过 docker ps -a
命令查看组件是否成功运行,等待数个推送周期后,打开 http://localhost:9090 Prometheus 控制面板查看采集数据。
Prometheus 仅提供简单图表数据展示,如需更精美的可视化展示请结合 Grafana 使用。
集成 Grafana
Grafana 是一个开源、通用的度量分析与可视化展示工具,通过数据源(如各类数据库、开源组件),展示自定义报表、显示图表等。
启动 Grafana
通过 Docker 拉取并启动 Grafana 镜像:
docker run -d --name=grafana -p 3000:3000 grafana/grafana |
启动成功后,浏览器访问 http://127.0.0.1:3000 打开 Dashboard 控制台。
配置 Prometheus 数据源
在 Grafana 中添加数据源,选择 Prometheus 并填写正确的地址完成数据源添加。
导入 Grafana 模板数据
emqx_statsd
插件提供了 Grafana 的 Dashboard 的模板文件,这些模板包含了大部分 EMQ X 监控数据的展示。用户可直接导入到 Grafana 中,用以显示 EMQ X 的监控状态的图标。
模板文件位于emqx_statsd/grafana_template 中,因 EMQ X 版本差异问题,可能存在部分图表数据显示错误的情况,请用户手动调整适配。
点击 Upload.json file 按钮,导入后选择对应的文件夹与数据源即可。
效果展示
完成整套系统搭建并运行一段时间后,Prometheus 收集到的数据将展示在 Grafana 上,默认模板展示效果如下:
- EMQ Dashboard:包含连接、消息、主题、吞吐量历史统计
- EMQ:包含客户端数、订阅数、主题数、消息数、报文数等业务信息历史统计
- ErlangVM:每个 EMQ X 节点 Erlang 虚拟机进程/线程数量,ETS/Mnesia 数据库使用情况历史统计
如有其他需求,可以参照 「附:emqx-statsd 所有指标」并结合 Grafana 进行图标数据编排展示。
告警管理
Prometheus 与 Grafana 均支持指标告警功能,配置告警规则后,服务器会不断评估设置的规则与当前指标数据,在规则条件符合的时候发送出通知。
篇幅有限,告警相关配置与实践请关注后续文章。
附:emqx-statsd 所有指标
EMQ X 通过 Prometheus push gateway 推送指标数据,支持的指标项如下:
# TYPE erlang_vm_ets_limit gauge |