Netdata:装上去就有的性能监控,比看那一屏数字直观
上千个指标自动采集,曲线是每秒刷新的。卡顿的时候打开它,能立刻看出是 CPU、内存、磁盘 IO 还是网络的问题。
系统变慢的时候,你最想知道的是:到底哪个东西在拖后腿。
飞牛自带的状态页给的是粗粒度数字。Netdata 给的是每秒刷新的一千多条曲线——CPU 每个核心、磁盘每个分区、每个容器的 IO,全都有。
装
services:
netdata:
image: netdata/netdata:latest
container_name: netdata
ports: ["19999:19999"]
volumes:
- ./netdata/config:/etc/netdata
- ./netdata/lib:/var/lib/netdata
- ./netdata/cache:/var/cache/netdata
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- TZ=Asia/Shanghai
restart: unless-stopped
cap_add: ["SYS_PTRACE"]
security_opt: ["apparmor:unconfined"]
打开 http://NAS地址:19999,没有登录页,直接就是图表。
挂载 docker.sock 之后,它能看到每个容器的 CPU 和内存占用——这一点比 docker stats 直观得多。
它默认就能看什么
装完不用配置,直接有:
- CPU:总体、每个核心、每种状态(user/system/iowait)
- 内存:used/cached/buffers/swap
- 磁盘:读写速率、IOPS、延迟、每个分区
- 网络:每张网卡的收发速率、错误包
- 进程:谁在吃 CPU、谁在吃内存
- 容器:每个容器的资源曲线
iowait 那条线特别值得看:卡顿的时候如果它飙高,说明磁盘在拖,换 SSD 或者查是哪个进程在读写。
三个用法
一、卡的时候抓现场
系统一卡就打开 Netdata,看哪条曲线先动。CPU 满 → 算力不够;iowait 高 → 磁盘瓶颈;内存 swap 上去 → 内存不足。
二、找"偷偷跑"的容器
容器页按 CPU 排序,能看出哪个容器在后台狂转。跑完的索引任务、卡住的转码,一目了然。
三、看历史
它的数据存在 /var/lib/netdata,默认保留一段时间。想回看"昨天下午三点为什么卡",切时间范围就行。
资源占用
中等:默认约 200–300 MB 内存,CPU 占用不高但一直在采集,所以不会有"安静"的时刻。
在低配机器上可以关掉不需要的插件(设置里能禁用某些 collector),能省不少。
它和 Nezha 的区别
- Nezha:多台机器的总览,轻量,适合"看状态";
- Netdata:单台机器的深挖,重,适合"查问题"。
两个可以一起装。Nezha 发现某台机器异常,再打开那台的 Netdata 深挖。
会踩的坑
页面打不开 19999 端口没映射,或者容器在初始化。第一次启动要几十秒。
看不到容器
socket 没挂,或者挂成了只读之外的模式(:ro 是对的,别去掉)。
内存一直涨
默认的数据库(dbengine)预分配磁盘和内存。设置里调小 dbengine 的磁盘配额。
图表全是断的 采集间隔太大或者容器重启。检查日志。
别开公网 它默认没有认证,任何能访问到的人都能看到你机器的全部指标。内网用,或者套反代加认证。
它适合谁
- 系统经常卡、找不到原因的;
- 想看清容器资源占用的;
- 喜欢看曲线、愿意花时间读图的。
不适合:只需要"活着没"这种粗粒度信息的(Uptime Kuma 足够);内存小于 2 GB 的机器。
最后
Netdata 属于那种"平时想不起来,出问题时救你一次"的工具。
装一次,占几百兆内存。真卡的时候,你会庆幸它在。
有问题留言。
留言