基于 Prometheus、Grafana 的 EMQ X 物联网 MQTT 服务器可视化运维监控

本文介绍了如何利用 Prometheus 和 Grafana 对 EMQ X 物联网 MQTT 服务器进行运维监控。通过 EMQ X 的 statsd 插件,将运行指标推送到 Prometheus,结合 node-exporter 收集服务器信息。然后,使用 Grafana 创建精美图表,展示 EMQ X 的连接、消息、主题等统计信息,以及 Erlang VM 的状态。同时,提到了告警管理和自定义指标展示的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        Prometheus (https://prometheus.io/) 是由 SoundCloud 开源监控告警解决方案,支持多维数据模型 (https://prometheus.io/docs/concepts/data_model/)(时序由 metric 名字和 k/v 的 labels 构成),具备灵活的查询语句(PromQL)(https://prometheus.io/docs/querying/basics/) ,支持多种数据采集 exporters (https://prometheus.io/docs/instrumenting/exporters/);支持告警管理,基于指标实现告警监控;支持多种统计数据模型,图形化展示友好,图形展示除了内置的浏览器,也支持 Grafana 集成。

       EMQ X 提供 emqx_statsd (https://github.com/emqx/emqx-statsd) 插件,用于将 EMQ X 运行指标及 Erlang 虚拟机状态数据输出到第三方的监控系统如 Prometheus 中。通过 Prometheus 自带的 node-exporter 还可以采集 Linux 服务器相关指标,实现服务器 + EMQ X 整体运维监控。

       本文提供了 Prometheus + Grafana 整套 EMQ X 运维监控方案搭建过程。

 


  • 安装与准备


  •  Docker 镜像下载
# Docker 镜像包下载
docker pull prom/node-exporter
docker pull prom/prometheus
docker pull prom/pushgateway
  • 启动 node-exporter

可选,用于收集服务器指标如 CPU、内存、网络等,如果使用 Docker 安装则需要映射目标服务器响应的状态文件

docker run -d -p 9100:9100 \
  -v "/proc:/host/proc:ro" \
  -v "/sys:/host/sys:ro" \
  -v "/:/rootfs:ro" \
  --net="host" \
  prom/node-exporter
  • 启动 pushgateway

pushgateway 用于接收 EMQ X 指标推送数据,需要保证 EMQ X 能够访问

docker run -d -p 9091:9091 prom/pushgateway
  • 启动 Prometheus

指定配置文件与监听端口以启动 Prometheus

# 指定配置文件并启动
docker run -p 9090:9090 \
-v $PWD/prometheus.yaml:/etc/prometheus/prometheus.yaml \
-d prom/prometheus \
--config.file=/etc/prometheus/prometheus.yaml

Prometheus 配置文件 prometheus.yaml 样例如下,详细含义请参考 Prometheus 文档:

# prometheus.yaml
global:
  scrape_interval:     10s # 默认抓取时间
  evaluation_interval: 10s # 每10秒评估一次rules
# 在本机上每一条时间序列上都会默认产生的,主要可以用于联合查询、远程存储、Alertmanager时使用。
  external_labels:
      monitor: 'emqx-monitor'
# 加载规则,依据 evaluation_interval 来定期评估rule
rule_files:
# - "first.rules"
# - "second.rules"
  - "/etc/prometheus/rules/*.rules"
# 数据拉取配置
scrape_configs:
# 表示在这个配置内的时间序例,每一条都会自动添加上这个{job_name:"prometheus"}的标签
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['127.0.0.1:9090']
# 服务器物理机监控
  - job_name: 'node-exporter'
    scrape_interval: 5s
    static_configs:
# node-exporter 根据实际情况填写
      - targets: ['192.168.6.11:9100']
        labels:
          instance: wivwiv-local
# EMQ X Pushgateway 监控
  - job_name: 'pushgateway'
    scrape_interval: 5s
    honor_labels: true
    static_configs:
# pushgateway 根据实际情况填写
      - targets: ['192.168.6.11:9091']
  • 启动 EMQ X statsd 插件

打开 etc/emqx_statsd.conf,确认以下配置:

## pushgateway 地址
statsd.push.gateway.server = http://127.0.0.1:9091
## 数据采集/推送周期(毫秒)
statsd.interval = 15000

启动插件:

./bin/emqx_ctl load plugins emqx_statsd

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值