Webinar

EMQ「技术之夏」直播季火热来袭!| 立即报名

enterprise 4.4.22 更新日志

增强

  • 新增 Dashboard 的审计日志(Audit Log)功能,用以追踪重要的变更性操作。

    • 要启用审计日志功能,在 Dashboard 中点击 通用 -> 审计日志 -> 启用,修改参数并点击添加
    • 开启后会记录所有除 GET 之外的 HTTP API 请求以及命令行(CLI)的执行情况。
    • 在 Dashboard 审计日志界面上默认可查看到最近的 5000 条审计日志,完全的日志文件则储存在 data/audit 目录中。
  • 在 Dashboard 中增加了对 RBAC 角色的支持。实现了基于角色的访问控制(RBAC)的功能,用于访问管理 Dashboard。

    这使得能够在管理员和查看者角色类型之间进行区分,以实施适当的权限。 管理员能通过 Dashboard 查看和修改所有功能,而查看者只能查询,无法对功能进行修改。

  • LwM2M 网关支持使用块传输协议(Block Wise Transfer)发送下行数据。

  • 新增一些 SQL 函数。

    新增的函数有:map_keys(), map_values(), map_to_entries(), join_to_string(), join_to_string(), join_to_sql_values_string(), is_null_var(), is_not_null_var().

    函数的作用和使用方法详见文档。

  • 为 MQTT 桥接动作增加 QoS 配置项,用于指定桥接消息的 QoS 等级。

  • 支持通过配置文件指定 MQTT 消息的过期时间。

    详见 emqx.conf 文件中对 mqtt.message_expiry_interval 配置的描述。

  • 更新 Erlang/OTP 的版本到 OTP-24.3.4.2-4。

  • 新增 Schema 验证,以便更好地配置 OCSP Stapling 和 CRL 检查一致性。

修复

  • 解决了导致 Kafka 客户端(wolff)生产者崩溃的问题。

    这个问题是在初始化某些规则时删除了 Kafka 资源,从而导致依赖规则失败。 这个错误随后传播,触发了错误升级机制,导致所有规则崩溃。

  • 修复了 GBT32960 网关模块无法解析 retry_interval 参数的问题。

  • 修复了 GBT32960 客户端无法在通过 HTTP API 获取的问题。

  • 修复了 OCPP 客户端在认证失败时的异常日志。

  • 修复了 OCPP 网关未对 ClientID 为空的校验问题。

  • 升级了 RabbitMQ 驱动程序,并修复了一些安全漏洞。

  • 修复规则引擎的 GCP PubSub 动作在异步发送模式下,统计计数不增长的问题。

  • 修复手动重连资源时,只有当前节点的资源会执行重连的问题。

  • 修复删除规则重新导入后,动作的统计计数没有清零的问题。

  • 修复集群模式下重启规则失败导致的动作资源泄露的问题。

    修复前,停止并启动规则时,如果某些节点上的动作创建失败,会导致动作资源(该动作关联的一些进程)泄露。

  • 修复了多 CPU 场景下,某些带批量模式的数据集成动作,批量发送数据的性能比 4.4.5 之前的版本有所下降的问题。

    4.4.5 版本将批量进程池的工作进程数目修改为 CPU 核心数 * 4,在 CPU 核心数比较多的机器上运行时,会导致工作进程数过多,所以每个进程在指定批量时间内累积的消息比较少,从而使得批量发送数据的性能下降。修复后不再硬编码批量进程池的工作进程数目,而是提供了一个新的配置项 batch_pool_size,默认值为 8。

    受影响的数据集成动作: data_to_cassa, data_to_clickhouse, data_to_influxdb, data_to_iotdb, data_to_lindorm, data_to_mysql, data_to_oracle, data_to_pgsql, data_to_sqlserver, data_to_tablestore, data_to_tdengine, data_to_gcp_pubsub。

  • 修复 MQTT 桥接使用 MQTT 5.0 协议发送 QoS2 消息失败的问题。

  • 修复当配置文件中某个监听器的配置缺失时,热配置更新失败的问题。

  • 修复 LwM2M 网关插件启动失败的问题。

    修复前,若先关闭 LwM2M 模块然后启动 LwM2M 插件,会导致插件启动失败,日志如下:

    {emqx_lwm2m,{bad_return,{{emqx_lwm2m_app,start,[normal,[]]},{'EXIT',{{already_started,<0.3895.177>},[...]}}}}}
    
  • 修复 Dashboard 上共享订阅主题的前缀无法正常展示的问题。

    修复前,$share/g//t 这样的主题会在 Dashboard 的客户端详情页面上展示为 /t,共享订阅前缀丢失。 修复后,将正常展示为 $share/g//t

  • 在配置文件中,为 peer_cert_as_usernamepeer_cert_as_clientid 增加一个 none 选项。这两个配置项用于将(客户端)证书内容作为用户名/ ClientID。

  • 修复启用热配置功能,会偶现监听器被重启的问题。

  • 修复停止正在运行中的规则时出错的问题。

    修复前,若手动停止正在运行中的规则,会偶尔出现如下错误日志,提示动作没有正常初始化或者已经被清除:

    foo@x.x.x.x:54663 Rule: <<"rule:ba48182b">>; Action: data_to_kafka; Resource: <<"resource:7bacacdc">>. Continue next action, reason: {error,{badmatch,not_found}, ...
    

    修复后这种情况下不再打印错误日志,并且优化了其他情况下出现动作未初始化时的错误日志。

  • 修复 LwM2M 网关 DTLS PSK 握手失败的问题。

  • 检查 Retainer 模块配置的非法字段。

    添加了对 “最大保留消息数” 和 “最大保留消息大小“ 两个字段的检查,确保为非负值。

  • 修复热更新之后发送消息到 TDEngine 失败的问题。

  • 修复热更新之后 RabbitMQ 资源不可用的问题。

  • 当禁用 OCSP Stapling 或停止 TLS 监听器时,一并取消 OCSP 的 HTTP 定时刷新。

  • 当禁用 CRL 检查或停止 TLS 监听器时,一并取消 CRL 的定时刷新。