Nightingale 9.2.0 配置参数详解

Nightingale(夜莺)v9.2.0 服务端 etc/config.toml 逐段参数详解:Global/Log/HTTP/DB/Redis/Alert/Center/Pushgw/Ibex 九大段含默认值与语义,附 DEBUG 日志、登录验证码、告警引擎名、Ibex 开关、匿名查询等六项改动实测验证与常见配置坑

NightingaleNightingale监控2026/10/20

Nightingale 9.2.0 配置参数详解

目标:对 Nightingale(夜莺)v9.2.0 服务端唯一的配置文件 etc/config.toml 逐段拆解参数含义、默认值与生效方式,并对关键参数(日志级别、登录验证码、告警引擎名、Ibex 模块、匿名查询)给出「改动 → 重启 → 验证」的实测结果。全文基于官方 Release 包自带配置模板与真实运行环境实测。

一、环境信息

项目值说明
服务端版本v9.2.0-01a8e22eb21d81f5cbe5c34e5a1511ff63e39983n9e --version 实测
配置文件/app/etc/config.toml(容器内),对应部署目录 etc-nightingale/config.toml启动日志确认加载路径
运行形态n9e 容器 + MySQL 8.0 + Redis 7.2 + VictoriaMetrics v1.153.0 + Categraf v0.5.15见本专栏《Docker Compose 部署指南》
实测方式修改配置 → 重启进程 → 观察日志/接口/数据库变化每项均给出实测回显

二、配置文件定位与加载机制

  1. 唯一入口:n9e 启动时读取 etc/config.toml(可用 -c 参数指定其他路径),所有模块参数集中在该文件,官方 Release 包 etc/config.toml 即模板。
  2. 生效方式:普通参数在进程重启后生效,n9e 不支持配置文件热加载;配置存于文件而非数据库,多实例集群部署时需保证各实例文件一致。
  3. 结构:TOML 分段结构,顶层段为 Global/Log/HTTP/DB/Redis/Alert/Center/Pushgw/Ibex 九大段,其中 HTTP 下有 6 个子段(ShowCaptcha、APIForAgent、APIForService、JWTAuth、TokenAuth、ProxyAuth、RSA),Alert 下有 Heartbeat/Alerting 子段,Center 下有 AnonymousAccess 子段。

三、逐段参数详解

3.1 Global 段

参数默认值说明
RunModerelease运行模式,release/test;test 模式下框架日志更详细,生产保持 release

3.2 Log 段

参数默认值说明
Dirlogs日志文件目录(Output=file 时使用)
LevelINFO日志级别:DEBUG / INFO / WARNING / ERROR
Outputstdout输出目标:stdout / stderr / file
KeepHours(注释)按时间轮转保留小时数
RotateNum / RotateSize(注释)3 / 256按大小轮转:单个文件数上限 / 单位 MB

实测:Level="INFO" 改为 "DEBUG" 并重启,30 秒窗口内日志出现 78 条 DEBUG 行,例如:

DEBUG models/configs.go:95 Phone encryption config loaded: enabled=false
DEBUG memsto/notify_channel_cache.go:295 started 5 notify consumers for channel 2

3.3 HTTP 段(Web 服务)

参数默认值说明
Host / Port0.0.0.0 / 17000监听地址与端口,浏览器与 API 统一入口
CertFile / KeyFile空HTTPS 证书路径,同时配置即启用 https
PrintAccessLogfalse访问日志开关
PProffalse性能分析端点开关(排障用,生产关闭)
ExposeMetricstrue暴露 /metrics 供 PromQL 抓取自身指标
ShutdownTimeout30优雅停机超时(秒)
MaxContentLength67108864请求体上限(64MB)
ReadTimeout / WriteTimeout / IdleTimeout20 / 40 / 120HTTP 服务三超时(秒)

实测:默认 ExposeMetrics=true 下 curl -I http://127.0.0.1:8130/metrics 返回 200(容器映射端口 8130 → 17000)。

3.3.1 HTTP.ShowCaptcha(登录验证码)

参数默认值说明
Enablefalse登录页图形验证码开关;开启后登录必须携带 captchaid+verifyvalue

实测:改为 true 重启后——

  • 登录页状态查询接口 GET /api/n9e/auth/ifshowcaptcha 返回 {"dat":{"show":true}};
  • 不带验证码参数直接调登录接口返回 HTTP 500(源码 router_login.go:CaptchaVerify 校验失败即拒绝);
  • 配套接口:POST /auth/captcha 生成图形验证码、POST /auth/captcha-verify 校验。

3.3.2 HTTP.APIForAgent / APIForService(数据上报接口)

参数默认值说明
APIForAgent.Enabletrue采集器(Categraf 等)数据上报与心跳接口:/prometheus/v1/write、/v1/n9e/heartbeat 等
APIForService.Enablefalse面向「服务监控」类上报接口,默认关闭
子段 BasicAuth(注释)上报接口摘要式口令保护,键值对形式 user = md5(password)

💡 说明:Internet 暴露部署时建议为 Agent 接口开启 BasicAuth,防止任意人伪造心跳与写入数据。

3.3.3 HTTP.JWTAuth / TokenAuth / ProxyAuth / RSA

参数默认值说明
JWTAuth.AccessExpired1500登录态有效期(分钟),约 25 小时
JWTAuth.RefreshExpired10080刷新令牌有效期(分钟),7 天
JWTAuth.RedisKeyPrefix/jwt/JWT 相关键在 Redis 中的前缀
TokenAuth.Enablefalse固定 Token 认证头开关(Header 名 X-User-Token)
ProxyAuth.Enablefalse反向代理透传用户名认证(开启后 JWT 失效);HeaderUserNameKey=X-User-Name,DefaultRoles=[Standard]
RSA.OpenRSAfalse登录口令 RSA 加密传输开关

3.4 DB 段(元数据库)

参数默认值说明
DSN(模板示例 1234)连接串;MySQL 与 PostgreSQL 两种写法,注释中给出 PG 示例
DebugfalseSQL 调试日志(慢查询日志级别)
DBTypemysqlmysql 或 postgres
MaxLifetime7200连接最大复用时间(秒)
MaxOpenConns / MaxIdleConns150 / 50连接池上限;大规模集群(万级采集对象)可适当调大

本文实测栈 DSN:root:q1w2e3r4@tcp(mysql:3306)/n9e_v6?charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=True&loc=Local&allowNativePasswords=true——库名 n9e_v6 由初始化 SQL 创建,即使 v9 版本库名仍沿用 n9e_v6 命名。

3.5 Redis 段

参数默认值说明
Address127.0.0.1:6379单机填 ip:port;cluster 类型填 ip1:port,ip2:port
Username / Password(注释空)认证信息
DB / UseTLS / TLSMinVersion0 / false / 1.2逻辑库与 TLS
RedisTypestandalonestandalone / cluster / sentinel
MasterName(注释)sentinel 模式主库名

3.6 Alert 段(告警引擎)

参数默认值说明
Heartbeat.IP空(自动探测)引擎心跳上报的 IP
Heartbeat.Interval1000心跳间隔(毫秒)
Heartbeat.EngineNamedefault引擎集群名。多套引擎分组处理不同数据源时改名分组;数据源的 cluster_name 必须与该值一致才会被本组引擎评估(见 3.9 排障)
Alerting.NotifyConcurrency10(注释)通知发送并发数

实测:EngineName 由 default 改为 n9e-engine-01 并重启后,MySQL alerting_engines 表出现新的心跳行(节选):

engine_cluster   instance           datasource_id
default          10.89.60.5:17000   0        <- 改名前遗留
n9e-engine-01    10.89.60.5:17000   0        <- 改名后新心跳
n9e-engine-01    10.89.60.5:17000   99999999

旧集群心跳行会在超时后被清理;改回 default 后数据源 1 的评估恢复。

3.7 Center 段(页面中心)

参数默认值说明
MetricsYamlFile./etc/metrics.yaml指标说明元数据(仪表盘联想提示用)
I18NHeaderKeyX-Language多语言请求头键名
AnonymousAccess.PromQuerierfalse匿名查询:开启后 /proxy/:id/*url、/ds-query 等查询接口免登录可访问
AnonymousAccess.AlertDetailfalse告警事件详情页免登录查看

实测:默认 false 时无 Token 调 POST /api/n9e/ds-query 返回 401;改为 true 重启后同一请求通过认证层(进入参数校验,返回参数错误而非 401);改回 false 恢复 401。生产环境保持 false,仅内部分享看板时临时开启。

3.8 Pushgw 段(数据转发网关)

参数默认值说明
LabelRewritetrue用库内(业务组/机器全局标签)改写时序标签
ForceUseServerTStrue忽略上报数据自带时间戳、统一用服务端接收时间(避免采集端时钟漂移造成乱序)
DebugSample(注释)调试用:按标签过滤打印样本
WriterOpt.QueueMaxSize / QueuePopSize1000000 / 1000内存队列长度与批量弹出条数,突发流量时防丢可调大

[[Pushgw.Writers]] 数组(可配多个后端,多写):

参数说明
UrlRemote Write 端点,本文实测 http://victoriametrics:8428/api/v1/write
BasicAuthUser / BasicAuthPass后端认证
Headers附加请求头,实测 ["X-From", "n9e"]
Timeout / DialTimeout请求/拨号超时(毫秒),10000 / 3000
TLSHandshakeTimeout / ExpectContinueTimeout / IdleConnTimeout / KeepAlive连接池参数(毫秒)
MaxConnsPerHost / MaxIdleConns / MaxIdleConnsPerHost0 / 100 / 100,0 表示不限制总连接
UseTLS/TLSCA/TLSCert/TLSKey/InsecureSkipVerify后端为 HTTPS 时的证书配置
WriteRelabels写入前标签重写(Action=replace/keep/drop 等,语义同 Prometheus relabel)

3.9 Ibex 段(自愈任务/边缘转发模块)

参数默认值说明
Enabletrue是否内置启动 Ibex 模块(告警自愈脚本调度、边缘数据转发)
RPCListen0.0.0.0:20090Ibex RPC 监听端口

实测:Enable=false 重启后进程日志不再出现 rpc.listening: 0.0.0.0:20090,/proc/net/tcp6 中 20090(十六进制 4E7A)监听为 0;恢复 true 后日志重现 rpc.listening: 0.0.0.0:20090 且监听计数为 2。不用自愈功能的生产环境可安全关闭,减少一个对外端口。

四、参数改动生效方式实测汇总

改动项生效方式验证手段实测结果
Log.Level重启进程启动日志级别DEBUG 下 30s 出现 78 条 DEBUG 日志
HTTP.ShowCaptcha.Enable重启进程/api/n9e/auth/ifshowcaptcha{"show":true},无验证码登录返回 500
HTTP.ExposeMetrics重启进程curl /metrics200
Alert.Heartbeat.EngineName重启进程alerting_engines 表新集群名心跳行出现
Ibex.Enable重启进程启动日志 + 端口监听20090 监听随开关出现/消失
Center.AnonymousAccess.PromQuerier重启进程无 Token 调 /ds-query401 ↔ 通过认证
DB.DSN / Redis.Address重启进程启动日志连接报错配置错误时启动失败并打印连接错误

五、常见配置坑

  1. 数据源 cluster_name 与 Alert.Heartbeat.EngineName 不一致:告警规则不评估(事件恒为 0),这是 v9 最隐蔽的坑,详见本专栏《Docker Compose 部署指南》排障实录。
  2. RunMode=release 别改:test 模式日志量极大,且部分校验行为不同。
  3. ForceUseServerTS=true 时:历史回灌数据时间戳会被改写,需要保留原始时间戳的迁移场景应设 false。
  4. MaxContentLength 64MB:通过 API 批量导入仪表盘/规则 JSON 超过 64MB 会被拒,需调大。
  5. 多实例部署:除 Heartbeat.IP 需各填本机 IP 外其余配置完全一致;JWT 依赖共享 Redis,多实例必须同 Redis。

六、参考链接