NetXMS 7.0.1 配置参数详解

NetXMS 7.0.1 三层配置体系详解:/etc/netxmsd.conf 服务端配置、443 项数据库运行时变量分组精讲(nxdbmgr get/set 实测)、/etc/nxagentd.conf 代理配置、Web 控制台 JVM 堆限与 SSL,全部参数标注实测默认值。

NetXMSNetXMS自托管监控2026/11/01

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.confnetxmsd 启动项(数据库连接、日志、调试)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

逐项说明:

配置项实测值含义与可取值
DBDriverpgsql.ddr数据库驱动模块名。合法类型全集为 db2/mssql/mysql/oracle/pgsql/sqlite/tsdb(与 nxdbmgr 支持的数据库类型一致),PostgreSQL 用 pgsql.ddr,TimescaleDB 库亦用此驱动
DBServerdb数据库主机名或 IP。裸机部署写 127.0.0.1 或数据库主机
DBNamenetxms库名
DBLogin / DBPasswordnetxms / q1w2e3r4连接账号。生产环境应使用最小权限的专用账号
LogFile{stdout}日志输出位置,{stdout} 表示标准输出(systemd 场景进 journal),也可写文件路径如 /var/log/netxmsd.log
DebugLevel5调试级别 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.ListenerPort4701客户端(控制台)监听端口,即 NXCP 主端口
Client.KeepAliveInterval60客户端保活间隔(秒)
Client.InactivityTimeout0客户端不活动超时(0 = 不超时)
Server.CommandOutputTimeout60远程命令输出等待超时(秒)
Server.RestrictLocalConsoleAccess1默认禁止远程访问本地控制台(安全默认)

代理接入(Agent. / AgentTunnels.)**

变量实测默认说明
Agent.CommandTimeout4000代理命令超时(毫秒)
Agent.ConnectionTimeout5000代理连接超时(毫秒)
Agent.EnableRegistration1允许代理自动注册(配合 nxagentd -r 使用)
Agent.DefaultEncryptionPolicy1加密策略(与 nxget -e 枚举一致:1 = 仅当代理要求加密时建立加密连接)
AgentTunnels.ListenPort4703代理隧道监听端口
AgentTunnels.UnboundTunnelTimeout3600未绑定隧道超时(秒)

SNMP(SNMP.*)

变量实测默认说明
SNMP.MinVersion0允许的最低 SNMP 版本(0 = v1)
SNMP.RequestTimeout1500请求超时(毫秒)
SNMP.RetryCount3重试次数
SNMP.Traps.Enable1启用 Trap 接收
SNMP.Traps.ListenerPort162Trap 监听端口
SNMP.EngineId80:00:DF:4B:05:20:10:08:04:02:01:00v3 Engine ID(初始化时自动生成)

ICMP 轮询(ICMP.*)

变量实测默认说明
ICMP.PollingInterval60ICMP 轮询间隔(秒)
ICMP.PingTimeout1500单次 ping 超时(毫秒)
ICMP.PingSize46ping 包大小(字节)
ICMP.CollectPollStatistics1收集轮询统计(丢包率/响应时间)

对象与状态计算(Objects.*)

变量实测默认说明
Objects.StatusPollingInterval60状态轮询间隔(秒)
Objects.ConfigurationPollingInterval3600配置轮询间隔(秒)
Objects.PollCountForStatusChange1连续失败几次判状态变化
Objects.EnableZoning1启用区域(Zone)分层
Objects.StatusCalculation.PropagationAlgorithm1状态传播算法(1 = 最差子节点优先)
Objects.SyncInterval60对象同步间隔(秒)

数据采集(DataCollection.*)

变量实测默认说明
DataCollection.DefaultDCIPollingInterval60DCI 默认采集间隔(秒)
DataCollection.DefaultDCIRetentionTime30采集数据默认保留(天)
DataCollection.Aggregation.Enabled0预聚合开关(默认关)
DataCollection.Aggregation.DefaultHourlyRetentionTime365小时聚合保留(天)
DataCollection.Aggregation.DefaultDailyRetentionTime1825天聚合保留(天)

数据库连接池与写入(DBConnectionPool. / DBWriter.)**

变量实测默认说明
DBConnectionPool.BaseSize10连接池基础连接数
DBConnectionPool.MaxSize30连接池上限
DBConnectionPool.MaxLifetime14400连接最长寿命(秒)
DBWriter.MaxRecordsPerStatement100单 SQL 语句最大记录数
DBWriter.MaxRecordsPerTransaction1000单事务最大记录数
DBWriter.RawDataFlushInterval30原始数据刷盘间隔(秒)
DBWriter.InsertParallelismDegree1插入并行度

线程池(ThreadPool.*)

变量实测默认说明
ThreadPool.Poller.BaseSize / MaxSize10 / 250状态/配置轮询线程池
ThreadPool.DataCollector.BaseSize / MaxSize10 / 250数据采集线程池
ThreadPool.Agent.BaseSize / MaxSize32 / 256代理请求处理线程池
ThreadPool.Discovery.BaseSize / MaxSize8 / 64发现线程池
ThreadPool.Main.BaseSize / MaxSize8 / 256主线程池

事件与告警(Events. / Alarms.)**

变量实测默认说明
Events.Processor.PoolSize1事件处理线程数
Events.LogRetentionTime90事件日志保留(天)
Alarms.HistoryRetentionTime180告警历史保留(天)
Alarms.EnableTimedAck1支持定时确认
EventStorm.EnableDetection0事件风暴检测(默认关;开启后 EventsPerSecond 阈值 1000/秒)

安全(Server.Security.*)

变量实测默认说明
Server.Security.MinPasswordLength0最小密码长度(0 = 不限)
Server.Security.IntruderLockoutThreshold0入侵锁定阈值(0 = 不锁定;设为 N 次失败后锁定)
Server.Security.IntruderLockoutTime30锁定时长(分钟)
Server.Security.GraceLoginCount5密码过期宽限登录次数
Server.Security.PasswordHash.TimeCost3口令哈希 Argon2 时间成本
Server.Security.PasswordHash.MemoryCostKB65536口令哈希 Argon2 内存成本(KB)

WebAPI(WebAPI.*)

变量实测默认说明
WebAPI.AuthTokenMaxLifetime86400API 令牌最长有效期(秒,1 天)
WebAPI.AuthTokenWarningThreshold3600令牌过期前预警阈值(秒)

💡 技术拓展:状态传播算法(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/MaxSize10/30轮询线程多时 MaxSize 提到 50
批量写入DBWriter.MaxRecordsPerStatement/MaxRecordsPerTransaction100/1000高写入量优先调事务大小而非并行度
轮询线程池ThreadPool.Poller.*10/250节点数千时提高 BaseSize,避免峰值扩容抖动
采集间隔DataCollection.DefaultDCIPollingInterval60大规模环境慎降到 10s 以下
ICMP 轮询ICMP.PollingInterval60与 StatusPollingInterval 联动评估
历史保留各 *.RetentionTime90–180 天磁盘紧张时优先砍事件日志,保留告警历史
预聚合DataCollection.Aggregation.Enabled0长周期图表需求强时开启(需 TimescaleDB 收益更佳)

调优路径建议:先 nxdbmgr get % 存档当前值 → 单项修改 → 观察服务端日志与数据库负载 → 固化到部署配置。所有变量修改即时生效,无需重启服务端。

八、参考

  • 服务端/数据库管理工具帮助:netxmsd -h、nxdbmgr -h(7.0.1 实测回显,见本文与 CLI 命令篇)
  • 运行时变量 443 项全量实测值:nxdbmgr get %(本文 3.1 节)
  • 官方文档站:https://www.netxms.org/documentation/