完整字段参考
完整字段参考
本文是配置字段查询手册。新用户建议先看配置说明,需要查字段含义时再回到本页。
websites[]
name(string, 必填): 站点名称,站点 ID 由该字段生成;改名会产生新站点并重新解析。logPath(string): 日志路径,支持通配符*。配置sources后会被忽略。domains(string[]): 站点域名列表,用于判断站内来源,建议填写。logType(string): 内置日志类型,详见支持的日志格式。logFormat(string): 自定义日志格式,适合 Nginx$变量格式。logRegex(string): 自定义正则,必须包含命名分组。timeLayout(string): 自定义时间解析格式,留空使用内置默认值。sources(array): 多来源配置,详见日志来源配置。whitelist(object): 白名单命中提示配置。
websites[].whitelist
白名单按站点生效,示例:
"whitelist": {
"enabled": true,
"ips": ["1.1.1.1", "10.0.0.0/8", "1.1.1.10-1.1.1.100"],
"cities": ["上海", "Hangzhou"],
"nonMainland": false
}字段说明:
enabled(bool): 白名单总开关。ips(string[]): IP 规则,支持单 IP、CIDR、IP 段。cities(string[]): 城市规则,包含匹配,忽略常见行政后缀差异。nonMainland(bool): 非大陆访问规则,包含海外及港澳台。
校验规则:
enabled=true时,ips、cities、nonMainland至少需要配置一类。ips中每一项必须是合法 IP/CIDR/IP 段,IP 段起始地址不能大于结束地址。
当前行为:
- 命中白名单时会写入系统通知,分类为
whitelist。 - 白名单只用于标记和告警提示,不会阻止日志解析和入库。
system
logDestination:file或stdout,默认file。taskInterval: 定期任务间隔,默认1m,最小 5s。backfillMaxDurationPerRun: 历史回填单轮最长时长,Go duration,默认8s。实际单轮时长取taskInterval/3与该值中的较小值。backfillMaxBytesPerRun: 历史回填单轮最大字节数,默认33554432(32 MiB)。httpSourceTimeout: 远程 HTTP 日志读取超时,Go duration,默认2m。logRetentionDays: 保留天数,默认 30。只清理已入库访问数据,不删除原始日志文件。parseBatchSize: 单批解析条数,默认 100。ipGeoCacheLimit: IP 归属地缓存上限,默认 1000000。ipGeoApiUrl: IP 归属地远端 API 地址,默认http://ip-api.com/batch。自定义 API 需遵循IP 归属地解析中的协议定义。demoMode: 是否演示模式,默认false。accessKeys: 访问密钥列表,默认空。language:zh-CN或en-US,默认zh-CN。webBasePath: 前端访问前缀,仅支持单段路径。mobilePwaEnabled: 是否启用移动端 PWA。serverStatus: 服务器状态模块配置。开启后概况页会显示温度、风扇和磁盘 SMART 健康状态。alertPush: 系统通知外部推送配置。
logRetentionDays 生效说明
- 修改后需重启服务进程/容器,解析器才会按新值过滤入库日志。
- 如需立即按新值重建历史数据,重启后点击“重新解析”。
- 如果设置了
LOG_RETENTION_DAYS环境变量,会覆盖配置文件中的值。
webBasePath
示例:
{
"system": {
"webBasePath": "nginxpulse"
}
}效果:
- Web:
/nginxpulse/ - Mobile:
/nginxpulse/m/ - API:
/nginxpulse/api/
限制:
- 只支持单段路径,如
nginxpulse。 - 修改后需要重启服务。
- 设置后根路径
/将不可访问。
移动端底部导航栏 URL 覆盖
移动端 /m/ 支持通过 URL 参数临时覆盖导航栏位置:
- 参数优先级:
tabbarBottom高于tabbar。 - 真值(底部导航):
1、true、yes、on、bottom。 - 假值(顶部导航):
0、false、no、off、top。 - URL 中出现上述参数时,会写入本地存储并在后续页面跳转中持续生效。
示例:
# 强制底部导航
https://example.com/m/?tabbarBottom=true
# 强制顶部导航
https://example.com/m/?tabbarBottom=falsealertPush
系统通知外部推送配置,支持飞书、钉钉、企微机器人和邮件。修改后需重启服务生效。
示例:
{
"enabled": true,
"timeout": "5s",
"feishu": { "enabled": true, "webhook": "https://open.feishu.cn/open-apis/bot/v2/hook/xxx" },
"dingtalk": { "enabled": false, "webhook": "", "secret": "" },
"wecom": { "enabled": false, "webhook": "" },
"email": {
"enabled": false,
"host": "smtp.example.com",
"port": 465,
"username": "alert@example.com",
"password": "password",
"from": "alert@example.com",
"to": ["ops@example.com"],
"useTLS": true
}
}serverStatus
服务器状态模块在概况页展示主机传感器和磁盘 SMART 信息。该模块由运行参数/系统配置开启;在 UI 中对应“系统配置”里的“运行参数”步骤。NginxPulse 后端会代替浏览器请求传感器接口和磁盘接口,因此接口地址只需要能被 NginxPulse 服务端访问。
示例:
{
"system": {
"serverStatus": {
"enabled": true,
"mockEnabled": false,
"metricsUrl": "http://192.168.6.150:9911/json",
"disksUrl": "http://192.168.6.150:9911/disks",
"timeout": "5s",
"refreshInterval": "30s"
}
}
}字段说明:
enabled(bool): 是否开启服务器状态模块,默认false。mockEnabled(bool): 是否使用后端内置模拟数据。仅用于预览 UI 或开发调试;开启后不会请求metricsUrl和disksUrl。metricsUrl(string): 传感器接口地址,必须是http或https。返回 CPU 温度、主板温度、NVMe 温度、风扇转速等指标。disksUrl(string): 磁盘 SMART 接口地址,必须是http或https。返回磁盘列表、健康状态、温度、寿命、错误计数等指标。timeout(string): 后端请求上游接口的超时时间,Go duration 格式,如5s、10s。refreshInterval(string): 概况页自动刷新服务器状态的间隔,Go duration 格式,如30s、1m。
请求行为:
- NginxPulse 通过
GET请求metricsUrl和disksUrl,并发送Accept: application/json。 - 上游接口 HTTP 状态码必须是
2xx。 - 单个接口响应体最大读取 2 MiB。
metricsUrl或disksUrl任一失败时,概况页会显示“部分可用”;两个都失败时显示“异常”。- 上游返回中的
status字段不是ok时,概况页会显示“需关注”。
传感器接口返回结构
传感器接口需要返回 JSON 对象。推荐结构如下:
{
"status": "ok",
"updated_at": "2026-04-25T12:30:00+08:00",
"metrics": {
"cpu_temp_celsius": 52.4,
"board_temp_celsius": 34.8,
"nvme_temp_celsius": 62.7,
"cpu_fan_rpm": 940,
"chassis_fan1_rpm": 720
},
"missing_metrics": []
}顶层字段:
status(string, 可选): 上游状态。建议返回ok;返回其他值时,NginxPulse 会把服务器状态标记为“需关注”。updated_at(string, 可选): 数据更新时间。建议使用 RFC3339/ISO 8601 时间字符串。metrics(object): 传感器指标集合。missing_metrics(string[], 可选): 无法采集的指标名称列表,会在概况页提示。
metrics 字段:
cpu_temp_celsius(number): CPU 温度,单位摄氏度,用于 CPU 温度卡片和健康度计算。board_temp_celsius(number): 主板或机箱环境温度,单位摄氏度。nvme_temp_celsius(number): NVMe 温度,单位摄氏度。页面会和磁盘列表中的最高温度一起取较高值展示。cpu_fan_rpm(number): CPU 风扇转速,单位 RPM。chassis_fan1_rpm(number): 机箱风扇转速,单位 RPM。
说明:
- 所有
metrics字段都可以缺省;缺省时对应位置会显示为空值。 - 如果有多个机箱风扇,目前首页只读取
chassis_fan1_rpm。 - 温度和风扇值建议返回数字,不要带单位字符串。
磁盘接口返回结构
磁盘接口需要返回 JSON 对象。推荐结构如下:
{
"status": "ok",
"updated_at": "2026-04-25T12:30:00+08:00",
"disk_count": 2,
"disks": [
{
"name": "nvme0n1",
"path": "/dev/nvme0n1",
"smartctl_path": "/dev/nvme0",
"type": "nvme",
"model": "Samsung 980 PRO 2TB",
"serial": "S6AXNS0T900123A",
"firmware_version": "5B2QGXA7",
"smartctl_exit_status": 0,
"size_bytes": 2000398934016,
"smart_available": true,
"smart_enabled": true,
"health_passed": true,
"temperature_celsius": 62.7,
"percentage_used": 18,
"percentage_remaining": 82,
"media_errors": 0,
"error_log_entries": 3,
"unsafe_shutdowns": 8,
"power_on_hours": 4680,
"power_cycles": 72,
"data_units_read_bytes": 12884901888000,
"data_units_written_bytes": 7421703487488
},
{
"name": "sdb",
"path": "/dev/sdb",
"smartctl_path": "/dev/sdb",
"type": "sat",
"model": "WD Blue SA510 1TB",
"serial": "WD-WXK2A2390001",
"firmware_version": "52040100",
"smartctl_exit_status": 0,
"size_bytes": 1000204886016,
"smart_available": true,
"smart_enabled": true,
"health_passed": true,
"temperature_celsius": 41,
"percentage_used": 64,
"percentage_remaining": 36,
"media_errors": 2,
"error_log_entries": 9,
"unsafe_shutdowns": 1,
"power_on_hours": 12840,
"power_cycles": 122,
"data_units_read_bytes": 9455799992320,
"data_units_written_bytes": 6120328396800
}
]
}顶层字段:
status(string, 可选): 上游状态。建议返回ok;返回其他值时,NginxPulse 会把服务器状态标记为“需关注”。updated_at(string, 可选): 数据更新时间。传感器接口和磁盘接口都返回时,页面优先使用传感器接口的时间。disk_count(number, 可选): 磁盘总数。缺省时使用disks.length。disks(array): 磁盘 SMART 信息列表。
disks[] 字段:
name(string): 设备名,如nvme0n1、sdb。path(string): 操作系统中的设备路径,如/dev/nvme0n1。smartctl_path(string):smartctl查询路径,如/dev/nvme0。type(string): 磁盘类型,如nvme、sat。model(string): 磁盘型号,首页和弹窗中优先显示。serial(string): 序列号,用于排查具体设备。firmware_version(string): 固件版本。smartctl_exit_status(number):smartctl退出码,便于定位采集异常。size_bytes(number): 磁盘容量,单位字节。smart_available(bool): 设备是否支持 SMART。smart_enabled(bool): SMART 是否已启用。health_passed(bool): SMART 健康检查是否通过。为false时会被标记为异常。temperature_celsius(number): 磁盘温度,单位摄氏度。percentage_used(number): 已使用寿命百分比,常见于 NVMe。percentage_remaining(number): 剩余寿命百分比。页面优先用它展示健康度;低于 20 会标记为异常,低于 60 会标记为关注。media_errors(number): 介质错误计数,大于 0 会标记为异常。error_log_entries(number): 错误日志条目数量,大于 0 会标记为关注。unsafe_shutdowns(number): 异常断电次数。power_on_hours(number): 通电小时数。power_cycles(number): 通电次数。data_units_read_bytes(number): 累计读取量,单位字节。data_units_written_bytes(number): 累计写入量,单位字节。
说明:
- 字段可以按设备能力缺省;缺省字段在页面中显示为空值。
percentage_remaining、health_passed、temperature_celsius、media_errors、error_log_entries会影响风险排序和状态颜色。- 如果只能拿到
percentage_used,建议同时在接口中计算并返回percentage_remaining = 100 - percentage_used。
database
driver: 固定为postgres。dsn: PostgreSQL DSN,必填。maxOpenConns: 最大连接数。maxIdleConns: 最大空闲连接数。connMaxLifetime: 连接最大生命周期,Go duration。
示例:
{
"database": {
"driver": "postgres",
"dsn": "postgres://nginxpulse:nginxpulse@127.0.0.1:5432/nginxpulse?sslmode=disable",
"maxOpenConns": 10,
"maxIdleConns": 5,
"connMaxLifetime": "30m"
}
}server
Port: API/Web 监听端口,默认:8089。
示例:
{
"server": {
"Port": ":8089"
}
}pvFilter
PV 过滤规则用于决定哪些请求计入页面浏览量。
statusCodeInclude: 计入 PV 的状态码数组,默认[200]。excludePatterns: 排除 URL 的正则数组。excludeIPs: 排除 IP 列表。
示例:
{
"pvFilter": {
"statusCodeInclude": [200],
"excludePatterns": [
"favicon.ico$",
"robots.txt$",
"sitemap.xml$",
"^/health$",
"^/_(?:nuxt|next)/"
],
"excludeIPs": ["127.0.0.1", "::1"]
}
}环境变量覆盖
以下环境变量可覆盖配置:
CONFIG_JSON: 完整配置 JSON 字符串。WEBSITES: 仅网站数组 JSON 字符串。LOG_DESTTASK_INTERVALHTTP_SOURCE_TIMEOUTLOG_RETENTION_DAYSLOG_PARSE_BATCH_SIZEIP_GEO_CACHE_LIMITIP_GEO_API_URLDEMO_MODEACCESS_KEYSAPP_LANGUAGESERVER_STATUS_ENABLEDSERVER_STATUS_MOCK_ENABLEDSERVER_STATUS_METRICS_URLSERVER_STATUS_DISKS_URLSERVER_STATUS_TIMEOUTSERVER_STATUS_REFRESH_INTERVALSERVER_PORTPV_STATUS_CODESPV_EXCLUDE_PATTERNSPV_EXCLUDE_IPSDB_DRIVERDB_DSNDB_MAX_OPEN_CONNSDB_MAX_IDLE_CONNSDB_CONN_MAX_LIFETIME
示例:
export CONFIG_JSON="$(cat configs/nginxpulse_config.json)"
export LOG_PARSE_BATCH_SIZE=1000
export DB_DSN="postgres://nginxpulse:nginxpulse@127.0.0.1:5432/nginxpulse?sslmode=disable"