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

相关推荐
且从容.5 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道5 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
讯捷蓝达7 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
且从容.8 小时前
ubuntu安装flink
linux·ubuntu·flink
数字新视界9 小时前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
爱和冰阔落9 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨9 小时前
WSL2的安装与使用
linux·wsl
微小的鱼10 小时前
Linux的渲染与显示系统链路
android·java·linux
陈希12310 小时前
Nginx 从入门到能扛事:反向代理、负载均衡与 HTTPS 实战
nginx·https·负载均衡
lisanmengmeng10 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器