Netdata —— 秒级采集、零配置大盘、Parent 集中与健康告警的分布式可观测代理

运维监控软件手册 03-一体化监控平台 18.7 KB 原文

Netdata —— 秒级采集、零配置大盘、Parent 集中与健康告警的分布式可观测代理

分类:03 一体化监控平台 适用:Linux/FreeBSD/macOS 物理机、虚机、云主机、容器宿主机、边缘与 IoT;单机排障到数千节点(Parent 分层) 一句话:每台机器装一个 Agent,1 秒粒度自动发现指标、自带 Web 大盘、就地判定健康告警,再用 Parent 汇聚成统一视图 官方:https://www.netdata.cloud/ | https://github.com/netdata/netdata | https://learn.netdata.cloud/ 授权:Agent 开源(GPLv3+),可完全离线;Netdata Cloud 为商业 SaaS / 私有化控制面,按节点订阅

1. 它解决什么问题

痛点 对应能力
传统监控 15~60s 采样,瞬时毛刺被平均掉 默认 1 秒采集,抓得住 3~5 秒 CPU 尖峰、OOM 前抖动
装完还要 exporter + PromQL + Grafana 面板 自动发现系统/容器/应用,自带 Web 大盘,零配置、无查询语言
排障要 SSH 登机翻 top / dmesg / 多套日志 指标、进程、网络连接、systemd-journal 日志同屏按时间轴关联
告警阈值全靠人工调、误报多 数百条内置 health 告警 + 每指标本地 ML 异常检测,开箱即用
多机无统一视图,又不想引入重型 TSDB 集群 Parent/Child 流:Child 近无状态推送,Parent 统一存储、大盘与告警
中心故障导致监控全盲、气隙环境无法连公网 每个 Agent 独立离线可用;集中化用自建内网 Parent 或 Cloud On-Prem

不擅长:年级合规归档与复杂 PromQL 多维聚合(配 VictoriaMetrics/Thanos)、日志全文检索与链路追踪(仅轻量日志关联)、以业务 SLO / 自定义 PromQL 为核心的场景。

2. 核心概念与架构

2.1 术语表

术语 含义
Agent / Node 装在监控机上的单进程 netdata,自带采集、存储、告警、Web 全套能力
Collector / Plugin 采集插件:proc.plugin、go.d.plugin(应用/容器)、python.d.plugin、apps.plugin(按进程归类)、statsd.plugin
Chart / Dimension / Context 图表 / 图表内一条序列 / 同类图表模板;告警与查询以 context 或 chart 为对象
dbengine 分层时序引擎:tier0 秒级 → tier1 分钟 → tier2 小时级降采样,按磁盘配额滚动淘汰
health / alarm 内置健康引擎;规则在 health.d/*.conf,用 alarm:/template: + lookup/warn/crit 描述
ML 每指标本地训练异常模型输出异常带,[ml] 可关以省 CPU
Parent / Child 流式汇聚角色:Child 实时推指标,Parent 担历史与统一大盘;同一套软件、不同配置
stream.conf 流式配置:Parent 用 [<UUID>] 授权,Child 用 [stream] 指定 destination 与 api key
Netdata Cloud 可选控制面,只存元数据、实时下发查询,指标不出域
edit-config 官方脚本,把内置模板复制到用户目录再编辑,避免升级被覆盖

2.2 组件与数据流

 /proc /sys /应用端点 ─▶ collectors(proc/go.d/apps/statsd,每秒采集·自动发现)
                              ▼
 ┌───────────────── 单节点 Agent ─────────────────┐
 │ database(dbengine: tier0秒→tier1分→tier2时)    │
 │  ├─▶ Web/API :19999(大盘 + /api/v1)           │
 │  ├─▶ health(health.d + reload-health)─────────│──▶ alarm-notify ──▶ 通知
 │  └─▶ ML 异常检测(可关)                        │
 └─────────────────────┬──────────────────────────┘
                       │ streaming:stream.conf / tcp:19999 / api key 鉴权
 Child A/B/N ──────────┴──▶ Parent(汇聚存储·统一大盘·集中告警)
   (Child 可设 [db] mode=ram 近无状态)  ─▶ 浏览器 / 二级 Parent / Cloud
  1. collectors → database:按 update every(默认 1s)取数写本地 dbengine,采集与存储同进程,无外部 TSDB 依赖。
  2. database → health → Web:健康引擎按 health.d 规则与 ML 模型判定状态;Web 直接读本地引擎渲染大盘并暴露 /api/v1/*、/netdata.conf。
  3. Child → Parent / 与中心解耦:Child 实时复制指标到 Parent([<UUID>] 段接受落盘),浏览器只看 Parent 即可纵览全簇;任何中心节点宕机,Child 本地大盘与告警仍可用——区别于"中心轮询式"监控的关键。

3. 安装与部署

版本一律 以官方最新稳定版为准(https://github.com/netdata/netdata/releases)。下列 URL、镜像名与端口均来自官方安装文档;<xxx> 为占位符;不确定参数先 sh /tmp/netdata-kickstart.sh --help。

3.1 环境准备

项 要求
系统 Linux 主流发行版、FreeBSD、macOS;容器需挂载 /proc /sys
依赖 一键脚本自动装齐;无需外部数据库、无需外部时序库
端口 19999/TCP(Web/API 与 streaming 复用);生产仅对 Parent/内网放行
权限 脚本以 root 安装以读全部内核指标;服务以 netdata 用户常驻
资源/时间 默认 15% CPU、80150MB 内存;全节点 NTP 同步,否则 Parent 时间轴错位
容器前置 SYS_PTRACE + apparmor=unconfined + 只读挂载 /proc /sys /etc/passwd /etc/group /etc/os-release

3.2 多种安装方式

方式 A:官方一键脚本(推荐)

wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh \
  && sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
# 等价历史入口:bash <(curl -Ss https://my-netdata.io/kickstart.sh)
sh /tmp/netdata-kickstart.sh --help   # 离线/认领/不自动启动等参数以 --help 为准

方式 B:Docker run(单机试跑 / 容器宿主机)

docker run -d --name=netdata -p 19999:19999 \
  -v netdataconfig:/etc/netdata -v netdatalib:/var/lib/netdata \
  -v netdatacache:/var/cache/netdata \
  -v /etc/passwd:/host/etc/passwd:ro -v /etc/group:/host/etc/group:ro \
  -v /proc:/host/proc:ro -v /sys:/host/sys:ro \
  -v /etc/os-release:/host/etc/os-release:ro \
  --restart unless-stopped --cap-add SYS_PTRACE \
  --security-opt apparmor=unconfined netdata/netdata

用 docker compose 时务必写死 hostname:,否则节点身份漂移、历史被打散;compose 其余挂载与环境变量同方式 B(NETDATA_LISTENER_PORT、DISABLE_TELEMETRY)。

方式 C:发行版包 / 静态二进制 + systemd(离线、信创首选)

sudo apt-get install -y netdata        # Debian/Ubuntu;RHEL/Rocky 用 dnf(必要时启 EPEL)
tar xzf netdata-<version>-linux-<arch>.tar.gz -C /opt/   # 静态二进制解压即用
sudo systemctl enable --now netdata
sudo touch /etc/netdata/.opt-out-from-anonymous-statistics   # 关闭遥测

气隙集中化:内网部署 Parent(见场景二)或 Netdata Cloud On-Prem,不依赖公网 SaaS。

3.3 首次启动与验证

sudo systemctl enable --now netdata && sudo systemctl status netdata
curl -fsS http://127.0.0.1:19999/api/v1/info | grep -o '"version":"[^"]*"'  # 健康检查
curl -fsS http://127.0.0.1:19999/netdata.conf | grep -E 'config directory|health config'
sudo netdatacli ping && sudo tail -n 30 /var/log/netdata/error.log
# 浏览器打开 http://<节点IP>:19999,左上角出现 hostname 与实时图表即成功

4. 配置文件详解

4.1 路径与关键项

路径 / 键 作用 / 建议值
/etc/netdata/netdata.conf 主配置(静态安装常在 /opt/netdata/etc/netdata/);/netdata.conf 只读查看生效值
/etc/netdata/edit-config 官方脚本:cd /etc/netdata && sudo ./edit-config netdata.conf(依赖 $EDITOR/vi)
/etc/netdata/health.d/*.conf 用户自定义/覆盖告警;内置规则在 stock 目录,勿直接改
health_alarm_notify.conf / stream.conf 通知渠道凭据 / Parent-Child 流式配置(含 Token,chmod 640)
go.d.conf、go.d/*.conf 采集插件总开关 / 单应用端点与凭据
/var/lib/netdata/、/var/cache/netdata/ dbengine 数据与缓存
/var/log/netdata/{error,access,health}.log 错误 / 访问 / 健康日志
[global] hostname / update every 节点唯一标识 / 采集间隔秒数(默认 1,小机 2~`5`)
[db] mode dbengine(Parent)/ ram(近无状态 Child)/ none
[db] dbengine tier 0 disk space MB tier0 磁盘配额,决定秒级数据可存多久,小机 256~`1024`
[web] bind to / default port 监听地址(生产收敛内网/本机)/ 默认 19999
[ml] enabled / [health] enabled ML 开关 / 本机告警总开关

版本差异:配置键随版本迁移(如 [global] memory mode → [db] mode、tier 参数按 tier 命名)。不确定的键先访问 http://<节点>:19999/netdata.conf 看本机生效项再照抄,以官方文档为准。

4.2 完整可运行最小示例

# /etc/netdata/netdata.conf —— 用 `sudo ./edit-config netdata.conf` 写入
[global]
    hostname = <node-01>
    update every = 1
[db]
    mode = dbengine
    dbengine tier 0 disk space MB = 512
[web]
    bind to = 127.0.0.1 localhost
    default port = 19999
[ml]
    enabled = no
[health]
    enabled = yes
sudo systemctl restart netdata
curl -fsS http://127.0.0.1:19999/netdata.conf | grep -E 'hostname|update every|mode ='

5. 核心使用方法(CLI / HTTP API / Web UI)

5.1 命令与操作速览(≥20 条)

# 命令 / 路径 用途
1 systemctl start|stop|restart|status netdata 服务生命周期
2 journalctl -u netdata -f 实时服务日志
3 netdatacli ping daemon 存活探测
4 netdatacli reload-health 热加载告警规则,无需重启
5 ./edit-config netdata.conf 编辑主配置
6 ./edit-config health.d/<name>.conf 新增/覆盖告警
7 ./edit-config health_alarm_notify.conf 配通知渠道
8 ./edit-config stream.conf 配 Parent/Child 流
9 ./edit-config go.d/<app>.conf 启用某应用采集器
10 curl http://127.0.0.1:19999/netdata.conf 查看生效配置与目录
11 GET /api/v1/info 版本/节点/能力(健康检查)
12 GET /api/v1/data?chart=&after=&points=&group=&format= 取某图表时序点
13 GET /api/v1/allmetrics?format=prometheus Prometheus 文本导出全量指标
14 GET /api/v1/allmetrics?format=json JSON 全量指标
15 GET /api/v1/alarms?all 当前全部告警及状态
16 GET /api/v1/alarm_log?after= 告警变迁日志
17 GET /api/v1/badge.svg?chart= 生成状态徽章
18 GET /api/v1/registry?action=hello 节点注册/重定向探测
19 alarm-notify.sh test 发测试通知验证渠道
20 go.d.plugin -m <module> 调试单个 go.d 采集模块
21 Web UI:时间选择器 / 节点下拉框 / Alerts Disable 秒级回溯、切 Child、单条静默

5.2 /api/v1 查询示例

BASE=http://127.0.0.1:19999
curl -fsS "$BASE/api/v1/info" | jq '.version, .mirrored_hosts'
curl -fsS "$BASE/api/v1/data?chart=system.cpu&after=-300&points=60&group=average&format=json" | jq '.data[0:3]'
curl -fsS "$BASE/api/v1/alarms?all" | jq 'to_entries[] | {chart:.key, status:.value.status}'
curl -fsS "$BASE/api/v1/allmetrics?format=prometheus" | grep '^netdata_' | head

5.3 health.d 告警配置(自定义 / 覆盖内置)

# /etc/netdata/health.d/user_ram.conf —— 用 edit-config 创建;同名 template 覆盖全局阈值
template: 10min_ram_available
      on: system.ram
   class: Utilization
    type: System
   component: Memory
  lookup: average -10m unaligned of available
   units: MiB
   every: 1m
    warn: $this < (($status >= $WARNING) ? 300 : 200)
    crit: $this < (($status >= $CRITICAL) ? 150 : 100)
   delay: down 5m multiplier 1.5 max 1h
    info: 可用内存持续低于阈值,注意 OOM 风险
      to: sysadmin
sudo netdatacli reload-health                                    # 热加载
curl -fsS http://127.0.0.1:19999/api/v1/alarms?all | jq '.["system.ram"]'
sudo -u netdata /usr/libexec/netdata/plugins.d/alarm-notify.sh test   # 路径随安装方式变化,以本机为准

关闭吵闹告警:Web UI Alerts 面板对单条 Disable,或把该规则 to: 设为 silent;勿改内置 stock 目录。

6. 告警与通知

6.1 阈值与规则要点

alarm 作用于单 chart、template 作用于同 context 全部实例;lookup 取值(如 average -10m unaligned of available、sum、max);warn/crit 支持 $this、$status、$WARNING 滞回表达式抑制抖动;delay/repeat 控制延迟与重发;to: 指定接收角色(silent 关闭单条)。ML 异常带与静态阈值并行,可在 UI 查看。

6.2 通知渠道(health_alarm_notify.conf)

# 用 `cd /etc/netdata && sudo ./edit-config health_alarm_notify.conf` 编辑
SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="ops@<example.com>"
# 企业微信/钉钉/飞书机器人:官方未内置专用变量时统一走 Webhook/自定义脚本
SEND_WEBHOOK="YES"
WEBHOOK_URL="https://<企业微信或钉钉机器人 webhook>"
DEFAULT_RECIPIENT_WEBHOOK="alerts"
# Slack/Telegram/ntfy 等按文件内 SEND_<CHANNEL> 开关同理
sudo systemctl restart netdata
sudo -u netdata /usr/libexec/netdata/plugins.d/alarm-notify.sh test   # warning/critical/clear 各一条

⚠️ Webhook / Token 属敏感信息:chmod 640、属主 netdata,勿入 Git。渠道变量名以本机 health_alarm_notify.conf 注释为准(不同版本渠道集合有增删)。

6.3 静默与升级

需求 做法
维护期静默 Web UI Disable 单条 / to: silent;批量用 health.d 覆盖
只收严重告警 把 warn 的 to: 设 silent,仅 crit 指向值班角色
分级升级 Agent 不自做升级链,由 Webhook 打到告警平台(夜莺/Alertmanager/PagerDuty)按级别升级
抑制重复 / 集中告警 delay + repeat + $status 滞回;Parent 开 [health]、Child 关健康
通知兜底 DEFAULT_RECIPIENT_* 保证未匹配角色时仍有收件人

7. 实战场景

场景一:单机秒级排障(定位瞬时 CPU 尖峰)

  • 目标:抓住每日偶发 3~5 秒 CPU 毛刺并留证。
  • 步骤:一键安装 → 确认 1s 粒度 → /api/v1/data 导出窗口 → UI 关联进程/日志。
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh \
  && sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
curl -fsS "http://127.0.0.1:19999/api/v1/data?chart=system.cpu&after=-600&points=600&group=max&format=csv" > /tmp/cpu-spike.csv
# head /tmp/cpu-spike.csv 应有 600 行;Web UI 拖到尖峰点看 apps.plugin 按进程 CPU 与 journal 日志
  • 验证:CSV 有 600 行;UI 悬停可见秒级峰值与对应进程。
  • 回滚:sudo systemctl stop netdata && sudo systemctl disable netdata;⚠️ 卸载前 tar czf netdata-backup.tgz /etc/netdata /var/lib/netdata 备份。

场景二:Parent 汇聚 20 台 Child,统一大盘且 Child 近无状态

  • 目标:只开放 Parent 的 19999,历史集中、Child 极轻。
  • 步骤:Parent 生成 UUID 授权 → Child 配 stream.conf 推送 → Child 设 ram。
# 两端先 `uuidgen` 得 <UUID> 并 `sudo ./edit-config stream.conf`;`allow from` 生产应收紧网段
# Parent:/etc/netdata/stream.conf
[<UUID>]
    enabled = yes
    default memory mode = dbengine
    health enabled by default = auto
    allow from = *

# 每个 Child:/etc/netdata/stream.conf
[stream]
    enabled = yes
    destination = tcp:<PARENT_IP>:19999
    api key = <UUID>
    default memory mode = ram
    health enabled by default = no
sudo ufw allow from <CHILD_CIDR> to any port 19999 proto tcp   # Parent 侧
sudo systemctl restart netdata                                  # 两端都执行
curl -fsS http://<PARENT_IP>:19999/api/v1/info | jq '.mirrored_hosts'
  • 验证:http://<PARENT_IP>:19999 节点下拉框出现全部 Child;mirrored_hosts 列出节点。
  • 回滚:注释 Child 的 [stream] 并改回 dbengine 重启即恢复独立存储;⚠️ 先确认 Parent 已落盘再删 Child 本地数据。

场景三:磁盘将满告警推送到企业微信 / 钉钉机器人

  • 目标:根分区使用率超阈值告警到 IM。
  • 步骤:覆盖 health.d 磁盘规则 → 配 Webhook(见 6.2)→ 发测试 → 触发验证。
# /etc/netdata/health.d/disk_space.conf —— 同名 template 覆盖内置阈值
template: disk_fill_rate
      on: disk.space
   lookup: max -1m unaligned of used
   units: %
   every: 1m
    warn: $this > 80
    crit: $this > 90
      to: sysadmin
sudo netdatacli reload-health
sudo -u netdata /usr/libexec/netdata/plugins.d/alarm-notify.sh test
curl -fsS 'http://127.0.0.1:19999/api/v1/alarms?all' | jq '.[] | select(.status=="CRITICAL")'
  • 验证:群里收到测试与真实告警,API 可见 CRITICAL 状态。
  • 回滚:to: silent 或 SEND_WEBHOOK="NO" → netdatacli reload-health;删除用户 health.d 文件即恢复内置阈值。

8. 日常运维与故障排查

操作 / 路径 命令
启停与自启 systemctl start|stop|restart|enable|disable netdata
实时日志 / 三类日志 journalctl -u netdata -f;/var/log/netdata/{error,access,health}.log
配置自检 / 健康检查 curl …/netdata.conf、netdatacli ping、GET /api/v1/info
配置 / 数据备份 tar czf netdata-etc.tgz /etc/netdata;停服务后 tar czf netdata-lib.tgz /var/lib/netdata /var/cache/netdata ⚠️

故障「现象 → 原因 → 处置」表

现象 原因 处置
http://IP:19999 连不上 bind to 仅本机 / 防火墙未放行 改 [web] bind to 含内网、ufw allow;容器核对 -p
大盘有节点但无实时数据 插件被禁 / 容器漏挂 /proc /sys 开 go.d.conf 插件;补齐只读挂载与 SYS_PTRACE
Parent 看不到某 Child api key 与 Parent [<UUID>] 不一致 / 网络不通 两端比对 UUID;nc -vz <PARENT_IP> 19999;查 Parent error.log
Child 重启后历史消失 设了 ram 且未成功推给 Parent 确认 streaming;需本地历史改回 dbengine
告警不触发 [health] enabled = no、to: silent、未热加载 开 health;netdatacli reload-health;查 /api/v1/alarms?all
配了 Webhook 收不到 变量名/URL 错、脚本无执行权限、出站被拦 跑 alarm-notify.sh test 看报错;核对文件内注释变量名
CPU/磁盘持续偏高 ML 训练 + 1s 采集 + 指标量大、tier 配额未设 [ml] enabled = no、update every = 2、关无用插件、设 tier0 配额 ⚠️ 清数据前先备份
升级后自定义配置丢失 直接改了内置 stock 目录文件 一律用 edit-config 写用户目录;从备份恢复 /etc/netdata

9. 性能、容量与高可用

维度 说明
采集频率 默认 update every = 1(秒级);调 2/5 近似线性降 CPU 与写入量
存储分层 dbengine tier0 秒 → tier1 分 → tier2 时降采样;配额按 [db] dbengine tier N disk space MB 控制
容量估算 占用 ≈ 指标维度数 × 采样率 × 保留时长 × 压缩比;用 /api/v1/info 指标数 + tier 配额反推,以本机实测为准
数据保留 由各 tier 配额与降采样倍率共同决定,配额越大保留越久,无需传统"保留天数"配置
Parent 分层 / 集群 Child → Parent → 二级 Parent / Cloud;可按 Child 分组指向不同 Parent,自建可前置 Nginx 反代,以官方文档为准
高可用 每 Agent 自治是最大 HA 优势;Parent 为单点时需主备 + 数据盘快照 + 配置备份
自监控 内置「Netdata Monitoring」大盘显示自身 CPU/内存/磁盘/查询延迟;/api/v1/info、netdatacli ping 作探针

10. 安全加固、备份与升级

项 做法
监听收敛 [web] bind to = 127.0.0.1 localhost 或仅内网;严禁 0.0.0.0 裸奔公网 ⚠️
TLS / 认证 前置 Nginx 终止 HTTPS + Basic Auth / SSO,只把 127.0.0.1:19999 暴露给本机
流式鉴权 Parent stream.conf 用 [<UUID>] 强 api key;Child↔Parent 走 WireGuard/Tailscale 或内网,allow from 收紧网段
遥测 / 权限 安装加 --disable-telemetry 或 touch /etc/netdata/.opt-out-from-anonymous-statistics;服务以 netdata 用户运行,不用 root 常驻;凭据文件 chmod 640、不进版本库
配置 / 数据备份 tar czf netdata-etc-$(date +%F).tgz /etc/netdata;停服务后备份 /var/lib/netdata 与 /var/cache/netdata;⚠️ 运行中拷可能得不一致快照
升级 先 --stable-channel + 备份 /etc/netdata 与 /var/lib/netdata,再 sh /tmp/netdata-kickstart.sh --stable-channel
回滚 停服务 → 恢复 /etc/netdata → 重装上一版本静态包 → 校验 /api/v1/info;⚠️ 跨大版本 dbengine 格式可能不兼容,先验证数据可读
信创适配 麒麟/统信 + 鲲鹏/飞腾(arm64)、海光/兆芯(amd64) 用官方源码或静态二进制编译;气隙集中化用内网 Parent / Cloud On-Prem

11. 常见坑(现象 → 原因 → 解决)

# 现象 原因 解决
1 远程访问 19999 被拒 默认 bind to 仅本机 改 [web] bind to 并放行防火墙;⚠️ 别为省事直接 0.0.0.0 暴露公网
2 Docker 里指标为空 / hostname 每次重启都变 漏挂 /proc /sys、缺 SYS_PTRACE;容器未固定 hostname: 按 3.2 方式 B 补齐挂载;compose 里写死 hostname,否则历史被打散
3 自定义告警重启后失效 / 改了 health.d 不生效 改到了内置 stock 目录 / 未热加载 用 ./edit-config health.d/xxx.conf 写用户目录;sudo netdatacli reload-health
4 reload-health 报权限错 / 测试脚本无输出 非 root/netdata 执行;脚本路径随安装方式不同 加 sudo;find / -name alarm-notify.sh 定位,以本机为准
5 Parent 收不到 Child UUID 不一致 / 端口未放行 / 版本差异 两端比对 api key;nc -vz 测连通;各节点版本保持一致
6 Child 设 ram 后查不到历史 设计如此,历史在 Parent 需本地历史用 dbengine;⚠️ 未验证 streaming 前别删本地数据
7 告警风暴 静态阈值抖动、无滞回/延迟 用 $status 滞回表达式 + delay: down 5m + repeat
8 内存/磁盘上涨、升级后数据读不出 ML 未关、tier 配额未设、跨大版本格式变化 [ml] enabled = no、设 tier0 配额;⚠️ 清数据前先停服务备份,先在测试机验证升级
9 时间轴对不齐 / 编辑配置不生效 NTP 未同步;配置目录判断错(静态在 /opt/netdata/etc/netdata/) 全节点 chrony 同步;访问 /netdata.conf 看 config directory 实际值

12. 速查表

类别 项 值 / 命令
端口 Web/API/streaming 默认 19999/TCP(容器用 NETDATA_LISTENER_PORT 覆盖)
配置 主配置 /etc/netdata/netdata.conf(静态 /opt/netdata/etc/netdata/)
配置 编辑脚本 sudo ./edit-config <file>
配置 告警 / 通知 / 流式 health.d/*.conf / health_alarm_notify.conf / stream.conf
数据 dbengine 数据 / 缓存 /var/lib/netdata/ / /var/cache/netdata/
服务 / CLI systemd / 实时日志 systemctl restart netdata / journalctl -u netdata -f
CLI 存活 / 热加载 / 测试通知 netdatacli ping / netdatacli reload-health / alarm-notify.sh test
API 节点信息 GET /api/v1/info
API 时序数据 GET /api/v1/data?chart=&after=&points=&group=&format=
API 全量导出 GET /api/v1/allmetrics?format=prometheus|json
API 告警状态 / 日志 GET /api/v1/alarms?all / /api/v1/alarm_log?after=
参数 采集间隔 / 存储模式 [global] update every = 1 / [db] mode = dbengine
参数 tier 配额 / ML / 监听 dbengine tier 0 disk space MB / [ml] enabled = no / [web] bind to
容器 镜像 / 健康检查 netdata/netdata(tag 以官方最新稳定版为准)/ NETDATA_HEALTHCHECK_TARGET
安装 官方一键脚本 https://get.netdata.cloud/kickstart.sh

13. 选型建议与同类对比

维度 Netdata Zabbix Prometheus + Alertmanager Grafana
定位 单机秒级自治 + Parent 汇聚 企业级模板化全栈监控 拉取式指标 + 告警引擎 可视化(不采集/不存储)
采集粒度 默认 1 秒 通常 30~60s 通常 15~60s 取决于数据源
上手成本 最低:装完即大盘、零配置、无查询语言 中:Host/Item/Template 建模 中高:exporter + PromQL + 规则 中:先接数据源
存储 每节点本地 dbengine,无外部 TSDB 关系库 history/trends 本地 TSDB,可接远端 不存储
告警 内置数百条 + ML,Parent 集中 Trigger/Action/Escalation 强 PromQL 规则 + Alertmanager 路由 需配底座
长期归档/多维分析 弱(本地滚动淘汰) 中 强(配 Thanos/VM) 取决于后端
网络/SNMP 设备 弱 强 靠 snmp_exporter —
离线/边缘自治 强(Agent 全功能离线) 需连 Server/Proxy 需连中心 需连数据源
适用规模 单机排障 → 数千节点(Parent) 数十 → 数万台(Proxy) 云原生大规模 任意展示层

何时选:需要秒级排障、单机/容器宿主机装完即看、边缘或气隙环境要求本地自治、不想维护独立 TSDB 集群、希望零配置大盘与开箱告警。

何时不选:需要年级合规归档与复杂 PromQL 多维聚合(选 Prometheus + VictoriaMetrics/Thanos)、以 SNMP 网络设备与模板化资产为核心(选 Zabbix)、需要日志/链路统一平台(配 Loki/Tempo 或选夜莺等一体化观测平台)、需要成熟多级值班升级与工单闭环(Zabbix/夜莺/Alertmanager)。

常见互补:Netdata 负责"单机秒级现场",把 /api/v1/allmetrics?format=prometheus 或 Parent 数据远程写入 VictoriaMetrics,再用 Grafana 做长期看板。

14. 参考链接

Netdata —— 秒级采集、零配置大盘、Parent 集中与健康告警的分布式可观测代理 - 知识库 - 起航社区