CentOS 7 实现每5分钟自动记录连接数的方法与实践

admin
CentOS 7下实现每5分钟自动记录连接数,可通过编写Shell脚本结合cron定时任务完成,首先使用ss -t | wc -l命令统计当前TCP连接数,并将结果追加到日志文件;然后通过crontab -e添加定时任务,设置每5分钟执行脚本(如*/5 * * * * /root/conn_log.sh),同时需确保脚本具有执行权限,实践中需注意日志路径的权限配置及脚本异常处理,最终实现连接数的自动化记录,为网络状态监控与故障排查提供数据支持。

在服务器运维中,监控网络连接数是保障系统稳定性的重要环节,异常的连接数波动可能预示着DDoS攻击、服务故障或应用程序异常等问题,CentOS 7作为常用的服务器操作系统,通过简单的脚本和定时任务,即可实现每5分钟自动记录连接数的功能,为后续的趋势分析和问题排查提供数据支持,本文将详细介绍具体实现步骤,包括工具选择、脚本编写、定时任务配置及常见问题处理。

实现每5分钟记录连接数的核心思路是:使用命令行工具获取当前连接数,通过脚本保存到日志文件,再利用cron定时任务实现自动化执行,具体流程如下:

  1. 工具选择:使用ssnetstat命令获取连接数(ssnetstat的替代品,性能更优,推荐优先使用)。
  2. 脚本编写:封装获取连接数、记录日志的逻辑,确保脚本可独立执行。
  3. 定时任务配置:通过cron设置每5分钟执行一次脚本,实现自动化。
  4. 日志管理:定期查看或轮转日志文件,避免磁盘空间占用过多。

详细实现步骤

确认工具可用性

使用ss命令(推荐)

ss是Linux系统自带的新一代网络工具,相比netstat更高效,默认情况下,CentOS 7已安装ss,可通过以下命令验证:

CentOS 7 实现每5分钟自动记录连接数的方法与实践

ss --version

若未安装,可通过yum安装:

sudo yum install iproute -y

使用netstat命令(备选)

若因兼容性需使用netstat,需安装net-tools包:

sudo yum install net-tools -y

验证安装:

netstat --version

编写记录连接数的脚本

/usr/local/bin/目录下创建脚本connection_monitor.sh(目录权限较高,适合存放系统脚本):

sudo vim /usr/local/bin/connection_monitor.sh
```  如下(以`ss`命令为例,记录所有TCP连接数):  
```bash
#!/bin/bash
# 定义日志文件路径(建议使用专用目录,便于管理)
LOG_DIR="/var/log/connection_count"
LOG_FILE="${LOG_DIR}/connection_count_$(date +%Y%m%d).log"
# 创建日志目录(若不存在)
mkdir -p "${LOG_DIR}"
# 获取当前时间(格式:YYYY-MM-DD HH:MM:SS)
CURRENT_TIME=$(date "+%Y-%m-%d %H:%M:%S")
# 获取TCP连接数(ss -tan:显示所有TCP连接,-n避免域名解析)
# 若需按状态统计(如已建立连接、监听连接等),可修改命令
# 已建立连接数:ss -tan state established | wc -l
# 监听连接数:ss -tan state listening | wc -l
CONNECTION_COUNT=$(ss -tan | wc -l)
# 将时间、连接数写入日志文件(格式:时间,连接数)
echo "${CURRENT_TIME}, ${CONNECTION_COUNT}" >> "${LOG_FILE}"
# 输出执行状态(可选,便于调试)
echo "记录完成:${CURRENT_TIME}, 连接数=${CONNECTION_COUNT}"

脚本说明:

  • LOG_DIR:日志存储目录,按日期分割日志文件(如connection_count_20231001.log)。
  • ss -tan-t仅显示TCP连接,-a显示所有连接(包括监听、已建立等),-n以数字形式显示地址和端口,避免DNS解析延迟。
  • wc -l:统计ss命令输出的行数,即连接数。

保存脚本后,赋予执行权限:

sudo chmod +x /usr/local/bin/connection_monitor.sh

测试脚本执行

手动运行脚本,验证是否正常生成日志文件:

sudo /usr/local/bin/connection_monitor.sh

检查日志文件是否存在并包含内容:

cat /var/log/connection_count/connection_count_$(date +%Y%m%d).log

预期输出示例:

2023-10-01 14:30:00, 150

配置cron定时任务

cron是Linux系统内置的定时任务工具,可通过以下步骤配置每5分钟执行一次脚本:

编辑cron任务列表

sudo crontab -e

若首次使用crontab,系统会提示选择编辑器(如vimnano),选择后进入编辑界面。

添加定时任务

在文件末尾添加以下内容:

*/5 * * * * /usr/local/bin/connection_monitor.sh >> /var/log/connection_count/cron_run.log 2>&1

任务说明:

  • */5 * * * *:cron时间格式,表示“每5分钟执行一次”(具体为:分钟(0-59)小时(0-23)日期(1-31)月份(1-12)
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码