F5记录连接表脚本

今天群里正好有人问一个情况,用户的业务并发连接突然飙升,作为部署在敏感位置的F5设备,并没有自动记录连接请求日志的现成功能,若发生这种情况,用户需要知道当时的连接表情况,起码要知道是哪个IP地址发出的大量请求。

F5面对这种情况,基本有2个选择:

1、在VS中关联iRule,记录每次的tcp请求情况,包括请求原地址、源端口、net成内部地址、net成内部端口、分发到哪台服务器等信息。但是记录这些日志非常消耗设备性能,我记的有一个用户就非要做这个,怎么劝都不听,他的设备并发峰值是1200万/s,也就是有可能一瞬间要写入上百万条日志,非要做就做吧,邮件里把事情的情况写明,导致的后果写明,iRule给他,要做就自己做吧。果不其然,真是立竿见影,放上去点了一下“update”,设备宕机了。

2、每隔一段时间去检查一下连接表条目数,如果超过阀值就记录当前的连接表情况,并且根据原地址进行过滤排序。我认为这种方式要好一些,就算你的并发有1200万,我显示连接表,对连接表信息过滤等等操作,也只是相对速度慢了一些,对设备不会造成太大影响。

#!/bin/bash

function define()
{
    threshold=20000
    log_path=/tmp/f5_conn_log/
    user=`whoami`
}

function check()
{
    if [ $user != root ];then
        echo "Please use root user."
        exit 1
    fi
    
    if [ ! -d $log_path ];then
        mkdir $log_path
    fi
}

function gather()
{
    while true
    do
        timestamp=`date +%Y%m%d_%H%M%S`
        num_conn=`tmsh show sys connection | wc -l`
        
        if [ $num_conn -gt $threshold ];then
            tmsh show sys connection>${log_path}${timestamp}.log
            awk -F ‘:‘ ‘{print $1}‘ ${log_path}${timestamp}.log | sort -nr | uniq -c | sort -nr | head -20 >> ${log_path}${timestamp}_top.log
        fi
        
        sleep 300
    done
}

function main()
{
    define
    check
    gather
}

main

脚本是个while死循环,使用的时候加上&放到后台,可以设置为开机启动。

每次取到的信息是2个文本文件,一个是完整的连接表,另一个是对连接表进行过滤排序的top20。

[[email protected]:Active] f5_conn_log # cat 20160114_164101_top.log 
   5841 192.168.1.7
   1674 192.168.1.104
   1462 164.115.20.151
    317 192.168.4.110
    274 192.168.4.84
    258 192.168.1.248
    257 192.168.4.13
    246 192.168.1.76
    214 192.168.1.85
    199 192.168.1.146
    183 192.168.1.120
    169 192.168.1.166
    165 192.168.1.134
    163 172.18.0.131
    161 192.168.1.115
    155 100.90.90.150
    153 192.168.1.6
    148 192.168.100.76
    142 172.18.0.107
    137 192.168.1.150
时间: 2024-08-11 09:57:52

F5记录连接表脚本的相关文章

SQL创建表脚本

<1>SQL Server设置主键自增长列 SQL Server设置主键自增长列 1.新建一数据表,里面有字段id,将id设为为主键 www.2cto.com create table tb(id int,constraint pkid primary key (id)) create table tb(id int primary key ) 2.新建一数据表,里面有字段id,将id设为主键且自动编号 create table tb(id int identity(1,1),constrai

〖Linux〗自动连接VPN脚本(开机执行)

最近发现VPN经常会断线.. 环境:Ubuntu 14.04 一.创建VPN配置 单击桌面右上网络图标 -- 编辑连接 -- 添加 -- PPTP -- 新建 (填写上网关.用户名.密码...) 高级 -- 使用点到点加密(MPPE) -- 确定 二.查看刚刚新建网络UUID: nmcli con list 记录下你的VPN连接UUID 三.编写自动连接脚本: sudo vi /etc/init.d/autovpn sudo chmod +x /etc/init.d/autovpn 1 #!/b

统计一个数据库中,无记录的表的sql语句

2016-05-20 SQL Server数据库中统计无记录数的表 大家使用的时候,将sql脚本中的红色[TestDB] 换成你的目标数据库名称. 1 /************************************************************ 2 * Code formatted by SoftTree SQL Assistant ?v7.0.158 3 * Time: 2016/5/19 18:47:02 4 * Author:zhangcn 5 *******

如何记录数据表信息的变更

在操作数据记录时,对重要的数据,我们需要记录每一次的变更,有没有好的方法呢? 在通用权限管理系统中提供了记录数据表信息变更的方法. 一.先看看效果截图 二.再看看修改记录表的表结构 三.对该表访问的业务类 1 public partial class ModifyRecordManager : BaseManager, IBaseManager 2 { 3 /// <summary> 4 /// 构造函数 5 /// </summary> 6 public ModifyRecord

生成建表脚本up_CreateTable

已经很久没用使用这个脚本了,今天用到,并做修改,增加了生成扩展属性功能. Go if object_ID('[up_CreateTable]') is not null Drop Procedure [up_CreateTable] Go /* 生成建表脚本(V4.0) Andy 2017-3-28 */ Create Proc up_CreateTable ( @objectList nvarchar(max)=null ) as --With ENCRYPTION /* 参数说明: @obj

MySQL 快速构造一亿条记录的表

  在上一次朋友问我如何快速构造一亿条记录的表后,我理出了实行的办法,见:http://blog.csdn.net/mchdba/article/details/52938114,但是因为录入一亿表需要2个小时,所以还是感觉速度慢了些,那有没有啥办法能加快这一步骤呢?   1.建一张通用的用户表 建用户表没有啥变化,还是和上次一样. USE test; CREATE TABLE `UC_USER` ( `ID` BIGINT (20), `USER_NAME` VARCHAR (400), `U

MySQL 如何准备一亿条记录的表来测试

曾经一个朋友问我如何快速的在线往一个大表里面添加一个字段或者修改一个字段的长度,mysql版本是5.6,所以就准备在测试环境准备一个一亿条记录的表,然后来实际测试下到底哪种方式比较快,先来开始准备一亿条记录的表.   我线上有上亿条记录的表,但是很多网上朋友都没有,那么我这里就实践了一条办法,来实现自己构造一亿条数据记录的表.实现思路就是先建一张通用的20个字段左右的用户表,然后写一个存储过程,不停的往这个表里面写数据,while循环写上一亿次,这样就形成了一张一亿条记录的表出来.     1.

Entity Framework 6.x 学习之 - 创建带连接表的实体模型 with Database First

1. 创建数据库表 CREATE TABLE [Album] ( [AlbumId] [int] NOT NULL IDENTITY(1, 1), [AlbumName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] GO ALTER TABLE [Album] ADD CONSTRAINT [PK_Album] PRIMARY KEY CLUSTERED ([AlbumId]) ON [PRIMARY] GO

windows下注册表脚本编写

Reg文件就是我今天所说的注册表脚本文件,双击可将其中的数据写入注册表.利用注册表脚本文件可以对注册表进行关于键值的任何操作,而且还不受注册表被禁用的限制.     我们平常对注册表的修改大体上可以分为两种:     1.对注册表子键的修改;     2.对子键下的键值的修改;     下面依次对这两种修改做个简略的介绍.    一,对子键的修改(1)添加子键     操作:只需在主体文件部分加入"[ ]"即可     例如:在HKEY_CURRENT_USER/Software下添加