NetXMS 7.0.1 配置参数详解
NetXMS 7.0.1 三层配置体系详解:/etc/netxmsd.conf 服务端配置、443 项数据库运行时变量分组精讲(nxdbmgr get/set 实测)、/etc/nxagentd.conf 代理配置、Web 控制台 JVM 堆限与 SSL,全部参数标注实测默认值。
NetXMS 7.0.1 配置参数详解
目标:系统梳理 NetXMS 7.0.1 的三层配置体系——服务端配置文件 /etc/netxmsd.conf、存储在数据库中的 443 项服务端运行时配置变量、代理配置文件 /etc/nxagentd.conf 与 Web 控制台 Jetty/JVM 参数,给出全部参数的实测默认值、修改方式与生效验证方法。所有命令与回显均在 7.0.1(构建号 7.0-824-g44d7a0dfb5)环境实测。
部署过程本身(编排文件、初始化、首次登录)见 《NetXMS 7.0.1 Docker Compose 部署指南》,本文专注配置层面的每个参数。
一、配置体系总览
NetXMS 的配置分散在三个层面,各有不同的存储位置与读取通道:
| 层面 | 存储位置 | 作用对象 | 读取/校验命令 |
|---|---|---|---|
| 服务端文件配置 | /etc/netxmsd.conf | netxmsd 启动项(数据库连接、日志、调试) | netxmsd -C(校验)、netxmsd -G(生成模板) |
| 服务端运行时变量 | 数据库(初始化时写入 443 项默认值) | 运行行为(轮询、线程池、保留策略、安全) | nxdbmgr get/set、控制台 get/set |
| 代理文件配置 | /etc/nxagentd.conf(及 .d 扩展目录) | nxagentd 采集与接入行为 | nxagentd -C(树形 dump)、nxget -c(远程读生效配置) |
| Web 控制台 | jetty-ssl.properties + JVM 启动参数 | HTTPS 证书密码、监听、堆内存 | jps -v(验证 JVM 参数) |
三层的关系:文件配置只在进程启动时读取一次;运行时变量存于数据库,可在线修改并即时生效;Web 控制台没有集中配置文件,靠启动参数与环境变量注入。
💡 技术拓展:监控软件的配置存放策略常见三种——纯文件式(Nagios/Naemon,全部配置在 conf 文件,改配置需重载)、纯数据库式(Zabbix,前端与配置全入库)、混合式(文件管启动项、数据库管运行项)。NetXMS 采用混合式:数据库连接这类"没有数据库就读不到"的参数必须在文件里,其余行为参数入库存取,好处是可以用 SQL/API 批量管理并可随库迁移。本文第 2/4/5 章讲文件层,第 3 章讲数据库运行时变量层。
二、服务端配置文件 /etc/netxmsd.conf
2.1 配置检查与启动参数
netxmsd 完整命令行帮助(netxmsd -h 实测):
NetXMS Server Version 7.0.1 Build 7.0-824-g44d7a0dfb5
Copyright (c) 2003-2026 Raden Solutions
Usage: netxmsd [<options>]
Valid options are:
-A <entry> : Add configuration file entry
-e : Run database check on startup
-c <file> : Set non-default configuration file
-C : Check configuration and exit
-d : Run as daemon/service
-D <level> : Set debug level (valid levels are 0..9)
-G : Generate configuration file and exit
-h : Display help and exit
-l : Show log file location
-p <file> : Path to pid file (default: /var/run/netxmsd.pid)
-q : Disable interactive console
-S : Run as systemd daemon
-t <tag>:<level> : Set debug level for specific tag
-T : Enable SQL query trace
-v : Display version and exit
常用组合:-C 只校验配置不启动(改配置后必做);-c 指定非默认路径;-A 直接在命令行追加一条配置项(免改文件);-G 生成带注释的配置模板。
版本与配置校验实测:
netxmsd -v
NetXMS Server Version 7.0.1 Build 7.0-824-g44d7a0dfb5 (UNICODE)
NXCP: 5.62.1.60 (AES-256, 3DES, AES-128)
Built with: g++ (Debian 14.2.0-19) 14.2.0
netxmsd -C
Checking configuration file ({search}):
Using configuration file "/etc/netxmsd.conf"
netxmsd -v 中的 NXCP 版本行(5.62.1.60)是服务端与代理之间的协议版本及加密套件(AES-256/3DES/AES-128),排障时可比对两端 NXCP 版本判断兼容性。
2.2 数据库连接配置
数据库连接是 /etc/netxmsd.conf 的核心段(实测配置内容):
## Database configuration - PostgreSQL
DBDriver=pgsql.ddr
DBServer=db
DBName=netxms
DBLogin=netxms
DBPassword=q1w2e3r4
逐项说明:
| 配置项 | 实测值 | 含义与可取值 |
|---|---|---|
| DBDriver | pgsql.ddr | 数据库驱动模块名。合法类型全集为 db2/mssql/mysql/oracle/pgsql/sqlite/tsdb(与 nxdbmgr 支持的数据库类型一致),PostgreSQL 用 pgsql.ddr,TimescaleDB 库亦用此驱动 |
| DBServer | db | 数据库主机名或 IP。裸机部署写 127.0.0.1 或数据库主机 |
| DBName | netxms | 库名 |
| DBLogin / DBPassword | netxms / q1w2e3r4 | 连接账号。生产环境应使用最小权限的专用账号 |
| LogFile | {stdout} | 日志输出位置,{stdout} 表示标准输出(systemd 场景进 journal),也可写文件路径如 /var/log/netxmsd.log |
| DebugLevel | 5 | 调试级别 0–9,0 最安静、9 最详细;生产建议 0–3 |
2.3 日志输出位置
netxmsd -l
Using configuration file "/etc/netxmsd.conf"
{stdout}
-l 回显日志实际去向。当前配置为 {stdout};改写文件路径后(如 LogFile=/var/log/netxmsd.log),此处回显对应路径,配合第六章的轮转策略使用。
三、服务端运行时配置变量(443 项实测)
3.1 读取:nxdbmgr get
服务端运行时变量存在数据库中,支持 % 通配模式查询。全量导出(443 项)实测:
nxdbmgr get %
NetXMS Database Manager Version 7.0.1 Build 7.0-824-g44d7a0dfb5
ActionExecutionLog.RetentionTime = 90
Agent.CommandTimeout = 4000
Agent.ConnectionRetries = 0
Agent.ConnectionTimeout = 5000
Agent.DefaultCacheMode = 2
Agent.DefaultEncryptionPolicy = 1
Agent.EnableRegistration = 1
AgentTunnels.ListenPort = 4703
…(输出节选(实测首尾),中间 430 余项略——共 443 行)
WebAPI.AuthTokenMaxLifetime = 86400
WebAPI.AuthTokenWarningThreshold = 3600
WindowsEvents.EnableStorage = 1
WindowsEvents.LogRetentionTime = 90
单变量查询直接给完整名(实测):
nxdbmgr get Server.Name
NetXMS Database Manager Version 7.0.1 Build 7.0-824-g44d7a0dfb5
Server.Name =
⚠️ 通配模式要整体匹配变量名:
get %匹配全部;get Server.%匹配 Server 前缀全部。写get %RunTime%这类前后通配会匹配到空结果(实测回显%RunTime% =,空值),因为不存在含 RunTime 字样的变量名——通配符使用前先get %确认确切名称。
3.2 修改:nxdbmgr set
set 即改即生效(写库并通知运行中的服务端),无需重启。以 Server.Name(控制台显示的服务器名)为例做一次完整往返,实测:
nxdbmgr set Server.Name netxms-demo
NetXMS Database Manager Version 7.0.1 Build 7.0-824-g44d7a0dfb5
nxdbmgr get Server.Name
NetXMS Database Manager Version 7.0.1 Build 7.0-824-g44d7a0dfb5
Server.Name = netxms-demo
恢复默认(set 空值):
nxdbmgr set Server.Name ""
NetXMS Database Manager Version 7.0.1 Build 7.0-824-g44d7a0dfb5
nxdbmgr get Server.Name
NetXMS Database Manager Version 7.0.1 Build 7.0-824-g44d7a0dfb5
Server.Name =
set 有两个保护性选项:-N 表示目标已有非空值时不覆盖;-q 静默模式适合脚本调用。
3.3 变量分组精讲
以下按功能组列出关键变量及其 7.0.1 实测默认值(全部来自 nxdbmgr get % 实测输出)。完整 443 项不必背,按组定位即可。
服务器与客户端接入(Server. / Client.)**
| 变量 | 实测默认 | 说明 |
|---|---|---|
| Server.Name | (空) | 服务器显示名,空时用主机名 |
| Client.ListenerPort | 4701 | 客户端(控制台)监听端口,即 NXCP 主端口 |
| Client.KeepAliveInterval | 60 | 客户端保活间隔(秒) |
| Client.InactivityTimeout | 0 | 客户端不活动超时(0 = 不超时) |
| Server.CommandOutputTimeout | 60 | 远程命令输出等待超时(秒) |
| Server.RestrictLocalConsoleAccess | 1 | 默认禁止远程访问本地控制台(安全默认) |
代理接入(Agent. / AgentTunnels.)**
| 变量 | 实测默认 | 说明 |
|---|---|---|
| Agent.CommandTimeout | 4000 | 代理命令超时(毫秒) |
| Agent.ConnectionTimeout | 5000 | 代理连接超时(毫秒) |
| Agent.EnableRegistration | 1 | 允许代理自动注册(配合 nxagentd -r 使用) |
| Agent.DefaultEncryptionPolicy | 1 | 加密策略(与 nxget -e 枚举一致:1 = 仅当代理要求加密时建立加密连接) |
| AgentTunnels.ListenPort | 4703 | 代理隧道监听端口 |
| AgentTunnels.UnboundTunnelTimeout | 3600 | 未绑定隧道超时(秒) |
SNMP(SNMP.*)
| 变量 | 实测默认 | 说明 |
|---|---|---|
| SNMP.MinVersion | 0 | 允许的最低 SNMP 版本(0 = v1) |
| SNMP.RequestTimeout | 1500 | 请求超时(毫秒) |
| SNMP.RetryCount | 3 | 重试次数 |
| SNMP.Traps.Enable | 1 | 启用 Trap 接收 |
| SNMP.Traps.ListenerPort | 162 | Trap 监听端口 |
| SNMP.EngineId | 80:00:DF:4B:05:20:10:08:04:02:01:00 | v3 Engine ID(初始化时自动生成) |
ICMP 轮询(ICMP.*)
| 变量 | 实测默认 | 说明 |
|---|---|---|
| ICMP.PollingInterval | 60 | ICMP 轮询间隔(秒) |
| ICMP.PingTimeout | 1500 | 单次 ping 超时(毫秒) |
| ICMP.PingSize | 46 | ping 包大小(字节) |
| ICMP.CollectPollStatistics | 1 | 收集轮询统计(丢包率/响应时间) |
对象与状态计算(Objects.*)
| 变量 | 实测默认 | 说明 |
|---|---|---|
| Objects.StatusPollingInterval | 60 | 状态轮询间隔(秒) |
| Objects.ConfigurationPollingInterval | 3600 | 配置轮询间隔(秒) |
| Objects.PollCountForStatusChange | 1 | 连续失败几次判状态变化 |
| Objects.EnableZoning | 1 | 启用区域(Zone)分层 |
| Objects.StatusCalculation.PropagationAlgorithm | 1 | 状态传播算法(1 = 最差子节点优先) |
| Objects.SyncInterval | 60 | 对象同步间隔(秒) |
数据采集(DataCollection.*)
| 变量 | 实测默认 | 说明 |
|---|---|---|
| DataCollection.DefaultDCIPollingInterval | 60 | DCI 默认采集间隔(秒) |
| DataCollection.DefaultDCIRetentionTime | 30 | 采集数据默认保留(天) |
| DataCollection.Aggregation.Enabled | 0 | 预聚合开关(默认关) |
| DataCollection.Aggregation.DefaultHourlyRetentionTime | 365 | 小时聚合保留(天) |
| DataCollection.Aggregation.DefaultDailyRetentionTime | 1825 | 天聚合保留(天) |
数据库连接池与写入(DBConnectionPool. / DBWriter.)**
| 变量 | 实测默认 | 说明 |
|---|---|---|
| DBConnectionPool.BaseSize | 10 | 连接池基础连接数 |
| DBConnectionPool.MaxSize | 30 | 连接池上限 |
| DBConnectionPool.MaxLifetime | 14400 | 连接最长寿命(秒) |
| DBWriter.MaxRecordsPerStatement | 100 | 单 SQL 语句最大记录数 |
| DBWriter.MaxRecordsPerTransaction | 1000 | 单事务最大记录数 |
| DBWriter.RawDataFlushInterval | 30 | 原始数据刷盘间隔(秒) |
| DBWriter.InsertParallelismDegree | 1 | 插入并行度 |
线程池(ThreadPool.*)
| 变量 | 实测默认 | 说明 |
|---|---|---|
| ThreadPool.Poller.BaseSize / MaxSize | 10 / 250 | 状态/配置轮询线程池 |
| ThreadPool.DataCollector.BaseSize / MaxSize | 10 / 250 | 数据采集线程池 |
| ThreadPool.Agent.BaseSize / MaxSize | 32 / 256 | 代理请求处理线程池 |
| ThreadPool.Discovery.BaseSize / MaxSize | 8 / 64 | 发现线程池 |
| ThreadPool.Main.BaseSize / MaxSize | 8 / 256 | 主线程池 |
事件与告警(Events. / Alarms.)**
| 变量 | 实测默认 | 说明 |
|---|---|---|
| Events.Processor.PoolSize | 1 | 事件处理线程数 |
| Events.LogRetentionTime | 90 | 事件日志保留(天) |
| Alarms.HistoryRetentionTime | 180 | 告警历史保留(天) |
| Alarms.EnableTimedAck | 1 | 支持定时确认 |
| EventStorm.EnableDetection | 0 | 事件风暴检测(默认关;开启后 EventsPerSecond 阈值 1000/秒) |
安全(Server.Security.*)
| 变量 | 实测默认 | 说明 |
|---|---|---|
| Server.Security.MinPasswordLength | 0 | 最小密码长度(0 = 不限) |
| Server.Security.IntruderLockoutThreshold | 0 | 入侵锁定阈值(0 = 不锁定;设为 N 次失败后锁定) |
| Server.Security.IntruderLockoutTime | 30 | 锁定时长(分钟) |
| Server.Security.GraceLoginCount | 5 | 密码过期宽限登录次数 |
| Server.Security.PasswordHash.TimeCost | 3 | 口令哈希 Argon2 时间成本 |
| Server.Security.PasswordHash.MemoryCostKB | 65536 | 口令哈希 Argon2 内存成本(KB) |
WebAPI(WebAPI.*)
| 变量 | 实测默认 | 说明 |
|---|---|---|
| WebAPI.AuthTokenMaxLifetime | 86400 | API 令牌最长有效期(秒,1 天) |
| WebAPI.AuthTokenWarningThreshold | 3600 | 令牌过期前预警阈值(秒) |
💡 技术拓展:状态传播算法(Objects.StatusCalculation.PropagationAlgorithm)决定容器对象(如机房、分组)的状态如何由子对象汇总——常见策略有"最差优先"(任一子节点 DOWN 容器即 DOWN,适合总览告警)、"加权平均"(按权重折算,适合容量视图)、"固定值"(人为指定)。NetXMS 默认取 1(最差子状态优先),并支持 Thresholds/Translation 十六进制串自定义阈值映射(实测默认 503C2814/01020304)。多数监控场景用默认即可。
四、代理配置 /etc/nxagentd.conf
4.1 配置文件结构
nxagentd 配置按节组织,核心节为 [CORE](实测配置内容):
[CORE]
# 允许来自监控服务器网段的连接(full access)
MasterServers=10.89.63.0/24
### Logging
LogFile={stdout}
#DebugLevel=0
SubAgent=filemgr
| 配置项 | 说明 |
|---|---|
| MasterServers | 代理侧访问控制:允许哪些服务器/网段以完全权限连接。生产环境写服务端具体地址,避免 0.0.0.0/0 |
| LogFile | 日志位置,{stdout} 或文件路径 |
| DebugLevel | 调试级别 0–9(注释状态即默认 0) |
| SubAgent | 加载子代理模块(可多行写多个),filemgr 提供远程文件管理指标;模块文件不存在时启动日志报加载失败但不阻断 |
4.2 命令行参数
nxagentd -h 实测(与 nxagentd -v 版本输出一并验证):
NetXMS Core Agent Version 7.0.1 Build 7.0-824-g44d7a0dfb5 (UNICODE)
Usage: nxagentd [options]
Where valid options are:
-B <uin> : Set zone UIN
-c <file> : Use configuration file <file> (default {search})
-C : Load configuration file, dump resulting configuration, and exit
-d : Run as daemon/service
-D <level> : Set debug level (0..9)
-f : Run in foreground
-g <gid> : Change group ID to <gid> after start
-G <name> : Use alternate global section <name> in configuration file
-h : Display help and exit
-K : Shutdown all connected external sub-agents
-l : Get log file location
-M <addr> : Download config from management server <addr>
-o <format> : Set configuration outpot format (json, tree, or xml)
-O <option> : Set configuration option
-p : Path to pid file (default: /var/run/nxagentd.pid)
-P <text> : Set platform suffix to <text>
-Q <entry> : Load configuration file, query values for given entry, and exit
-r <addr> : Register agent on management server <addr>
-S : Run as systemd daemon
-t <tag>:<level> : Set debug level for specific tag
-T : Reset agent identity
-u <uid> : Change user ID to <uid> after start
-v : Display version and exit
高频组合:-C 校验并 dump 配置;-O 命令行覆盖单个配置项(免改文件试参数);-r <server> 把代理注册到服务端(依赖服务端 Agent.EnableRegistration=1 默认开启);-S 交给 systemd 托管时的运行模式。
4.3 配置校验与树形 dump
nxagentd -C
实测回显(含一条真实报错):
Error reading additional configuration files from "/etc/nxagentd.conf.d"
config
+- CORE
+- MasterServers
| value: 10.89.63.0/24
+- LogFile
| value: {stdout}
+- SubAgent
value: filemgr
树形输出即代理最终生效配置。首行报错是因为 /etc/nxagentd.conf.d 扩展目录不存在——代理支持在该目录放分片配置(如各子代理独立配置),目录不存在时给出提示但不影响主配置加载;需要分片配置时创建该目录即可。
4.4 远程读取代理生效配置
服务端可用 nxget 的 -c 选项拉取代理当前生效配置(JSON 格式),实测:
nxget agent -c
{
"CORE": {
"MasterServers": "10.89.63.0/24",
"LogFile": "{stdout}",
"SubAgent": "filemgr"
}
}
该输出与 4.3 的本地 dump 一致,可用于核对"服务端看到的代理配置"与"代理本地配置"是否同步。
五、Web 控制台配置(JVM 与 SSL)
Web 控制台是 NetXMS 栈内唯一的 Java 进程(Jetty 12 托管),配置集中在两处:JVM 启动参数与 SSL 属性文件。
5.1 JVM 堆内存限制(必配)
Web 控制台的 JVM 参数在启动命令的 JAVA_OPTS/JAVA_OPTIONS 变量处修改,按托管形态对应位置:
- 编排部署:web 服务的
environment.JAVA_OPTIONS: "-Xms256m -Xmx512m"(见部署篇第七章); - systemd 托管:unit 文件中
Environment=JAVA_OPTS=-Xms256m -Xmx512m(每行一个 Environment=); - 脚本启动:启动脚本中调用 java 前导出的
JAVA_OPTS变量。
本环境实测堆限 256–512MB,启动后用 jps -v 验证实际生效值:
jps -v
1 start.jar -Djava.io.tmpdir=/tmp/jetty -Xms256m -Xmx512m
100 Jps -Dapplication.home=/usr/lib/jvm/java-25-amazon-corretto -Xms8m -Djdk.module.main=jdk.jcmd
start.jar(Jetty 启动器)行出现 -Xms256m -Xmx512m 即生效确认。堆限 256–512MB 对中小规模(数百节点)完全够用;节点规模上万时可升至 1–2GB,但应配合连接池与线程池参数一起调(见第七章)。
5.2 SSL 配置 jetty-ssl.properties
Web 控制台默认 HTTPS(8443),SSL 密码经环境变量 KEYSTORE_PASSWORD 注入启动命令后写入 jetty-ssl.properties,实测文件内容(三行):
jetty.sslContext.keyStorePassword=changeit
jetty.ssl.sniRequired=false
jetty.ssl.sniHostCheck=false
| 属性 | 说明 |
|---|---|
| jetty.sslContext.keyStorePassword | 证书库密码,生产部署替换自签名库时应同步修改 |
| jetty.ssl.sniRequired=false | 不强制 SNI(用 IP 直连访问时不报错) |
| jetty.ssl.sniHostCheck=false | 不校验主机名与 SNI 匹配 |
生产建议:替换为正式证书、按需关闭 sniHostCheck=false 这两项宽松设置,并把 8443 反向代理到标准 443。
六、日志管理
6.1 日志位置查询
netxmsd -l
Using configuration file "/etc/netxmsd.conf"
{stdout}
nxagentd -l
{stdout}
两者实测均输出 {stdout}(服务以 systemd 托管时由 journal 收集)。改为文件路径后此处回显对应文件。
6.2 调试级别
- 服务端:netxmsd.conf 的 DebugLevel(0–9),或运行中经控制台
debug <level>动态调整(无需重启);针对单个模块调级别用netxmsd -t <tag>:<level>或控制台debug <tag> <level>; - 代理:nxagentd.conf 的 DebugLevel,或启动参数
-D <level>;运行中由控制台远程下发。
排查连接问题时推荐临时把相关 tag 调到 6–8(如 db/comm),定位后立即调回。
6.3 文件日志的轮转
LogFile 指向文件时,可用系统 logrotate 托管(/etc/logrotate.d/netxmsd 示例):
/var/log/netxmsd.log {
daily
rotate 14
compress
missingok
notifempty
copytruncate
}
服务端亦支持命令触发轮转:控制台内执行 logrotate 即强制切割当前日志文件(配合日志切割脚本使用)。数据库侧的事件/告警历史保留由 *.RetentionTime 变量组管理(默认 90–180 天,见 3.3),每天凌晨由 Housekeeper 线程清理(Housekeeper.StartTime 默认 02:00)。
七、性能调优建议
以下调优项均给出 7.0.1 实测默认值与建议方向(中小规模可全部保持默认):
| 方向 | 变量 | 默认 | 建议 |
|---|---|---|---|
| Web JVM 堆 | JAVA_OPTIONS | — | 固定 -Xms256m -Xmx512m 起步,万级节点再扩 |
| 数据库连接池 | DBConnectionPool.BaseSize/MaxSize | 10/30 | 轮询线程多时 MaxSize 提到 50 |
| 批量写入 | DBWriter.MaxRecordsPerStatement/MaxRecordsPerTransaction | 100/1000 | 高写入量优先调事务大小而非并行度 |
| 轮询线程池 | ThreadPool.Poller.* | 10/250 | 节点数千时提高 BaseSize,避免峰值扩容抖动 |
| 采集间隔 | DataCollection.DefaultDCIPollingInterval | 60 | 大规模环境慎降到 10s 以下 |
| ICMP 轮询 | ICMP.PollingInterval | 60 | 与 StatusPollingInterval 联动评估 |
| 历史保留 | 各 *.RetentionTime | 90–180 天 | 磁盘紧张时优先砍事件日志,保留告警历史 |
| 预聚合 | DataCollection.Aggregation.Enabled | 0 | 长周期图表需求强时开启(需 TimescaleDB 收益更佳) |
调优路径建议:先 nxdbmgr get % 存档当前值 → 单项修改 → 观察服务端日志与数据库负载 → 固化到部署配置。所有变量修改即时生效,无需重启服务端。
八、参考
- 服务端/数据库管理工具帮助:
netxmsd -h、nxdbmgr -h(7.0.1 实测回显,见本文与 CLI 命令篇) - 运行时变量 443 项全量实测值:
nxdbmgr get %(本文 3.1 节) - 官方文档站:https://www.netxms.org/documentation/