服务器监控系统搭建教程:从零开始用Netdata实时监控
为什么需要搭建服务器监控系统
服务器跑起来了,但CPU是否飙高、磁盘是否快满、内存是否泄漏?
如果等到用户报错才发现,损失可能已经造成。
一套服务器监控系统能帮你实时掌握这些指标,并能在异常时发出警报。
对于零基础用户,Netdata 是最友好的选择 —— 安装只需一条命令,自带的仪表盘就能展示几十项指标,无需额外配置数据库和前端。
准备工作
- 一台 Linux 服务器(Ubuntu 20.04+ 或 CentOS 7+)
- 已开通 SSH 远程连接(推荐使用 root 用户,或普通用户 + sudo 权限)
- 服务器能正常访问外网(需要下载安装脚本)
- 防火墙没有默认屏蔽 19999 端口(Netdata 的默认 Web 端口)
一行命令安装 Netdata
登录服务器后,执行下面这行命令:
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
脚本会自动检测系统版本、下载依赖、编译安装并启动服务。
整个过程大约需要 3~5 分钟(取决于服务器性能)。
如果系统缺少 curl,先运行 apt install curl -y(Ubuntu)或 yum install curl -y(CentOS)。
安装完成后,Netdata 会以 systemd 服务方式运行,并设置开机自启。
你可以用以下命令检查状态:
systemctl status netdata
看到 active (running) 即表示成功。
配置防火墙放行端口
Netdata 默认监听在 19999 端口,但很多云服务器的防火墙默认只开放 22(SSH)和 80/443。
你需要手动放行。
Ubuntu(使用 ufw):
ufw allow 19999/tcp
ufw reload
CentOS(使用 firewalld):
firewall-cmd --permanent --add-port=19999/tcp
firewall-cmd --reload
云服务商安全组(如阿里云、腾讯云):
在安全组规则中添加入方向,允许 TCP 19999 端口,来源设为 0.0.0.0/0(或你信任的 IP)。
访问监控仪表盘
打开浏览器,输入 http://你的服务器公网IP:19999,即可看到 Netdata 的主界面。
仪表盘默认展示 CPU、内存、磁盘、网络、进程等数十个图表。
鼠标悬停可查看具体数值,点击右侧菜单可查看更细分的指标(如每个CPU核心的温度、磁盘IO延迟等)。
效果验证: 找一个耗时命令运行(例如 dd if=/dev/zero of=/tmp/test bs=1M count=1000),观察仪表盘中的 CPU 和磁盘曲线是否实时上升。
若曲线有对应波动,说明监控系统正常工作。
避坑指南
- SELinux 导致无法访问
如果服务器开启了 SELinux(多为 CentOS 默认),Netdata 的 Web 端口可能被 SELinux 策略拦截。
临时测试可以先关闭 SELinux:
setenforce 0
长期方案是放行端口策略(略复杂,此处不展开)。
- 端口被占用
若 19999 已被其他程序占用,Netdata 会启动失败。
你可以修改配置文件 /etc/netdata/netdata.conf,在 [web] 部分找到 default port = 19999,改成其他端口(如 19998),然后重启 systemctl restart netdata。
- 内存占用偏高
Netdata 默认使用约 200MB 内存来缓存历史数据。
如果服务器内存紧张,可以降低数据保留周期:在 /etc/netdata/netdata.conf 中添加 [global] 下的 history = 3600(只保留最近 1 小时数据),然后重启。
高频问题解答
Q:如何卸载 Netdata?
bash <(curl -Ss https://my-netdata.io/kickstart.sh) --uninstall
Q:如何修改仪表盘的访问密码?
Netdata 默认无认证,所有人能访问。如需加密码,使用 Apache/Nginx 反向代理来做基础认证,或者参考官方文档启用 cloud 功能。
Q:能监控多台服务器吗?
Netdata 本身是单机监控。要集中管理多台,可以搭建 Netdata Cloud(免费),在仪表盘添加节点即可。
总结
至此,你已经拥有一个功能完整的服务器监控系统。
从安装到验证只需要十几分钟,后续你可以根据业务需要添加报警通知(比如集成钉钉、Slack),或者扩展监控更多指标(如MySQL、Nginx)。
遇到问题时,优先回到本文的避坑部分排查。
记住:监控不是一次性任务,定期观察趋势才能让服务器运行得更稳。