EMQX边缘节点监控:Prometheus Exporter配置

EMQX边缘节点监控:Prometheus Exporter配置

【免费下载链接】emqx The most scalable open-source MQTT broker for IoT, IIoT, and connected vehicles 【免费下载链接】emqx 项目地址: https://gitcode.com/gh_mirrors/em/emqx

1. 痛点与解决方案

你是否正面临边缘计算环境中MQTT Broker监控难题?在物联网(IoT)和工业物联网(IIoT)场景下,边缘节点通常资源受限且网络不稳定,传统集中式监控方案往往面临以下挑战:

  • 边缘设备离线导致监控数据丢失
  • 带宽限制影响实时指标传输
  • 资源受限环境下的性能开销问题

本文将详细介绍如何通过Prometheus Exporter配置,实现EMQX边缘节点的高效监控,解决上述痛点。完成阅读后,你将掌握:

  • EMQX Prometheus Exporter的两种部署模式(Pull/Push)
  • 定制化指标采集策略配置
  • 边缘场景下的监控最佳实践
  • Grafana可视化面板搭建

2. 技术架构概览

2.1 核心组件

EMQX边缘节点监控系统由以下组件构成:

组件功能描述资源占用适用场景
Prometheus Exporter内置HTTP服务器暴露指标端点~5MB内存网络条件良好的边缘节点
Push Gateway接收指标并转发至Prometheus~10MB内存网络不稳定的边缘环境
Grafana可视化监控数据~40MB内存所有场景
EMQX Metrics API提供原始指标数据内置功能自定义监控集成

2.2 架构流程图

mermaid

3. 环境准备

3.1 硬件要求

边缘节点最低配置:

  • CPU: 单核1GHz
  • 内存: 256MB
  • 存储: 100MB可用空间
  • 网络: 支持TCP/IP协议栈

3.2 软件依赖

软件版本要求安装命令
EMQX5.0+docker run -d --name emqx -p 1883:1883 -p 18083:18083 emqx/emqx:latest
Prometheus2.30+docker run -d --name prometheus -p 9090:9090 prom/prometheus:latest
Push Gateway1.4+docker run -d --name pushgateway -p 9091:9091 prom/pushgateway:latest
Grafana8.0+docker run -d --name grafana -p 3000:3000 grafana/grafana:latest

4. 配置步骤

4.1 启用Prometheus Exporter

EMQX内置Prometheus插件,通过以下步骤启用:

4.1.1 命令行方式
# 进入EMQX容器
docker exec -it emqx /bin/sh

# 启用prometheus插件
emqx plugins enable emqx_prometheus
4.1.2 配置文件方式

编辑emqx.conf文件:

# 启用Prometheus插件
plugins.emqx_prometheus = on

# 设置Exporter监听端口
prometheus.port = 18083

# 设置指标路径
prometheus.path = /api/v5/prometheus/metrics

4.2 Pull模式配置(推荐网络稳定场景)

4.2.1 配置EMQX
# 配置指标采集间隔
emqx ctl config update prometheus '{"enable": true, "interval": "15s"}'

# 启用基本认证(可选)
emqx ctl config update prometheus '{"enable_basic_auth": true, "username": "emqx", "password": "public"}'
4.2.2 配置Prometheus

编辑prometheus.yml

scrape_configs:
  - job_name: 'emqx_edge'
    scrape_interval: 15s
    basic_auth:
      username: 'emqx'
      password: 'public'
    static_configs:
      - targets: ['emqx-edge-node-ip:18083']

4.3 Push模式配置(推荐网络不稳定场景)

4.3.1 配置EMQX Push Gateway
# 启用Push Gateway
emqx ctl config update prometheus '{
  "push_gateway": {
    "enable": true,
    "url": "http://pushgateway-ip:9091",
    "interval": "30s",
    "job_name": "emqx_edge",
    "headers": {
      "Authorization": "Basic YWRtaW46cGFzc3dvcmQ="
    }
  }
}'
4.3.2 验证Push Gateway连接
# 查看EMQX日志确认推送状态
docker logs emqx | grep prometheus

预期输出:

2023-09-11T08:20:49.123Z [info] prometheus: push metrics to http://pushgateway-ip:9091 success

4. 指标采集配置

4.1 内置指标类别

EMQX Prometheus Exporter提供以下指标类别:

mermaid

4.2 自定义采集配置

通过配置文件启用/禁用特定指标项:

{
  "collectors": {
    "vm_memory": true,
    "vm_statistics": true,
    "mnesia": false,
    "vm_dist": false,
    "vm_system_info": true,
    "vm_msacc": false
  }
}

4.3 边缘优化配置

针对资源受限的边缘节点,推荐以下优化配置:

{
  "collectors": {
    "vm_memory": true,
    "vm_statistics": false,
    "mnesia": false,
    "vm_dist": false,
    "vm_system_info": false,
    "vm_msacc": false
  },
  "interval": "60s"
}

此配置仅保留内存指标,采集间隔延长至60秒,显著降低资源消耗。

5. 高级功能

5.1 指标过滤

通过正则表达式过滤不需要的指标:

emqx ctl config update prometheus '{
  "metrics_filter": {
    "include": ["^emqx_connections.*", "^emqx_messages.*"],
    "exclude": ["^emqx_vm_.*"]
  }
}'

5.2 告警规则配置

在Prometheus中配置边缘节点告警规则:

groups:
- name: emqx_edge_alerts
  rules:
  - alert: HighConnectionRate
    expr: rate(emqx_connections_total[5m]) > 100
    for: 2m
    labels:
      severity: warning
    annotations:
      summary: "高连接速率告警"
      description: "边缘节点连接速率超过100连接/秒,持续2分钟"

  - alert: HighMemoryUsage
    expr: emqx_vm_memory_used_bytes / emqx_vm_memory_total_bytes > 0.8
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "高内存使用率告警"
      description: "内存使用率超过80%,持续5分钟"

6. Grafana可视化

6.1 导入EMQX Dashboard

  1. 登录Grafana,导航至"Dashboard" > "Import"
  2. 输入Dashboard ID: 17446
  3. 选择Prometheus数据源
  4. 点击"Import"

6.2 自定义边缘监控面板

为边缘节点创建专用面板,包含关键指标:

{
  "panels": [
    {
      "title": "连接状态",
      "type": "graph",
      "targets": [
        {
          "expr": "emqx_connections_active",
          "legendFormat": "活跃连接"
        }
      ],
      "interval": "30s"
    },
    {
      "title": "消息吞吐量",
      "type": "singlestat",
      "targets": [
        {
          "expr": "rate(emqx_messages_received_total[1m])",
          "legendFormat": "接收速率"
        }
      ],
      "interval": "1m"
    },
    {
      "title": "内存使用率",
      "type": "gauge",
      "targets": [
        {
          "expr": "emqx_vm_memory_used_bytes / emqx_vm_memory_total_bytes * 100",
          "legendFormat": "内存使用率"
        }
      ],
      "thresholds": "60,80"
    }
  ]
}

6.3 边缘节点状态地图

使用Worldmap Panel插件展示全球边缘节点分布:

{
  "title": "边缘节点分布",
  "type": "worldmap",
  "targets": [
    {
      "expr": "emqx_connections_active",
      "legendFormat": "{{node}}",
      "format": "table"
    }
  ],
  "seriesOverrides": [
    {
      "scalarUnit": "short",
      "color": {
        "mode": "thresholds"
      },
      "thresholds": [
        {
          "value": 0,
          "color": "green"
        },
        {
          "value": 100,
          "color": "orange"
        },
        {
          "value": 500,
          "color": "red"
        }
      ]
    }
  ]
}

7. 边缘场景最佳实践

7.1 资源受限环境优化

  1. 指标精简:仅保留核心业务指标

    {
      "collectors": {
        "vm_memory": true,
        "vm_statistics": false,
        "mnesia": false
      }
    }
    
  2. 延长采集间隔:根据业务需求调整至30-60秒

  3. 启用压缩:配置HTTP响应压缩

    emqx ctl config update prometheus '{"enable_compression": true}'
    

7.2 离线缓存策略

在网络不稳定场景下,配置本地缓存:

# 启用本地文件缓存
emqx ctl config update prometheus '{
  "local_cache": {
    "enable": true,
    "max_size": "100MB",
    "path": "/var/lib/emqx/prometheus_cache"
  }
}'

7.3 安全加固

边缘节点通常部署在非可信网络环境,需进行安全加固:

  1. 启用TLS

    emqx ctl config update prometheus '{
      "tls": {
        "enable": true,
        "certfile": "/etc/emqx/certs/server.pem",
        "keyfile": "/etc/emqx/certs/server.key"
      }
    }'
    
  2. IP白名单

    emqx ctl config update prometheus '{
      "ip_whitelist": ["192.168.1.0/24", "10.0.0.0/8"]
    }'
    

8. 故障排除

8.1 常见问题解决

问题原因解决方案
指标端点无法访问端口未开放或防火墙限制检查端口配置和防火墙规则
Push Gateway无数据网络不通或认证失败检查URL和认证头配置
指标重复节点名称冲突为每个边缘节点配置唯一job_name
内存占用过高采集配置不当禁用不必要的指标项

8.2 诊断命令

# 检查Prometheus插件状态
emqx plugins status emqx_prometheus

# 查看指标端点响应
curl -u emqx:public http://localhost:18083/api/v5/prometheus/metrics

# 查看推送状态
emqx ctl log query "prometheus"

9. 总结与展望

本文详细介绍了EMQX边缘节点Prometheus Exporter的配置方法,包括Pull/Push两种模式的部署、指标采集策略优化、Grafana可视化及边缘场景最佳实践。通过合理配置,可在资源受限的边缘环境中实现高效、可靠的MQTT Broker监控。

未来,EMQX将进一步增强边缘监控能力,包括:

  • 边缘计算节点自动发现
  • 基于机器学习的异常检测
  • 轻量级边缘专用监控代理

10. 附录:核心指标参考

指标名称类型描述边缘场景重要性
emqx_connections_activeGauge当前活跃连接数★★★★★
emqx_messages_received_totalCounter接收消息总数★★★★☆
emqx_messages_sent_totalCounter发送消息总数★★★★☆
emqx_vm_memory_used_bytesGauge内存使用量★★★★★
emqx_session_persistent_countGauge持久会话数★★★☆☆
emqx_node_statusGauge节点状态(1=正常,0=异常)★★★★★

【免费下载链接】emqx The most scalable open-source MQTT broker for IoT, IIoT, and connected vehicles 【免费下载链接】emqx 项目地址: https://gitcode.com/gh_mirrors/em/emqx

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值