适用对象:实施工程师、运维工程师
适用版本:当前仓库gateway.js打包产物(gateway-win.exe/gateway-linux)
本程序用于连接透析机 TCP 数据流,解析后转发到 MQTT/阿里云 IoT,并提供:
本文档用于生产环境一次性部署与后续运维。
将以下文件放到目标机同一部署目录(建议:D:\apps\artis-gateway 或 /opt/artis-gateway):
gateway-win.exe(Windows)或 gateway-linux(Linux)gateway.config.json阿里物模型.json(仅当 services.aliyunIot.enabled=true 时需要)程序运行后自动创建:
logs/(运行日志)cache/latest-device-cache.json(最新值缓存)cache/mqtt-failed-queue.json(MQTT 失败队列)3021(或配置中的设备端口)1883 / 62283http://x.x.x.x:8080127.0.0.1:18080gateway.config.json)"reconnectPolicy": {
"baseMs": 5000,
"maxMs": 300000,
"factor": 2,
"jitterRatio": 0.2
},
"maxBufferBytes": 8388608,
"healthProbe": {
"enabled": true,
"host": "127.0.0.1",
"port": 18080,
"staleFrameMs": 180000
}
说明:
baseMs:首次重连等待时间factor:指数退避倍率maxMs:最长重连等待jitterRatio:抖动比例,防止多机同秒重连风暴maxBufferBytes:单设备接收缓存上限,超限自动截断保护内存staleFrameMs:超过该时间无新帧则健康状态降级"services": {
"mqtt": {
"failureQueue": {
"enabled": true,
"filePath": "./cache/mqtt-failed-queue.json",
"maxItems": 5000,
"retryIntervalMs": 5000,
"retryBatchSize": 100,
"dedupeEnabled": true,
"dedupeFields": ["topic", "deviceKey", "frameTimestamp"]
}
}
}
说明:
dedupeFields 去重,避免重复帧无限堆积sudo mkdir -p /opt/artis-gateway
sudo cp gateway-linux gateway.config.json /opt/artis-gateway/
sudo chmod +x /opt/artis-gateway/gateway-linux
若启用阿里云物模型:
sudo cp 阿里物模型.json /opt/artis-gateway/
创建 /etc/systemd/system/artis-gateway.service:
[Unit]
Description=Artis Gateway Service
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/artis-gateway
ExecStart=/opt/artis-gateway/gateway-linux --config /opt/artis-gateway/gateway.config.json
Restart=always
RestartSec=5
User=root
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable artis-gateway
sudo systemctl start artis-gateway
sudo systemctl status artis-gateway
sudo systemctl restart artis-gateway
sudo systemctl stop artis-gateway
sudo journalctl -u artis-gateway -f
说明:Windows 建议用
NSSM注册服务,避免计划任务不稳定。
New-Item -ItemType Directory -Force D:\apps\artis-gateway | Out-Null
Copy-Item .\gateway-win.exe D:\apps\artis-gateway\
Copy-Item .\gateway.config.json D:\apps\artis-gateway\
若启用阿里云物模型:
Copy-Item .\阿里物模型.json D:\apps\artis-gateway\
nssm install ArtisGateway D:\apps\artis-gateway\gateway-win.exe --config D:\apps\artis-gateway\gateway.config.json
nssm set ArtisGateway AppDirectory D:\apps\artis-gateway
nssm set ArtisGateway Start SERVICE_AUTO_START
nssm start ArtisGateway
nssm restart ArtisGateway
nssm stop ArtisGateway
Get-Service ArtisGateway
Invoke-WebRequest -UseBasicParsing http://127.0.0.1:18080/health
返回:
200:status=ok503:status=degraded(无连接或长时间无新帧)logs/gateway-YYYY-MM-DD.loglogs/gateway-YYYY-MM-DD.jsonl重点关注事件:
device_connected / device_closedmqtt_publish_success / mqtt_publish_failedmqtt_queue_enqueued / mqtt_queue_draineddevice_buffer_trimmedcache/latest-device-cache.jsoncache/mqtt-failed-queue.json队列持续增长说明 MQTT 长期不可达,应检查:
gateway-win.exe / gateway-linux)gateway.config.json、cache/、logs//health 与 5 分钟日志/health 与日志回滚时不要删除
cache/mqtt-failed-queue.json,避免离线期间数据丢失。
gateway.config.json 路径是否正确mqtt_publish_failedstaleFrameMs 内无新帧device_connected / device_data_received 事件device_buffer_trimmed 告警maxBufferBytes 或排查异常流量输入gateway.config.json 已按现场设备修改mqtt_publish_success/health 返回 200reconnectPolicy.baseMs: 5000reconnectPolicy.maxMs: 300000maxBufferBytes: 8388608(8MB)failureQueue.maxItems: 5000failureQueue.retryBatchSize: 100healthProbe.staleFrameMs: 180000(3分钟)如现场网络极不稳定,可将 retryBatchSize 降到 20~50,避免恢复时突发流量过大。