码迷,mamicode.com
首页 > 其他好文 > 详细

F5周/月巡检脚本

时间:2016-01-15 13:01:19      阅读:705      评论:0      收藏:0      [点我收藏+]

标签:f5   巡检   

    一般F5(LTM)的巡检内容包括收集当前的ucs配置备份、收集qkview自检包、日志打包,记录当前node、pool、vs的总数量、可用数量、异常数量、为知数量等等。

    由于F5的底层Linux做了很多的限制,所以获取F5的很多信息只能通过snmp来实现,请保证F5的snmp使用的是v2c版本,团体名可以自行修改变量,允许127.0.0.1访问。

#!/bin/bash

function line()
{
    cols=`tput cols`
    
    for l in `seq 1 ${cols}`
    do
    echo -n "="
    done
}

function define()
{
    user=`whoami`
    hostname=`uname -n`
    path=/tmp/inspection/
    public="public"
    datestamp=`date +%Y%m%d`
    timestamp=`date +%H%M%S`
    platform=`tmsh show sys hardware | egrep -A1 Platform | awk ‘NR==2{print $2,$3}‘`
    sn=`tmsh show sys hardware | grep "Chassis Serial" | awk ‘{print $3}‘`
    version=`tmsh show sys version | grep -E "  Version" | awk ‘{print $2}‘`
    uptime=`/usr/bin/uptime | awk -F ‘[,| ]+‘ ‘{print $4,$5,$6}‘`
}

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

function select_version()
{
    bigpipe version > /dev/null 2>&1
    
    if [ $? != 0 ]
    then
        version11
    else
        version10
    fi
}

function version10()
{
    fstime=`bigpipe failover show | awk ‘{print $4,$5}‘`
    
    snmp_check_version10
    snmp
    
    tar zcf ${path}log_${hostname}_${datestamp}.tar.gz /var/log/* >/dev/null 2>&1
    tmsh save sys ucs /var/local/ucs/ucs_${hostname}_${datestamp}.ucs >/dev/null 2>&1
    cp /var/local/ucs/ucs_${hostname}_${datestamp}.ucs $path
    qkview > /dev/null 2>&1
    mv /var/tmp/${hostname}.tgz $path
    
    logfilt
    output
    backup
}

function version11()
{
    fstime=`tmsh show sys failover | awk ‘{print $4,$5}‘`
    
    snmp_check_version11
    snmp
    tar zcf ${path}log_${hostname}_${datestamp}.tar.gz /var/log/* >/dev/null 2>&1
    tmsh save sys ucs /var/local/ucs/ucs_${hostname}_${datestamp}.ucs >/dev/null 2>&1
    cp /var/local/ucs/ucs_${hostname}_${datestamp}.ucs $path
    qkview > /dev/null 2>&1
    mv /var/tmp/${hostname}.qkview $path
    
    logfilt
    output
    backup
}

function snmp_check_version10()
{
    numstart=`awk ‘/^snmpd {$/{print NR}‘ /config/bigip_sys.conf`
    numstop=`awk ‘/^sshd {$/{print NR}‘ /config/bigip_sys.conf`
    numend=`echo | awk  "{print ${numstop}-1}"`
    numcheck=`sed -n "${numstart},${numend}p" /config/bigip_sys.conf | grep -E "127.0.0.1|0.0.0.0/0.0.0.0" | wc -l`
    
    if [ $numcheck = 0 ]
    then
        echo "Please allow 127.0.0.1 snmp ."
        exit 2
    fi
}

function snmp_check_version11()
{
    numstart=`awk ‘/^sys snmp {$/{print NR}‘ /config/bigip_base.conf`
    numstop=`awk ‘/^    communities {$/{print NR}‘ /config/bigip_base.conf`
    numend=`echo | awk "{print ${numstop}-1}"`
    numcheck=`sed -n "${numstart},${numend}p" /config/bigip_base.conf | grep -E " 127. |0.0.0.0/0.0.0.0" | wc -l`
    
    if [ $numcheck = 0 ]
    then
        echo "Please allow 127.0.0.1 snmp ."
        exit 2
    fi
}

function snmp()
{
    vs_red=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.10.13.2.1.2|grep -c "red"`
    vs_green=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.10.13.2.1.2|grep -c "green"`
    vs_blue=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.10.13.2.1.2|grep -c "blue"`
    vs_total=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.10.13.2.1.2|grep -c "F5-BIGIP-LOCAL-MIB"`
    vs_yellow=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.10.13.2.1.2|grep -c "yellow"`
    pool_green=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.5.5.2.1.2|grep -c "green"`
    pool_blue=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.5.5.2.1.2|grep -c "blue"`
    pool_red=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.5.5.2.1.2|grep -c "red"`
    pool_yellow=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.5.5.2.1.2|grep -c "yellow"`
    pool_total=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.5.5.2.1.2|grep -c "F5-BIGIP-LOCAL-MIB"`
    node_blue=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.4.3.2.1.3|grep -c "blue"`
    node_green=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.4.3.2.1.3|grep -c "green"`
    node_red=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.4.3.2.1.3|grep -c "red"`
    node_yellow=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.4.3.2.1.3|grep -c "yellow"`
    node_total=`snmpwalk -v 2c -c $public localhost .1.3.6.1.4.1.3375.2.2.4.3.2.1.3|grep -c "F5-BIGIP-LOCAL-MIB"`
}

function logfilt()
{
    gunzip -c /var/log/ltm.{30..1}.gz > ${path}log.tmp > /dev/null 2>&1
    cat /var/log/ltm >>  ${path}log.tmp
    grep -E "err|crit|alert|emery" ${path}log.tmp > ${path}logfilt.log
    numerr=`cat ${path}logfilt.log | wc -l`
}

function output()
{
    line > ${path}inspection.log
    echo -e "Date:\t\t${datestamp} ${timestamp}" >> ${path}inspection.log
    echo -e "Hostname:\t${hostname}" >> ${path}inspection.log
    echo -e "Platform:\t${platform}" >> ${path}inspection.log
    echo -e "Serial Number:\t${sn}" >> ${path}inspection.log
    echo -e "Version:\t${version}" >> ${path}inspection.log
    echo -e "Run time:\t${uptime}" >> ${path}inspection.log
    echo "" >> ${path}inspection.log
    echo -e "Virtual Server Status:\ttotal ${vs_total}\t\tAvailable ${vs_green}\t\tUnavailable ${vs_yellow}\t\tOffine ${vs_red}\t\tUNknow ${vs_blue}" >> ${path}inspection.log
    echo -e "Pool Status:\t\ttotal ${pool_total}\t\tAvailable ${pool_green}\t\tUnavailable ${pool_yellow}\t\tOffine ${pool_red}\t\tUNknow ${pool_blue}" >> ${path}inspection.log
    echo -e "Node Status:\t\ttotal ${node_total}\t\tAvailable ${node_green}\t\tUnavailable ${node_yellow}\t\tOffine ${node_red}\t\tUNknow ${node_blue}" >> ${path}inspection.log
    echo "" >> ${path}inspection.log
    echo -e "The recent failover time :\t${fstime}" >> ${path}inspection.log
    echo -e "The err log number :\t\t${numerr}" >> ${path}inspection.log
    line >> ${path}inspection.log
}

function backup()
{
    tar zcf ${path}inspection_backup_${datestamp}_${timestamp}.tar.gz `find ${path} -type f` > /dev/null 2>&1
    find $path -type f ! -name "inspection.log" ! -name "inspection_backup_${datestamp}_${timestamp}.tar.gz" ! -name "$0" | xargs rm -f {}
}

function main()
{
    define
    check
    select_version
}
main




本文出自 “菜鸟东” 博客,请务必保留此出处http://radish.blog.51cto.com/5944322/1735267

F5周/月巡检脚本

标签:f5   巡检   

原文地址:http://radish.blog.51cto.com/5944322/1735267

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!