跳到主要内容
注册无需实名认证
安云主机 AnYun VPS

教程 · 运维与排障

用 netdata 做实时监控,并把流量用量看住

难度

进阶

预计时长

20 分钟

步骤

7

最近修订

基准系统

Debian 12

要点

用 netdata 做实时监控,并把流量用量看住

netdata 装完即用,秒级采集 CPU、内存、磁盘与网络指标。默认监听 19999 端口,务必改成只绑定 127.0.0.1 并通过 SSH 端口转发访问,否则等于把主机的全部运行细节公开在互联网上。再配一个 vnstat 按月统计流量,就能在超出套餐流量额度之前发现问题。

前置条件

开始之前,先确认这些都具备

  • 一台服务器与 sudo 权限
  • 本地能用 SSH 端口转发

操作步骤

7

  1. 步骤 01 / 07

    安装 #

    发行版仓库里的 netdata 版本偏旧但来源可信,适合求稳的场景;官方安装脚本版本更新、功能更全。用官方脚本时请到官网复制当前的安装命令,并遵循「先下载、先阅读、再执行」的习惯。

    Shell
    # 方式一:发行版仓库(版本旧,来源可信)
    sudo apt update && sudo apt install -y netdata
    
    # 方式二:官方脚本(安装地址以官网当前公布的为准)
    # curl -fsSLo /tmp/netdata-kickstart.sh https://官方地址/kickstart.sh
    # less /tmp/netdata-kickstart.sh
    # sudo sh /tmp/netdata-kickstart.sh
    
    systemctl status netdata --no-pager
  2. 步骤 02 / 07

    立刻改成只监听本地 #

    netdata 的默认面板会暴露进程列表、已安装服务、连接情况等大量细节,对攻击者而言这是一份现成的踩点报告。改成只绑定回环地址,是安装后的第一件事。

    Shell
    sudo /etc/netdata/edit-config netdata.conf
    
    # 在 [web] 段落里设置:
    #   bind to = 127.0.0.1
    
    sudo systemctl restart netdata
    sudo ss -tlnp | grep 19999     # 期望 127.0.0.1:19999
  3. 步骤 03 / 07

    通过 SSH 隧道访问面板 #

    在自己的电脑上建立端口转发,然后浏览器访问本地地址。这样面板不需要在防火墙上开任何端口,也不需要额外配置认证。

    Shell
    ssh -N -L 19999:127.0.0.1:19999 -p 22022 [email protected]
    
    # 浏览器打开 http://127.0.0.1:19999
  4. 步骤 04 / 07

    小内存机型要调低资源占用 #

    netdata 默认采集上千个指标并在内存里保留一段历史,在 1 GB 的机器上这部分开销会很明显。把采集间隔放宽到 2–5 秒、限制内存中保留的历史数据量,够用即可。

    配置文件
    # netdata.conf
    [global]
        update every = 5
    
    [db]
        mode = dbengine
        dbengine multihost disk space MB = 256
  5. 步骤 05 / 07

    配置告警通知 #

    监控的价值在于出事时你能收到消息,而不是事后翻图表。netdata 自带一套告警,通知渠道在 health_alarm_notify.conf 里配置。配完一定要发一条测试通知,确认真的能收到 —— 没验证过的告警等于没有。

    Shell
    sudo /etc/netdata/edit-config health_alarm_notify.conf
    
    # 配好之后发一条测试通知(role 用 sysadmin)
    # 插件目录随安装方式而异:apt 安装通常在 /usr/lib/netdata/plugins.d/,
    # 官方脚本安装通常在 /usr/libexec/netdata/plugins.d/,先确认再执行
    ls /usr/lib/netdata/plugins.d/alarm-notify.sh /usr/libexec/netdata/plugins.d/alarm-notify.sh 2>/dev/null
    
    sudo -u netdata /usr/lib/netdata/plugins.d/alarm-notify.sh test sysadmin
  6. 步骤 06 / 07

    用 vnstat 盯住每月流量 #

    这是最容易被忽略却最常引发账单意外的一项。VPS 套餐的流量额度按月计(例如 轻装 1 / QZ-1 含 1 TB,远航 2 / YH-2 含 4 TB),一次配置失误的备份任务就可能把它跑光。vnstat 常驻记录,随时能查本月已用多少。

    Shell
    sudo apt install -y vnstat
    sudo systemctl enable --now vnstat
    
    vnstat -m          # 按月统计
    vnstat -d          # 按日统计
    vnstat --live -i eth0    # 实时速率(网卡名用 ip -br link 查)
  7. 步骤 07 / 07

    该盯哪几个指标 #

    CPU 使用率是最不重要的那个。真正预示问题的是:磁盘 IO wait(业务卡顿的常见原因)、steal time(宿主机超售)、内存与 swap 的使用趋势、磁盘剩余空间(写满会引发千奇百怪的故障)、以及本月流量用量。给这五项设好告警,比盯着一屏漂亮的图表有用得多。

    Shell
    # 命令行快速自查这五项
    iostat -x 1 3 | head -n 20     # 需要 sysstat:IO 等待
    vmstat 1 5                     # 最后一列 st = steal time
    free -h                        # 内存与 swap
    df -h                          # 磁盘剩余
    vnstat -m | tail -n 5          # 本月流量

常见错误

这一步最容易踩的坑

下面每一条都对应一个真实会发生的故障。先读完再动手,比出问题之后再回来查要省时间。

  • 把 19999 端口开放到公网。默认面板不需要认证就能看到主机的详细运行状况,等于把踩点报告主动交出去。
  • 在 1 GB 内存的机器上用默认配置。监控本身就成了负载来源,得不偿失。
  • 配了告警却没验证通知渠道。出事那天你不会收到任何消息。
  • 只看 CPU。真正让服务不可用的通常是 IO wait、内存耗尽或磁盘写满。
  • 磁盘写满导致监控自己也停摆。给根分区剩余空间单独设一个告警阈值。
  • 完全不看流量用量。超出套餐额度往往是月底才发现的,而那时该发生的已经发生了。

这篇教程的边界

  • 命令以 Debian 12 为准。Ubuntu 与 Rocky Linux 的差异只在正文明确标注之处,未标注的部分请以你所用发行版的官方文档为准。
  • 示例中的 IP 来自文档保留段 203.0.113.0/24,域名为 example.com,端口为示意值。复制后必须替换成自己的值, 原样执行不会有任何效果。
  • 教程不能替代备份。任何会改动数据或线上流量的步骤,执行前先确认有一份验证过能恢复的备份。
  • 本站不提供任何用于绕过网络审查的配置或说明,这篇也不例外。

发现命令过时或有误,请发邮件到 [email protected]。 指出错误的邮件比沉默的旧文档有价值得多。

联系 工单
扫码
手机访问

扫码在手机上打开