Netdata 部署教程:零配置、高性能的实时监控系统

Netdata 是一个开源、实时的基础设施监控平台,以其零配置、高分辨率(每秒更新)和内置机器学习异常检测而闻名。它可以在单台服务器或整个基础设施上运行,并通过一个美观的 Web 仪表盘展示数据。本教程将指导你在 Linux 服务器上完成 Netdata 的安装与基本配置。

核心优势与架构

在开始部署前,了解 Netdata 的设计哲学有助于理解其价值:

  • 开箱即用:安装后无需任何配置即可开始监控系统上几乎所有的运行指标,包括 CPU、内存、磁盘、网络、进程以及数百种常见应用(如 Nginx、Redis、PostgreSQL 等)。
  • 极高精度:默认以每秒一次的频率收集数据,提供最实时的系统状态视图。
  • 边缘 AI:在数据采集的节点(边缘)上为每个指标训练机器学习模型,用于自动异常检测。
  • 低资源占用:在生产系统上,典型占用约为 5% CPU 和 150 MiB 内存,资源消耗极低。
  • 灵活的架构:支持单机独立运行,也可以通过将子节点 (Child) 的数据流式传输给父节点 (Parent) 来实现集中监控和数据长期存储。

准备工作

  • 操作系统:本教程主要针对 Linux (支持几乎所有发行版)。
  • 网络:需能访问互联网以下载安装包。安装后,主机需要开放端口 19999 以便访问 Web 界面。
  • 权限:安装和配置过程需要 root 权限

第一步:安装 Netdata

Netdata 官方推荐使用 kickstart.sh 一键安装脚本,它会自动检测你的系统环境并选择最佳的安装方式(如原生包管理器、静态二进制文件或源码编译)。

1. 运行一键安装命令
在你的终端中,以 root 用户或使用 sudo 执行以下命令之一:

1
2
3
4
5
# 使用 wget
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --no-updates --stable-channel --disable-telemetry

# 使用 curl
curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --no-updates --stable-channel --disable-telemetry

参数说明

  • --stable-channel:安装稳定版 (推荐)。
  • --no-updates:禁用自动更新。
  • --disable-telemetry:禁用匿名遥测数据 (可选)。
  • 如果你是 Netdata Cloud 用户,可以用 --claim-token 参数在安装时直接将节点连接到云端。

2. 启动 Netdata 服务并设置开机自启
安装完成后,大多数系统上服务会自动启动。若未启动,可执行:

1
2
sudo systemctl start netdata
sudo systemctl enable netdata

第二步:访问 Web 仪表盘

安装并启动后,Netdata 的 Web 界面默认运行在 19999 端口。

  • 本地访问:在服务器上用浏览器访问 http://localhost:19999
  • 远程访问:从另一台机器访问 http://<你的服务器IP>:19999

注意:默认情况下,Netdata 只监听 127.0.0.1 (localhost),这意味着你无法从外部访问。需要先修改配置。

第三步:配置 Netdata 以允许远程访问

1. 找到配置文件
Netdata 的主配置文件通常位于 /etc/netdata/netdata.conf

2. 修改监听地址
用文本编辑器(如 vim)打开该文件,找到 [web] 部分,将 bind tolocalhost127.0.0.1 修改为 0.0.0.0 (监听所有网络接口) 或你特定的 IP 地址。

1
2
3
[web]
# 默认是 bind to = 127.0.0.1
bind to = 0.0.0.0

3. 重启 Netdata 服务

1
sudo systemctl restart netdata

重要安全提示:在生产环境中,开启远程访问会带来安全风险。强烈建议配合防火墙规则,仅允许可信 IP 访问 19999 端口,或使用 Nginx/Apache 作为反向代理并启用认证。

第四步:配置防火墙 (可选)

如果你在服务器上启用了防火墙(如 ufwfirewalld),需要放行 19999 端口。

  • 使用 ufw (Ubuntu/Debian):

    1
    sudo ufw allow 19999/tcp
  • 使用 firewalld (RHEL/CentOS/Fedora):

    1
    2
    sudo firewall-cmd --permanent --add-port=19999/tcp
    sudo firewall-cmd --reload

第五步:基础监控与使用

此时,刷新浏览器即可看到 Netdata 的仪表盘。你可以:

  • 滚动页面查看不同类别的监控图表(CPU、内存、磁盘、网络等)。
  • 点击图表可以放大查看更详细的数据。
  • 右上角的搜索框可以快速定位特定指标。

第六步:(进阶) 配置集中监控 (Parent-Child)

如果你需要监控多台服务器,可以将所有子节点 (Child) 的数据流式传输到一个中心父节点 (Parent) 上,实现统一视图和更长数据保留期。

  1. 在子节点 (Child) 上配置
    编辑 /etc/netdata/stream.conf,设置父节点的 IP 和共享 API Key:

    1
    2
    3
    4
    [stream]
    enabled = yes
    destination = PARENT_IP_ADDRESS:19999 # 替换为父节点IP
    api key = 12345678-9abc-def0-1234-56789abcdef0 # 生成一个UUID
  2. 在父节点 (Parent) 上配置
    编辑 /etc/netdata/stream.conf,使用相同的 API Key 授权子节点连接:

    1
    2
    [12345678-9abc-def0-1234-56789abcdef0]  # 这里是你设置的API Key
    enabled = yes

    此外,父节点可以配置更长的数据保留时间,例如通过 /etc/netdata/netdata.conf 设置多级存储 (Tiered Storage)。

故障排查与常见问题

  • 无法访问 Web 界面
    1. 检查 Netdata 服务是否运行:systemctl status netdata
    2. 确认防火墙是否放行了 19999 端口。
    3. 检查 /etc/netdata/netdata.conf 中的 bind to = 设置是否为 0.0.0.0 或正确的 IP。
  • 安装脚本报错
    • 确保系统已安装 curlwget
    • 如果提示 SSL 证书错误,可更新系统 CA 证书:sudo apt-get install --reinstall ca-certificates (Debian/Ubuntu) 或 sudo dnf reinstall ca-certificates (RHEL/Fedora)。
  • 资源占用过高
    Netdata 默认配置对大多数系统是安全的。如果你在资源极度紧张的环境中,可以参考官方文档禁用机器学习、告警或将数据库模式改为 ram 以降低消耗。

至此,你已经成功部署并可以开始使用 Netdata 监控你的服务器了。你可以从探索默认仪表盘开始,然后根据需求逐步配置告警通知、集成到 Netdata Cloud 或构建更复杂的监控拓扑。