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

相关推荐
无情的西瓜皮12 小时前
MCP协议实战:从零搭建一个AI Agent工具服务器,让大模型真正“动手干活“
运维·服务器·人工智能·mcp
历程里程碑12 小时前
54 深入解析poll多路复用技术
java·linux·服务器·开发语言·前端·数据结构·c++
Irene199112 小时前
Linux 默认权限详解:目录(755)与普通文件(644)权限机制,默认权限由 umask 值决定
linux·权限位
qq_5434478212 小时前
Tcping测速是什么?Tcping测速核心概念解析
服务器·网络·php
婷婷_17213 小时前
【PCIe 验证每日学习・Day36】PCIe 存储器寻址空间与 BAR 底层原理
网络·学习·程序人生·芯片·pcie
上海云盾-小余13 小时前
验证码接口攻防实战:杜绝拖拽刷量引发服务器瘫痪
运维·服务器
海南java第二人13 小时前
ClickHouse 自然语言统一查询:让数据对话成为现实
网络·数据库·clickhouse
小小de风呀13 小时前
de风——【从零开始学习Linux】Linux基础指令详解(一)
linux·运维·服务器
蜡笔婧萱13 小时前
Linux---web服务器与DNS域名解析服务器的综合挑战
linux·运维·服务器
zandy101113 小时前
hermes agent 安装教程 3.0:Win / Mac / Linux 全平台指南
linux·运维·macos