zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux集群和自动化维2.6.3 监控类脚本

2023-09-11 14:16:02 时间


在生产环境下,服务器的稳定情况会直接影响公司的生意和信誉,可见其有多重要。所以,我们需要即时掌握服务器的状态,我们一般会在机房部署Nagios-Server作为监控程序,然后用Shell和Python根据业务需求开发监控插件,实时监控线上业务。

1. Nginx负载均衡服务器上监控Nginx进程的脚本

由于笔者公司电子商务业务网站前端的Load Balance用到了Nginx+Keepalived架构,而Keepalived无法进行Nginx服务的实时切换,所以设置了一个监控脚本nginx_pid.sh,每隔5秒钟就监控一次Nginx的运行状态(也可以由Superviored守护进程托管),如果发现有问题就关闭本机的Keepalived程序,让VIP切换到从Nginx负载均衡器上。在对线上环境进行操作的时候,人为地重启主Master的Nginx机器,从Nginx机器在很短的时间内就接管了VIP地址,即网站的实际内网地址(此内网地址可以通过防火墙映射为公网IP),进一步证实了此脚本的有效性,脚本内容如下(此脚本在CentOS 5.8/6.4 x86_64下均已测试通过):

#!/bin/bash

while :

do

    nginxpid=`ps -C nginx --no-header | wc -l`

    if [ $nginxpid -eq 0 ];then

        ulimit -SHn 65535

        /usr/local/nginx/sbin/nginx

        sleep 5

        if [ $nginxpid -eq 0 ];then

        /etc/init.d/keepalived stop

    fi

 fi

 sleep 5

done

2.系统文件打开数监测脚本

这个脚本比较方便,可用来查看Nginx进程下最大文件打开数,脚本代码如下(此脚本在CentOS 5.8/6.4 x86_64、Amazon Linux AMI x86_64下均已测试通过):

#!/bin/bash

for pid in `ps aux |grep nginx |grep -v grep|awk {print $2}`

do

cat /proc/${pid}/limits | grep Max open files

done

脚本的运行结果如下所示:

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

Max open files            65535                65535                files    

3.监测MySQL主从复制是否同步

笔者有不少基于公网类型的网站(没有硬件防火墙,直接置于IDC机房)采用的都是MySQL主从架构,从机主要起备份数据库和冷备份的作用,虽然从机宕机了问题不大,但也会影响到数据的备份工作;这样的网站有数十个,如果逐个手动检查,每天都要花费不少时间,所以也用了脚本监控。

脚本设计思路:

1)此脚本应该能适应各种各样不同的内外网环境,即IP不同的环境。

2)让脚本顺便也监控下MySQL是否正常运行。

3)Slave机器的IO和SQL状态都必须为YES,缺一不可,这里用到了多重条件判断-a。

脚本内容如下所示(此脚本在CentOS 5.8 x86_64下已测试通过):

#!/bin/bash

#check MySQL_Slave Status

#crontab time 00:10

MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ {print $4}`

MYSQLIP=`ifconfig eth0|grep "inet addr" | awk -F[:" "]+ {print $4}`

STATUS=$(/usr/local/webserver/mysql/bin/mysql -u yuhongchun -pyuhongchun101 -S /tmp/mysql.sock -e "show slave status\G" | grep -i "running")

IO_env=`echo  $STATUS | grep IO | awk  {print $2}`

SQL_env=`echo $STATUS | grep SQL | awk  {print $2}`

 

 

if [ "$MYSQLPORT" == "3306" ]

then

    echo "mysql is running"

else

    mail -s "warn!server: $MYSQLIP mysql is down" yuhongchun027@163.com

fi

 

if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]

then

    echo "Slave is running!"

else

    echo "#######  $date  #########" /data/data/check_mysql_slave.log

    echo "Slave is not running!" /data/data/check_mysql_slave.log

    mail -s "warn! $MySQLIP_replicate_error" yuhongchun027@163.com /data/data/check_mysql_slave.log

fi

建议每10分钟运行一次,脚本如下:

*/10 * * * * root /bin/sh /root/mysql_slave.sh

要记得在每台MySQL从机上分配一个yuhongchun的用户,权限大些也没关系,只限定在本地运行,脚本如下所示:

grant all privileges on *.* to "yuhongchun"@"127.0.0.1" identified by "yuhongchun101";

grant all privileges on *.* to "yuhongchun"@"localhost" identified by "yuhongchun101";

4.监控Python程序是否正常运行

需求比较简单,主要是监控业务进程rsync_redis.py是否正常运行,有没有发生crash的情况。另外,建议将类似于rsync_redis.py的重要业务进程交由Superviored守护进程托管。此脚本内容如下所示(此脚本在Amazon Linux AMI x86_64下已测试通过):

#!/bin/bash

sync_redis_status=`ps aux | grep sync_redis.py | grep -v grep | wc -l `

if [ ${sync_redis_status} != 1 ]; then

    echo "Critical! sync_redis is Died"

    exit 2

else

    echo "OK! sync_redis is Alive"

    exit 0

fi


python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解) 上一篇已经给大家都介绍过了流程类接口关联,但是由于博客的登录机制改变,所以没有办法给小伙伴们实战演练一下,那么这篇就按照上一篇计划的用jenkins来给小伙伴们演示一下流程类接口的封装和调用,其实很简单,就是用上一篇和前边这篇传送门的代码稍稍修改即可。不知道你自己练习了么,如果练习了,可以看看和我有什么不同,没练习的看看自己思路和我有啥不一样。好了废话少说进入主题
python接口自动化(三十五)-封装与调用--流程类接口关联(详解) 流程相关的接口,主要用 session 关联,如果写成函数(如上篇),s 参数每个函数都要带,每个函数多个参数,这时候封装成类会更方便。在这里我们还是以博客园为例,带着小伙伴们实践一下。
【Dataphin智能运维】智能基线,自动化预警代替人工监控 DataphinV3.6版本全新上线智能运维模块,支持基线监控和调度限流功能。基线监控能够快速捕捉导致基线上的任务无法按时完成的异常情况并提前预警,保障复杂依赖场景下重要数据能在预期时间内顺利产出,帮助您降低人工配置成本、提升监控及时性和准确性、避免无效报警,运维人员的好帮手,管理者的福音!
zabbix自动化监控---自动注册机制(二十三) zabbix自动监控之自动注册 1.自动注册介绍 zabbix自动发现的效率非常慢,每次自动发现的时候都需要对所有的主机进行扫描,也类似与zabbix被动模式,每次都需要向机器进行一次探测,比如这次某个主机没有存在,下次上线了又要重新扫描一次,效率非常低下。 而zabbix自动注册的原理就类似主动模式,每次都是由zabbix-agent主动去向zabbix-server说我上线了,需要加入监控,这时zabbix-server同意后立马就加入监控了,这个效率是非常高的 zabbix自动注册只需要配置四个地方即可生效
zabbix自动化监控---自动发现机制(二十二) zabbix自动监控之自动发现 1.自动发现介绍 当我们有上千台主机都需要加监控的时候用自动发现会非常方便,只需要我们创建一个自动发现规则,设置自动发现的范围,在根据设置的动作就可以将已经安装好agent的Linux服务器自动的添加到监控上
基于Tag的自动化监控方案 简介: 关键词: 云监控,Tag,分组,应用分组,自动监控,redis监控,cloudmonitor-group,自动发现 随着企业云资产越来越多,每天生产销毁变更的资源也不在少数,企业用户对这些资产的管控难度也越来越大,尤其是监控领域。