Ansible自动化{shell+cron}巡检
巡检背景:
  • 在不通过zabbix、prometheus、grafana、等监控系统工具的使用下,对项目集群中的节点进行巡检;
巡检方式:

环境:linux

工具:shell ,cron , command , ansible

  • 功能:利用脚本+定时任务+管理工具 实现对服务器节点巡检
  • 层面:半自动化{脚本化}
简要说明:
  • ansibleserver:xunjian.sh #ansible主机执行巡检的脚本
  • nodeserver:data.sh df.sh cpu.sh #所有管理主机巡检的脚本
  • {巡检测试完成后自行添加定时任务实现自动巡检}

巡检指标:{时间data、负载IO、内存CPU、磁盘disk< / ; /data/ >}

使用:ansible自动化管理工具 + shell脚本 + cron定时任务 实现对服务器脚本自动化‘简版’巡检;

说明:可根据自身情况、环境配置、需求情况来更新shell;

简述:在具备对linux基本命令、shell脚本基础语法、ansible的基本使用、定时任务配置、的掌握下。准备装有ansible的服务器、检查定时任务是否开启、对ansible下的hosts配置文件添加所需管理的节点信息。通常路径为 /etc/ansible/hosts,根据参考脚本更换对应配置参数,也可自行优化,测试成功后可正式使用。

shell脚本

#data.sh

#!/bin/bash
echo '总大小:'`df -h | grep -w '/data1' | awk NR==1'{print $2}'` | tr '\n' ' ' 
echo '已使用:'`df -h | grep -w '/data1' | awk NR==1'{print $3}'` | tr '\n' ' '
echo '未使用:'`df -h | grep -w '/data1' | awk NR==1'{print $4}'` | tr '\n' ' '
echo '使用率:'`df -h | grep -w '/data1' | awk NR==1'{print $5}'` | tr '\n' ' '
echo '查询点:'`df -h | grep -w '/data1' | awk NR==1'{print $6}'` > /var/log/data.log
if [ $? -eq 0 ];then
	cat /var/log/data.log
	echo "success"
        sleep 2
        echo "exit~~~"
        sleep 1
        exit
        else
        echo "巡查异常,请检查后重试!"
        exit
fi

-------------------------------------------------------------------------------------

#df.sh

#!/bin/bash

echo '总大小:'`df -h | grep '/dev/mapper/centos-root' | awk '{print $2}'` | tr '\n' ' ' 
echo '已使用:'`df -h | grep '/dev/mapper/centos-root' | awk '{print $3}'` | tr '\n' ' '
echo '未使用:'`df -h | grep '/dev/mapper/centos-root' | awk '{print $4}'` | tr '\n' ' '
echo '使用率:'`df -h | grep '/dev/mapper/centos-root' | awk '{print $5}'` | tr '\n' ' '
echo '查询点:'`df -h | grep '/dev/mapper/centos-root' | awk '{print $6}'` > /var/log/df.log
if [ $? -eq 0 ];then
	cat /var/log/df.log
	echo "success"
        sleep 2
        echo "exit~~~"
        sleep 1
        exit
        else
        echo "巡查异常,请检查后重试!"
        exit
fi

-------------------------------------------------------------------------------------

#cpu.sh

#!/bin/bash

echo '巡查时间:'`mpstat | awk NR==4'{print $1}'` | tr '\n' ' '
echo 'CPU:'`mpstat | awk NR==4'{print $3}'` | tr '\n' ' '
echo '平均使用率:'`mpstat | awk NR==4'{print $4}'` > /var/log/cpu.log
sleep 1
if [ $? = 0 ];then
	cat /var/log/cpu.log
	echo "success"
	sleep 2
	echo "exit~~~"
	sleep 1
	exit
	else
	echo "巡查异常,请检查后重试!"
	exit
fi

------------------------------------------------------------------------------------

#xunjian.sh

#!/bin/bash
#本脚本仅限于使用ansible工具来对配置好的server进行巡查;
#可持续完善,现包含查时间同步信息、节点根目录系统盘使用情况、内存使用率、负载情况;

sleep 1
echo "*********开始巡检~~~*********"
echo "过程约1min左右,请等待巡检结束~"
echo ""
#-----------------------------巡查服务器节点时间同步---------------------------
dxl=/usr/local/xuncha/date-xc.log
newtime=`date`

echo "" >> $dxl
echo "" >> $dxl
echo "" >> $dxl
echo "本次巡检时间为: $newtime" >> $dxl
echo "--------------------------" >> $dxl
command -v ansible >&/dev/null &
if [ $? -eq 0 ];then
	echo "以ansible配置的hosts文件为基准对节点进行巡查!" >> $dxl
fi
echo "" >> $dxl
echo "本次巡查节点时间如下" >> $dxl
#使用ansible对配置分组所有节点进行时间巡查
ansiblecommandpath=`which ansible`
$ansiblecommandpath all -m shell -a "date" >> $dxl
#现加入配置的节点共计65台,/ansible/hosts下,后续可按情况调整
hostsservernum=`$ansiblecommandpath all -m shell -a "date" | grep -w 'SUCCESS' | wc -l`  
if [[ $hostsservernum -eq 65 ]];then
	echo "本次巡查成功节点共65台,已完成时间同步!" >> $dxl
	else
	echo "有各别服务器检查时间失败,请自行排查!" >> $dxl
fi
echo "" >> $dxl
echo "***如有服务器时间没同步,或者其它问题等请及时解决!***" >>$dxl
echo "---------------------------" >>$dxl
#-----------------------------------------------------------------------------
echo "*---------巡检中~~~"
echo ""
#---------------------------巡查服务器磁盘空间使用情况------------------------
#查询根目录
kxl=/usr/local/xuncha/disk-xc.log
echo "本次巡检时间为: $newtime" >> $kxl
echo "--------------------------" >> $kxl
$ansiblecommandpath all -m shell -a "sh /usr/local/xuncha/df.sh" >>$kxl
#查询数据盘
dxl=/usr/local/xuncha/data-xc.log
echo "本次巡检时间为: $newtime" >> $dxl
echo "--------------------------" >> $dxl
$ansiblecommandpath all -m shell -a "sh /usr/local/xuncha/data.sh" >>$dxl
#--------------------------巡查IO负载情况-------------------------------------
iol=/usr/local/xuncha/io-xc.log
echo "本次巡检时间为: $newtime" >> $iol
echo "--------------------------" >> $iol
$ansiblecommandpath all -m shell -a "uptime" >> $iol
fzl=/usr/local/xuncha/iofz-xc.log
echo "本次巡检时间为: $newtime" >> $fzl
echo "--------------------------" >> $fzl
$ansiblecommandpath all -m shell -a "uptime | awk '{print \$NF}'" >> $fzl

#--------------------------巡查CPU使用情况-------------------------------------
xcl=/usr/local/xuncha/cpu-xc.log
echo "本次巡检时间为: $newtime" >> $xcl
echo "--------------------------" >> $xcl
$ansiblecommandpath all -m shell -a "sh /usr/local/xuncha/cpu.sh" >> $xcl
echo "*********巡检完成~~~*********"
sleep 1
echo "请到对应日志记录文件中查看巡查结果!"
exit