配置管理
EMQX Neuron 支持通过命令行、环境变量、配置文件的方式,对 EMQX Neuron 的配置参数进行修改,可以提供更加灵活的启动和运行方式。 如果同时配置了命令行、环境变量、配置文件,三者的优先级关系为:命令行 > 环境变量 > 配置文件
命令行
EMQX Neuron 的命令行位于 /bin/neuronex,它提供了以下的常用选项:
run 命令
run 命令用于在控制台上运行 EMQX Neuron。该命令将 EMQX Neuron 作为一个进程启动,并在终端中显示其输出。
-c, --config 配置文件路径, 默认为 "etc/neuronex.yaml"
-k, --disable_kuiper 选择是否停用 eKuiper, 默认为 false, 即启用例如:
./bin/neuronex run -c etc/neuronex.yaml -k true该命令将 EMQX Neuron 作为进程启动,并在终端中显示其输出, EMQX Neuron 不会启动 eKuiper
start 命令
start 命令用于在守护进程模式下启动 EMQX Neuron,该命令将 EMQX Neuron 作为守护进程启动并在后台运行。
stop 命令
stop 命令用于停止运行 EMQX Neuron。该命令将杀死 EMQX Neuron 进程。
./bin/neuronex stopinstall 命令
install 命令用于在 /etc/systemd/system path 中注册 EMQX Neuron 服务配置文件。
./bin/neuronex installuninstall 命令
uninstall 命令用于在 /etc/systemd/system path 中取消注册 EMQX Neuron 服务配置文件。
./bin/neuronex uninstallreset-password 命令
reset-password 命令用于将默认用户 admin 的密码修改为默认密码 0000。
./bin/neuronex reset-password环境变量
EMQX Neuron 支持在启动过程中读取环境变量来配置启动参数,目前支持的环境变量如下:
| 配置名 | 配置作用 |
|---|---|
| NEURONEX_DISABLE_AUTH | 设置为 1,EMQX Neuron 关闭 Token 鉴权认证;设置为0,EMQX Neuron 开启 Token 鉴权认证 |
| NEURONEX__SERVER__ADMIN__PASSWORD | 修改 admin 用户默认密码 |
| NEURONEX__SERVER__VIEWER__USERNAME | 新添加 viewer 用户的用户名 |
| NEURONEX__SERVER__VIEWER__PASSWORD | 新添加 viewer 用户的密码 |
| NEURONEX__LOG__MODE | 设置为 console, EMQX Neuron 会把日志打印到标准输出 |
| KUIPER__BASIC__CONSOLELOG | 设置为 true, ekuiper 会把日志打印到标准输出 |
| NEURON__LOG__MODE | 设置为 console, Neuron 会把日志打印到标准输出 |
环境变量映射为配置文件
EMQX Neuron 支持通过环境变量覆盖配置文件中的配置,当通过环境变量修改配置时,环境变量需要按照规定的格式设置。映射关系如下:
NEURONEX__SERVER__DISABLEAUTH => server.disableAuth in etc/neuronex.yaml
NEURONEX__LOG__MODE => log.mode in etc/neuronex.yaml环境变量之间用“__”分隔,分隔后第一部分的内容匹配配置文件的文件名,其余内容匹配不同级别的配置项。
EMQX Neuron 支持通过环境变量配置数据处理模块 eKuiper 的 yaml 配置文件,详细配置项请参考eKuiper 配置。 eKuiper配置文件与环境变量映射关系和 EMQX Neuron 相同,如下:
KUIPER__BASIC__DEBUG => basic.debug in etc/kuiper.yaml
MQTT_SOURCE__DEMO_CONF__QOS => demo_conf.qos in etc/mqtt_source.yaml
EDGEX__DEFAULT__PORT => default.port in etc/sources/edgex.yaml
CONNECTION__EDGEX__REDISMSGBUS__PORT => edgex.redismsgbus.port int etc/connections/connection.yaml举例,如要调大调用外部算法函数的超时时间(默认为5s),可以设置如下环境变量KUIPER__PORTABLE__RECVTIMEOUT => recvTimeout in etc/kuiper.yaml:
# Docker 部署方式
docker run -d --name neuronex -p 8085:8085 -e KUIPER__PORTABLE__RECVTIMEOUT=20s neuronex/neuronex:latest配置文件
EMQX Neuron 提供 YAML 格式文件,位于/opt/neuronex/etc/neuronex.yaml,用于配置与 EMQX Neuron 相关的参数。
server
server 部分定义了 EMQX Neuron 服务器的端口号。
port:EMQX Neuron 服务器的端口号,默认值为 8085。disableAuth:EMQX Neuron 是否关闭 Token 认证。disableKuiper:EMQX Neuron 是否停用 eKuipertls: 开启 TLS 认证certFile: 开启 TLS 认证后,证书文件位置keyFile: 开启 TLS 认证后,密钥文件位置
admin: 管理员账号password: 管理员账户密码
viewer: 添加查看者账号username: 查看者账号用户名password: 查看者账号密码
neuron
neuron 部分定义 Neuron 的版本号和反向代理配置。
version:Neuron 的版本号。reverseProxies:Neuron 的反向代理配置列表。location: Neuron 的路径: Neuron 的路径。proxyPath:Neuron 后端服务器的路径。
eKuiper
ekuiper 部分定义了 eKuiper 的版本号和反向代理配置。
version:eKuiper 的版本号。reverseProxies:eKuiper 的反向代理配置列表。location:eKuiper 的路径: eKuiper 的路径。proxyPath:eKuiper 后端服务器的路径。location: ekuiper ws服务路径。proxyPath: ekuiper ws服务路径。
log
日志 "部分定义了 EMQX Neuron 服务器的日志配置。
mode:日志输出模式,选项为 console(输出到控制台)和 file(输出到文件)。level:日志级别,选项包括 debug,info,warn,error ,fatal。file:日志文件路径。maxSize:日志文件轮换前的最大容量(以 MB 为单位)。maxAge: 根据文件名中编码的时间戳保留旧日志文件的最长天数。maxBackups: 保留的旧日志文件的最大数量。syslogForward:日志远程转发配置。enable:是否启用日志远程转发。priority:选项包括 emerg,alert,crit,err,warning,notice,info,debug。network:现在只支持 udp4remoteAddr: 记录远程转发地址。tag:记录远程转发标签。
official
offcial部分定义生态 license 官网服务器信息。url:生态 license 官网服务器地址。
默认配置如下
server:
port: 8085
disableAuth: false
disableKuiper: false
# tls:
# certFile: "etc/certs/neuronex.crt"
# keyFile: "etc/certs/neuronex.key"
# admin:
# password: "0000"
# viewer:
# username: "test"
# password: "0000"
neuron:
reverseProxies:
- location: /api/neuron
proxyPath: http://127.0.0.1:7000/api/v2
ekuiper:
reverseProxies:
- location: /api/ekuiper
proxyPath: http://127.0.0.1:9081
- location: /ws/ekuiper
proxyPath: ws://127.0.0.1:10081
log:
mode: file
level: error
file: log/neuronex.log
maxSize: 20 # maximum size in megabytes of the log file before it gets rotated
maxBackups: 5 # MaxBackups is the maximum number of old log files to retain
syslog:
enable: false
# fatal/error/warning/notice/info/debug
priority: "info"
# now only support udp4
network: "udp4"
remoteAddr: ""
# syslog protocol tag field, used for syslog server to identify which neuronex client send the syslog message
tag: "neuronex"
official:
url: https://neuronex-licenses.emqx.comHTTPS 功能使用
EMQX Neuron现已支持HTTPS功能,提供了更安全的通信方式。此功能允许用户通过加密连接访问dashboard和API,增强了数据传输的安全性和隐私保护。EMQX Neuron 使用相同的端口(8085)同时支持HTTP和HTTPS。
开启 HTTPS 功能
在配置文件中取消注释以下字段,并在对应目录放入您的证书和私钥。
tls:
certFile: "etc/certs/neuronex.crt"
keyFile: "etc/certs/neuronex.key"访问方式
- Web Dashboard访问
- HTTP访问:http://your-server:8085
- HTTPS访问:https://your-server:8085
- API访问
客户端配置
- 方式一:如使用自签名证书,将证书文件(neuronex.crt)添加到客户端的信任存储中
- 方式二:客户端禁用证书验证
JWT Token 认证公钥
默认情况下 EMQX Neuron 对外暴露的 REST API 需要 JWT Token 认证, EMQX Neuron 支持用户将认证公钥放置在 EMQX Neuron 安装目录下的 etc 文件夹下,以实现 JWT Token 认证。
如果 EMQX Neuron 采用 Docker 部署的方式,则需要将本地目录映射进容器内 EMQX Neuron 的 etc 目录。注意首次映射时本地目录不能为空, 必须具有 neuronex.yaml 配置文件以及公钥文件。
在 EMQX Neuron 软件升级或者迁移时,需要考虑到 etc 目录的备份和恢复。
Dump文件
EMQX Neuron 默认安装启动后,发生 Crash 不生成 dump 文件。如需 dump 文件进行故障排查。需要生成dump文件的话,需要执行以下命令后开启dump文件存储。
#!/bin/sh
set -e
core_pattern_path="/proc/sys/kernel/core_pattern"
target_pattern="/tmp/core-%e-%s"
sudo echo $target_pattern | sudo tee $core_pattern_path
core_pid_path="/proc/sys/kernel/core_uses_pid"
target_pid="0"
sudo echo $target_pid | sudo tee $core_pid_path
core_pattern=$(cat $core_pattern_path)
core_pid=$(cat $core_pid_path)
if [ "$core_pattern" = "$target_pattern" ] && [ "$core_pid" = "$target_pid" ];then
echo "setting success"
else
echo "setting failed"
fi