用 Netdata 实时监控服务器,比 Prometheus + Grafana 轻量得多

用 Netdata 实时监控服务器,比 Prometheus + Grafana 轻量得多

服务器监控是运维的基本盘,但 Prometheus + Grafana 这套经典组合部署下来资源消耗不小,配置也复杂。Netdata 是一个开源的实时监控工具,安装完几乎不需要配置,几秒钟后就能看到 CPU、内存、磁盘 I/O、网络、Docker 容器、进程等数百个指标,图表刷新频率是每秒一次,比大多数监控系统精细得多。

适用场景

  • 个人服务器日常健康监控
  • 排查 CPU/内存/磁盘 突发问题
  • 多台服务器统一监控
  • Docker 容器资源追踪

服务器配置

Netdata 本身轻量,但采集的数据留在内存里:

  • CPU:1 核(通常占用 1--2% CPU)
  • 内存:50--200MB(取决于采集的指标数量)
  • 硬盘:几乎不占(默认不持久化历史数据)

我在 雨云 rainyun-com 的服务器上每台都装了 Netdata,监控开销几乎可以忽略不计。注册 5 折优惠码: 2026off

安装 Netdata

官方提供一键安装脚本:

bash 复制代码
curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh
sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry

安装完成后服务自动启动,Web 界面在 http://你的IP:19999

在云控制台放行 TCP 19999(只用于测试,正式使用建议配反代 + 认证)。

配置访问控制

默认情况下任何人都能访问 19999 端口,需要加访问控制:

bash 复制代码
sudo nano /etc/netdata/netdata.conf
ini 复制代码
[web]
    bind to = 127.0.0.1:19999  # 只监听本地,通过反代访问

用 Caddy 加 Basic Auth 反代:

bash 复制代码
sudo apt install -y caddy

sudo tee /etc/caddy/Caddyfile << 'EOF'
monitor.你的域名.com {
    basicauth {
        # 用 caddy hash-password 生成密码哈希
        admin $2a$14$...你的密码哈希...
    }
    reverse_proxy localhost:19999
}
EOF

sudo systemctl restart caddy
sudo systemctl restart netdata

生成 Caddy 密码哈希:

bash 复制代码
caddy hash-password --plaintext 你的密码

主要监控面板

系统概览

  • CPU 使用率(总计 + 各核心)
  • 内存:使用 / 缓存 / 交换
  • 磁盘 I/O:读写速率
  • 网络:发送 / 接收流量

进程

  • 每个进程的 CPU / 内存 / I/O 消耗
  • 自动识别常见软件(nginx、mysql、redis 等)

Docker 容器

  • 每个容器的 CPU、内存、网络、磁盘
  • 容器启停状态

应用插件(自动检测)

  • Nginx / Apache 访问日志和连接数
  • MySQL / PostgreSQL 查询统计
  • Redis 命中率
  • PHP-FPM 请求队列

自定义告警

Netdata 内置了数百条默认告警规则,比如 CPU 超过 90% 连续 2 分钟、磁盘使用率超过 85% 等。可以自定义:

bash 复制代码
sudo tee /etc/netdata/health.d/custom.conf << 'EOF'
# 自定义告警:磁盘使用率超过 80%
alarm: disk_usage_high
    on: disk.space
    lookup: average -10m unaligned of used
    units: %
    every: 1m
    warn: $this > 80
    crit: $this > 90
    info: 磁盘使用率过高
EOF

sudo systemctl restart netdata

配置告警通知

告警触发时发送通知,支持 Email、Slack、Telegram、ntfy 等:

bash 复制代码
sudo nano /etc/netdata/health_alarm_notify.conf

Telegram 通知配置:

ini 复制代码
SEND_TELEGRAM="YES"
TELEGRAM_BOT_TOKEN="你的Bot Token"
TELEGRAM_CHAT_ID="你的Chat ID"

邮件通知:

ini 复制代码
SEND_EMAIL="YES"
EMAIL_SENDER="netdata@你的域名.com"
DEFAULT_RECIPIENT_EMAIL="你的邮箱@gmail.com"

多节点监控(Netdata Parents)

多台服务器的监控数据可以聚合到一台"父节点":

在子节点 /etc/netdata/stream.conf 配置:

ini 复制代码
[stream]
    enabled = yes
    destination = 父节点IP:19999
    api key = 一个随机UUID

在父节点 /etc/netdata/stream.conf 配置:

ini 复制代码
[API_KEY]  # 替换为上面的 UUID
    enabled = yes
    history = 3600
    default memory mode = ram

这样在父节点的 Web 界面就能看到所有子节点的数据,一处查看全部服务器状态。

与 Prometheus + Grafana 的对比

功能 Netdata Prometheus + Grafana
安装复杂度 一条命令 需要配置 exporter + 数据源 + 仪表板
开箱即用 是(自动检测应用) 需要手动配置仪表板
刷新频率 每秒 通常 15--60 秒
历史数据 有限(内存) 可无限存储
自定义查询 有限 PromQL 极其灵活
资源消耗 中等偏高

对于个人服务器和小团队,Netdata 开箱即用的体验更好;需要长期数据分析或复杂业务指标的场景,Prometheus + Grafana 更合适。两者也可以共存------Netdata 负责实时监控,Prometheus 负责长期存储。


装上 Netdata 之后,服务器上发生什么一眼就能看出来:CPU 为什么突然升高、内存是哪个进程吃掉的、哪个时间段磁盘 I/O 很高------不需要手动敲命令 grep 日志,图表直接告诉你答案。

相关推荐
AlfredZhao2 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐3 天前
Linux内存扩容指南
linux
zylyehuo3 天前
Linux 彻底且安全地删除文件
linux
用户805533698034 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297914 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
SRETalk5 天前
Zabbix、Prometheus、Grafana、Nightingale,四个监控如何选型?
zabbix·grafana·prometheus·nightingale
Web3探索者6 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo6 天前
Linux系统中网线与USB网络共享冲突
linux
荣--6 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
兵慌码乱6 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构