Netdata 监控上手:1 核 1G 也能跑的实时监控

Netdata 监控上手:1 核 1G 也能跑的实时监控

Netdata监控LinuxUbuntu运维
📶 入门 🧩 Netdata · Ubuntu

登录服务器看负载,打开 htop 那一刻数据是新的,关掉窗口就什么都没留下。昨晚 3 点内存是不是有过一个尖峰?磁盘 I/O 从上周几开始变密的?这类问题 htop 答不了,需要一套持续记录指标的监控。Netdata 是这类工具里对低配机器最友好的一种:一条命令装完,上千项指标自动开始采集,粒度到秒。常见顾虑只有一个——1 核 1G 的服务器带不带得动。答案先给:带得动,官方最低要求就是 1 核加不到 1GB 内存。真正要想清楚的是数据走本机访问还是走它的云服务。

环境说明:本文以 Ubuntu 24.04 为准,官方一键脚本当前安装的是 Netdata v2.x 系列。文中命令来自官方文档,未实测标注的部分以官方说明为准。

装之前先想清楚:数据走哪条路

Netdata 的架构是「Agent 采集 + 可选的 Cloud 汇总」。装之前必须二选一,因为网络暴露面差别很大。

  • Agent 独立访问:所有指标留在本机,浏览器访问 http://服务器IP:19999 看图表。数据不出服务器,但公网暴露和登录认证要自己解决。v2 起 Agent 登录走 Netdata Cloud 账号,面板没有可用的匿名模式。
  • 绑定 Cloud:Agent 通过出站连接把指标推到 Netdata 云端,浏览器登 app.netdata.cloud 看所有节点。服务器不开 19999 端口,多台机器一个页面看完。
方式数据位置服务器要开的端口适合场景
Agent 独立访问全在本机19999(建议只对内网或走 SSH 隧道)单机、在意数据不出门
绑定 Cloud本机留底 + 云端汇总无需入站端口多机、想随时随地看

个人一台 VPS,两种都行;两台以上,Cloud 的多节点视图省事得多。免费账户的节点数上限和保留策略以官方当期套餐说明为准。

安装:一键脚本与 Docker 两种姿势

一键脚本(推荐裸机使用)

wget -O /tmp/kickstart.sh https://get.netdata.cloud/kickstart.sh
sudo bash /tmp/kickstart.sh --dont-start-it
sudo systemctl enable --now netdata

脚本自动识别发行版、装依赖、拉最新稳定版。加 --dont-start-it 是先装包再手动启动,安装日志一目了然。不加也能装,脚本默认装完即启动。想顺手绑定 Cloud,把脚本换成官方页面生成的带 --claim-token 的版本,token 在 Cloud 网页自己的 Space 里点 Connect Nodes。

Docker 方式

已经有 Docker 的机器可以不碰宿主机环境:

docker run -d --name=netdata \
  -p 19999:19999 \
  -v netdataconfig:/etc/netdata \
  -v netdatalib:/var/lib/netdata \
  -v netdatacache:/var/cache/netdata \
  -v /:/host/root:ro,rslave \
  -v /etc/passwd:/host/etc/passwd:ro \
  -v /etc/os-release:/host/etc/os-release:ro \
  --cap-add SYS_PTRACE \
  --restart unless-stopped \
  netdata/netdata

挂载 /host/root 等只读路径,是为了让容器里的 Agent 读到宿主机的 /proc 和 /sys。少了这些挂载,容器监控的只是容器自己。SYS_PTRACE 是官方镜像文档要求的权限,用于进程级指标采集。

两条路二选一即可,同机混装会出现两个 Agent 抢端口。

装完先做这 3 件事

  1. 确认服务:sudo systemctl status netdata,active (running) 才算过。Docker 部署则查容器日志。
  2. 看指标:curl -s http://127.0.0.1:19999/api/v1/info | head -c 400,返回 JSON 即在采集。
  3. 定 19999 的暴露方式,安全问题见下节。

19999 端口别裸奔公网

Netdata 的 Web 界面能看到系统全貌,直接暴露在公网等于把服务器状态摊给扫描器。三选一:

方案做法适用
SSH 隧道本机 ssh -L 19999:127.0.0.1:19999 user@服务器,浏览器开 localhost单人使用,最简单
绑定 CloudAgent 只做出站连接,入站端口直接不开多机管理
反向代理加认证Nginx 挂 basic auth 或只允许内网网段访问团队共用

SSH 隧道最省事:不用改任何配置,连接期间本机浏览器访问 http://localhost:19999 就能看到面板。配合 Cloud 方案则干脆不需要入站端口,暴露面最小。

日常会用到的几条命令

sudo systemctl restart netdata    # 改完配置重启
sudo netdatacli reload-health     # 只重载告警规则,不重启主进程

配置文件在 /etc/netdata/,官方推荐用自带的编辑器改,改完会自动做语法校验:

sudo /etc/netdata/edit-config netdata.conf

告警阈值默认就有一套(CPU、内存、磁盘都在内),要调整时编辑 health.d/ 下对应的 .conf 文件,改完 netdatacli reload-health 生效。告警通知渠道支持邮件、Slack、Telegram 等几十种,在 edit-config alert-notifications.conf 里配置。具体字段以官方文档对应章节为准。

1 核 1G 到底能不能跑

按官方文档的最低配置要求:1 个核心、不足 1GB 内存即可运行 Netdata Agent(出处:Netdata 官方文档 Getting Started / Installation 章节的资源要求说明)。它对硬件的要求和常见的面板类工具不在一个量级。

实际占用有两个变量:节点上跑的服务越多,自动发现的应用集成越多,常驻内存越高。查询历史图表时会有额外开销。几个可操作的降压手段:

# 降低采集频率,减少 CPU 开销
sudo /etc/netdata/edit-config netdata.conf
# 在 [global] 段设置
# 每秒采集改为每 2 秒一次

[global] 段里把 update every = 1 改成 2,采集开销直接减半,代价是图表粒度从 1 秒变 2 秒——对个人服务器足够用了。内存方面,Netdata 的默认留存策略会自动控制历史数据占用的空间上限。磁盘紧张时在 [db] 段调小保留配额即可,具体参数名以 /etc/netdata/edit-config netdata.conf 里生成的注释文档为准。

给个明确结论:1 核 1G 的机器可以装,采集粒度放到 2 秒更稳妥;纯静态站点或流量极低的机器,装了也不会有感知。

常见问题

装完后 19999 打不开怎么办?

先查服务状态 systemctl status netdata,再查端口监听 ss -tlnp | grep 19999。服务正常但外部打不开,多半是云厂商安全组没放行。走 SSH 隧道方案的话本来就不该放行——本机 curl http://127.0.0.1:19999/api/v1/info 能返回数据就是正常。

Agent 想从 Cloud 解绑怎么操作?

编辑 /etc/netdata/netdata.conf,把 [cloud] 段的 enabled = no,重启 Netdata 后 Agent 回到纯本机模式,已有的本机指标不受影响。

卸载干净用什么命令?

一键脚本安装的用官方提供的卸载器:/usr/libexec/netdata/netdata-uninstaller.sh --force,脚本位于 /usr/libexec/netdata/ 下;Docker 方式直接 docker rm -f netdata 加删卷即可。

指标是实时刷新的,历史数据能回看多久?

Agent 本地数据库按磁盘配额留存,默认配置下能回看的时间取决于磁盘给了多少空间和指标数量,[db] 段可调。需要更长保留期时,官方建议搭配长期存储方案或 Cloud 的留存能力。

容器里的 Netdata 监控的是宿主机吗?

按本文的挂载参数启动,监控对象是宿主机本身;漏掉 /host/root 等挂载时,采集到的就只是容器内部那一层的视图。官方 Docker 文档对这一组挂载有逐项说明。


结尾回到开头的问题:低配服务器装监控,Netdata 的资源门槛已经低到不构成决策因素,真正要选的是数据路径——单机图省事走 SSH 隧道看本机面板,机器多了直接绑 Cloud。先定这条,安装本身只是复制一条命令的事。装完顺手把告警通知渠道配上——出事的时候它得能找到你,这套监控才算真正可用。