语境: 2026年最新自建节点流量监控与日志分析完全指南,涵盖流量统计、实时监控、日志分析、告警通知等,让你全面掌握节点运行状态。
→
自建节点流量监控与日志分析完全指南 2026
输出
前言
自建节点后,你是否经常遇到以下问题:
- 不知道服务器用了多少流量
- 不知道谁在用你的节点
- 遇到问题不知道怎么排查
- 服务器被攻击了不知道
流量监控和日志分析是运维自建节点的必备技能。通过监控,你可以实时了解节点的运行状态;通过日志,你可以快速定位问题。本文介绍各种监控和日志分析工具,让你成为自己节点的”网管”。
一、流量统计
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 | 入侵检测 | 中等 | ⭐⭐⭐⭐⭐ |
| suricata | IDS/IPS | 较难 | ⭐⭐⭐ |
九、总结
9.1 监控 checklist
基础监控:
- CPU 使用率
- 内存使用率
- 磁盘使用率
- 网络流量
- 服务状态
- 端口状态
安全监控:
- 入侵检测(fail2ban)
- 异常连接检测
- 恶意流量检测
- 日志审计
告警通知:
- 邮件告警
- Telegram 告警
- 定时检查
- 异常通知
9.2 最佳实践
1. 实时监控
- 使用 Netdata 或 glances
- 实时了解系统状态
- 及时发现问题
2. 日志分析
- 定期查看日志
- 使用工具分析
- 建立日志归档
3. 告警机制
- 设置合理阈值
- 多种通知方式
- 避免告警疲劳
4. 自动化
- 定时任务检查
- 自动封禁恶意 IP
- 自动清理日志
5. 安全第一
- 限制监控端口访问
- 加密监控数据
- 定期备份配置
通过完善的监控和日志分析,你可以确保自建节点的稳定运行,及时发现和解决问题,让你的翻墙服务更加可靠。
关注 润土分享 获取更多自建节点运维技巧!
1.1k 词 · 1.4k 令牌