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

相关推荐
不仙5202 小时前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
随身数智备忘录3 小时前
什么是设备管理体系?设备管理体系包含哪些核心模块?
网络·数据库·人工智能
第五文修3 小时前
手机OTG转TTL网口实现ping功能
网络·智能手机
189228048613 小时前
NY352固态MT29F32T08GWLBHD6-24QJ:B
大数据·服务器·人工智能·科技·缓存
AI视觉网奇3 小时前
linux 检索库 判断库是否支持
java·linux·服务器
dapeng-大鹏3 小时前
KVM+LVM 零停机在线扩容 Ubuntu 根分区:从磁盘添加到逻辑卷扩展完整
linux·运维·ubuntu·磁盘空间扩展
云边云科技_云网融合3 小时前
企业大模型时代的网络架构五层演进:从连接到智能的范式重构
网络·重构·架构
闫记康4 小时前
Linux学习day5
linux·chrome·学习
Sam_Deep_Thinking4 小时前
连锁门店的外卖订单平台对接
java·微服务·架构·系统架构
TechPioneer_lp4 小时前
30 岁硕士 Linux C 开发背景,未来想去澳洲就业,研究方向该选 AI、SDN 漏洞还是 Linux 内核?
linux·人工智能·职业规划·澳洲求职