用 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 日志,图表直接告诉你答案。

相关推荐
jamon_tan1 小时前
Linux下cmake构建方法
linux
JiaWen技术圈2 小时前
内核子系统 nf_tables 深度解析
linux·服务器·安全·运维开发
信徒_2 小时前
负载均衡技术选型
运维·负载均衡
计算机安禾2 小时前
【Linux从入门到精通】第32篇:Nginx入门——高性能Web服务器搭建
linux·服务器·nginx
2401_881828322 小时前
交换综合实验报告
网络
d111111111d2 小时前
了解Modbus
网络·笔记·stm32·单片机·嵌入式硬件·学习
ZenosDoron2 小时前
Linux 中,rm -r 和 -f
linux·运维·服务器
Hui_AI7202 小时前
基于RAG的农产品GEO溯源智能问答系统实现
开发语言·网络·人工智能·python·算法·创业创新
Hello.Reader2 小时前
Ubuntu 上正确安装 Kali 虚拟机、Docker 与 kail 工具指南
linux·ubuntu·docker