$ 发布 2026-07-23 | ~5分钟阅读
语境: 2026年最新自建节点流量监控与日志分析完全指南,涵盖流量统计、实时监控、日志分析、告警通知等,让你全面掌握节点运行状态。

自建节点流量监控与日志分析完全指南 2026


输出
延迟估计 ~260 ms 置信度 ~0.90

前言

自建节点后,你是否经常遇到以下问题:

  • 不知道服务器用了多少流量
  • 不知道谁在用你的节点
  • 遇到问题不知道怎么排查
  • 服务器被攻击了不知道

流量监控和日志分析是运维自建节点的必备技能。通过监控,你可以实时了解节点的运行状态;通过日志,你可以快速定位问题。本文介绍各种监控和日志分析工具,让你成为自己节点的”网管”。


一、流量统计

1.1 系统级流量统计

iftop - 实时流量监控

# 安装
apt install iftop

# 使用
iftop

# 指定网卡
iftop -i eth0

# 指定端口
iftop -i eth0 -f "port 443"

nload - 简洁流量监控

# 安装
apt install nload

# 使用
nload

# 指定网卡
nload eth0

vnstat - 历史流量统计

# 安装
apt install vnstat

# 初始化
vnstat -u -i eth0

# 查看统计
vnstat
vnstat -h  # 小时统计
vnstat -d  # 日统计
vnstat -w  # 周统计
vnstat -m  # 月统计

1.2 应用级流量统计

Xray 流量统计

# 查看所有用户流量
xray api stats --server 127.0.0.1:10085

# 查看特定用户
xray api statsquery --server 127.0.0.1:10085 --pattern "user.*"

# 实时监控
xray api stats --server 127.0.0.1:10085 --interval 1

Clash 流量统计

# 通过 REST API 获取
curl http://127.0.0.1:9090/proxies
curl http://127.0.0.1:9090/connections

1.3 流量可视化

Netdata - 实时监控仪表盘

# 一键安装
bash <(curl -Ss https://get.netdata.cloud/kickstart.sh)

# 访问
http://服务器IP:19999

Grafana + Prometheus

# 安装 Prometheus
apt install prometheus

# 安装 Grafana
apt install grafana

# 启动服务
systemctl start prometheus
systemctl start grafana-server

# 访问 Grafana
http://服务器IP:3000

二、实时监控

2.1 进程监控

htop - 交互式进程监控

# 安装
apt install htop

# 使用
htop

glances - 综合系统监控

# 安装
apt install glances

# 使用
glances

# Web 模式
glances -w

# 访问
http://服务器IP:61208

2.2 网络连接监控

ss - 查看网络连接

# 查看所有连接
ss -tuln

# 查看已建立的连接
ss -tnp

# 查看特定端口
ss -tnp | grep :443

# 统计连接数
ss -tnp | grep :443 | wc -l

tcpdump - 抓包分析

# 安装
apt install tcpdump

# 抓包
tcpdump -i eth0 port 443

# 保存到文件
tcpdump -i eth0 port 443 -w capture.pcap

# 分析文件
tcpdump -r capture.pcap

2.3 端口监控

nc - 测试端口

# 测试端口是否开放
nc -zv 服务器IP 443

# 持续测试
while true; do
    nc -zv 服务器IP 443 && echo "Port 443 is open" || echo "Port 443 is closed"
    sleep 5
done

nmap - 端口扫描

# 安装
apt install nmap

# 扫描所有端口
nmap 服务器IP

# 扫描特定端口
nmap -p 443 服务器IP

# 扫描多个端口
nmap -p 80,443,8080 服务器IP

三、日志分析

3.1 系统日志

查看系统日志:

# 查看所有日志
tail -f /var/log/syslog

# 查看认证日志
tail -f /var/log/auth.log

# 查看内核日志
dmesg | tail -20

日志轮转:

# 配置文件
/etc/logrotate.conf

# 应用日志配置
/etc/logrotate.d/

# 手动轮转
logrotate -f /etc/logrotate.d/xray

3.2 Xray 日志分析

配置日志:

{
  "log": {
    "loglevel": "warning",
    "access": "/var/log/xray/access.log",
    "error": "/var/log/xray/error.log"
  }
}

分析日志:

# 查看错误日志
tail -f /var/log/xray/error.log

# 查看访问日志
tail -f /var/log/xray/access.log

# 统计连接数
grep "inbound" /var/log/xray/access.log | wc -l

# 查找特定 IP
grep "192.168.1.100" /var/log/xray/access.log

# 统计用户流量
awk '{print $8}' /var/log/xray/access.log | sort | uniq -c

3.3 Nginx 日志分析

配置日志:

http {
    log_format main '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log;
}

分析日志:

# 查看访问日志
tail -f /var/log/nginx/access.log

# 查看错误日志
tail -f /var/log/nginx/error.log

# 统计访问量
wc -l /var/log/nginx/access.log

# 统计访问来源 IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

# 统计访问最多的页面
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

# 统计状态码
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c

# 查找 404 错误
awk '$9 == 404' /var/log/nginx/access.log

3.4 日志分析工具

GoAccess - 实时日志分析

# 安装
apt install goaccess

# 实时分析
goaccess /var/log/nginx/access.log

# 生成 HTML 报告
goaccess /var/log/nginx/access.log -o report.html

ELK Stack - 大规模日志分析

# Elasticsearch - 存储和检索
# Logstash - 收集和处理
# Kibana - 可视化

# 安装(简化版)
docker-compose up -d

四、告警通知

4.1 邮件告警

配置邮件通知:

# 安装 mailutils
apt install mailutils

# 发送测试邮件
echo "Test message" | mail -s "Test Subject" your@email.com

# 脚本示例
if [ $(df -h / | grep -v Filesystem | awk '{print $5}' | sed 's/%//') -gt 90 ]; then
    echo "Disk usage is over 90%" | mail -s "Disk Alert" your@email.com
fi

4.2 Telegram 告警

创建 Telegram Bot:

1. 搜索 @BotFather
2. 发送 /newbot
3. 按照提示设置 Bot 名称和用户名
4. 获取 API Token
5. 获取你的 Chat ID

发送告警脚本:

#!/bin/bash

TOKEN="你的BotToken"
CHAT_ID="你的ChatID"
MESSAGE="服务器告警:CPU使用率超过90%"

curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
    -d "chat_id=$CHAT_ID" \
    -d "text=$MESSAGE"

4.3 钉钉/飞书告警

钉钉 Webhook:

#!/bin/bash

WEBHOOK_URL="你的钉钉Webhook"
MESSAGE='{"msgtype": "text", "text": {"content": "服务器告警:CPU使用率超过90%"}}'

curl -s -X POST "$WEBHOOK_URL" \
    -H "Content-Type: application/json" \
    -d "$MESSAGE"

4.4 监控脚本示例

CPU 使用率监控:

#!/bin/bash

CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')

if (( $(echo "$CPU_USAGE > 90" | bc -l) )); then
    echo "CPU usage is $CPU_USAGE%" | mail -s "CPU Alert" your@email.com
fi

内存监控:

#!/bin/bash

MEM_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')

if (( $(echo "$MEM_USAGE > 90" | bc -l) )); then
    echo "Memory usage is $MEM_USAGE%" | mail -s "Memory Alert" your@email.com
fi

磁盘监控:

#!/bin/bash

DISK_USAGE=$(df -h / | grep -v Filesystem | awk '{print $5}' | sed 's/%//')

if [ $DISK_USAGE -gt 90 ]; then
    echo "Disk usage is $DISK_USAGE%" | mail -s "Disk Alert" your@email.com
fi

五、安全监控

5.1 入侵检测

fail2ban - 自动封禁恶意 IP

# 安装
apt install fail2ban

# 配置文件
/etc/fail2ban/jail.conf

# 启用规则
systemctl enable fail2ban
systemctl start fail2ban

# 查看状态
fail2ban-client status

# 查看封禁列表
fail2ban-client status sshd

配置自定义规则:

# 创建自定义规则
cat > /etc/fail2ban/filter.d/xray.conf << EOF
[Definition]
failregex = ^.*invalid user.*$
            ^.*authentication failed.*$
ignoreregex =
EOF

# 启用规则
cat > /etc/fail2ban/jail.d/xray.conf << EOF
[xray]
enabled = true
port = 443
filter = xray
logpath = /var/log/xray/access.log
maxretry = 5
bantime = 3600
EOF

5.2 恶意流量检测

suricata - IDS/IPS 系统

# 安装
apt install suricata

# 配置文件
/etc/suricata/suricata.yaml

# 更新规则
suricata-update

# 运行
suricata -i eth0 -c /etc/suricata/suricata.yaml

5.3 异常行为检测

脚本示例:检测大量连接

#!/bin/bash

CONNECTIONS=$(ss -tnp | grep :443 | wc -l)

if [ $CONNECTIONS -gt 100 ]; then
    echo "Too many connections: $CONNECTIONS" | mail -s "Connection Alert" your@email.com
fi

六、自动化监控

6.1 定时任务

crontab 配置:

# 编辑定时任务
crontab -e

# 每5分钟检查一次CPU
*/5 * * * * /path/to/cpu_check.sh

# 每小时检查一次内存
0 * * * * /path/to/memory_check.sh

# 每天凌晨检查磁盘
0 0 * * * /path/to/disk_check.sh

# 每周一备份日志
0 0 * * 1 /path/to/log_backup.sh

6.2 监控仪表盘

Netdata 配置:

# 修改配置
/etc/netdata/netdata.conf

# 自定义告警
/etc/netdata/health.d/

# 重启服务
systemctl restart netdata

Grafana 仪表盘:

1. 登录 Grafana
2. 点击 "Create" → "Dashboard"
3. 添加面板
4. 选择数据源
5. 配置查询
6. 设置告警规则

七、常见问题排查

7.1 服务器变慢

排查步骤:

1. 检查 CPU 使用率 → htop
2. 检查内存使用 → free -h
3. 检查磁盘空间 → df -h
4. 检查网络连接 → ss -tnp
5. 查看错误日志 → tail -f /var/log/syslog
6. 检查进程 → ps aux

可能原因:

问题原因解决方案
CPU 高进程占用关闭不必要的进程
内存高内存泄漏重启服务或升级内存
磁盘满日志过大清理日志
连接多被攻击封禁 IP

7.2 连接失败

排查步骤:

1. 检查端口是否开放 → nc -zv 服务器IP 端口
2. 检查防火墙规则 → iptables -L
3. 检查服务状态 → systemctl status xray
4. 查看错误日志 → tail -f /var/log/xray/error.log
5. 检查网络连通性 → ping 服务器IP
6. 检查 DNS 解析 → nslookup 域名

7.3 流量异常

排查步骤:

1. 查看实时流量 → iftop
2. 查看连接数 → ss -tnp | wc -l
3. 查看连接来源 → ss -tnp | awk '{print $5}' | sort | uniq -c
4. 查看用户流量 → xray api stats
5. 检查是否有异常连接 → 查看 IP 地理位置
6. 封禁异常 IP → iptables -A INPUT -s 异常IP -j DROP

八、监控工具汇总

工具用途安装难度推荐度
iftop实时流量简单⭐⭐⭐⭐⭐
nload流量统计简单⭐⭐⭐⭐
vnstat历史流量简单⭐⭐⭐⭐⭐
htop进程监控简单⭐⭐⭐⭐⭐
glances综合监控简单⭐⭐⭐⭐
Netdata实时仪表盘简单⭐⭐⭐⭐⭐
Grafana可视化中等⭐⭐⭐⭐
GoAccess日志分析简单⭐⭐⭐⭐
fail2ban入侵检测中等⭐⭐⭐⭐⭐
suricataIDS/IPS较难⭐⭐⭐

九、总结

9.1 监控 checklist

基础监控:

  • CPU 使用率
  • 内存使用率
  • 磁盘使用率
  • 网络流量
  • 服务状态
  • 端口状态

安全监控:

  • 入侵检测(fail2ban)
  • 异常连接检测
  • 恶意流量检测
  • 日志审计

告警通知:

  • 邮件告警
  • Telegram 告警
  • 定时检查
  • 异常通知

9.2 最佳实践

1. 实时监控

  • 使用 Netdata 或 glances
  • 实时了解系统状态
  • 及时发现问题

2. 日志分析

  • 定期查看日志
  • 使用工具分析
  • 建立日志归档

3. 告警机制

  • 设置合理阈值
  • 多种通知方式
  • 避免告警疲劳

4. 自动化

  • 定时任务检查
  • 自动封禁恶意 IP
  • 自动清理日志

5. 安全第一

  • 限制监控端口访问
  • 加密监控数据
  • 定期备份配置

通过完善的监控和日志分析,你可以确保自建节点的稳定运行,及时发现和解决问题,让你的翻墙服务更加可靠。


关注 润土分享 获取更多自建节点运维技巧!

1.1k 词 · 1.4k 令牌