• 使用vsftp与shell实现对进程与服务状态的监控


    先说一下需求吧,公司开发了一款新的产品,新产品嘛,有着不得不出问题的理由,四个云机房,总共三百余台机器,需要实时的监控进程状态,虽然有zabbix来实现,但领导需求是脚本和zabbix一起做,zabbix网上有现成的教程,今天主要说的是shell的实现思路与方式:

    1.使用脚本来进行进程监控,将进程宕掉的具体信息保留,具体的话,就是时间,然后顺带着将其重启。

    2.将每台机器的信息定时汇总到一台机器上,需要考虑到的是时间的一致性。

    3.使用脚本对这些汇总的信息进行遍历,汇总到一个文件下,实现一目了然,因为已经从公司离职了,所以实现效果的图片就截不到了,大体上看出思路就行。

    使用工具:vsftp,shell脚本

    脚本a,实现功能:进程检测,信息生成。部署机器:业务机器。

    #!/bin/bash
    #cms存活检测,如果检测不到cms进程存在,则重启cms服务,并将当前时间和ip写入日志
    ip=`ifconfig ens33|awk 'NR==2{print $2}'|awk -F "[:]" '{print $2}'`
    date=`date`
    cmspid=`ps -ef | grep vpm.jar | grep -v grep | awk '{print $2}'`
    if [ "$cmspid" == "" ];then
    cd /opt/vpm/CMS
    nohup java -jar /opt/vpm/CMS/vpm.jar >/dev/null 2>&1 &
    echo "${date}${ip}cms服务宕停重启" >> /vpmtestlog/5stest/${ip}cmstestlog
    
    fi

    脚本b,实现功能:使用ftp对文件进行上传,发送到日志服务器的固定目录下。部署机器:业务机器。

    #!/bin/bash
    #ftp上报文件脚本
    ftp -v -n 114.114.114.114<<EOF
    user 5stest sihuat123
    binary
    hash
    cd /vpmtestlog/5stest/
    lcd /vpmtestlog/5stest/
    prompt
    mput /vpmtestlog/5stest/*
    close
    bye
    EOF
    rm /vpmtestlog/5stest/*

    脚本c,实现功能:对上报上的文件进行遍历,同时需要对收集信息文件的目录进行清空。部署机器:日志服务器。

    #!/bin/bash
    #遍历各分结点的日志,汇总到一个文件中
    log=`ls /15mintest`
    rm -rf /15mintestlog
    for i in $log
    do
    cd /15mintest
    cat $i >> /15mintestlog
    done

    需要注意的是,收集所有宕停信息的文件是不断追加的,所以需要根据实际需要对该文件进行清空,对时间的一致性要求较高,所以系统内的机器应该同时向一台机器做时间校准,最后,需要注意的是

    配置脚本时,运行时间应该有所差别,监测>上传>遍历,建议时间差为一分钟。最后我的配置是,每30s检测脚本运行一起,每2min日志上传脚本运行一次,每5min对上传上的脚本进行遍历,然后根据需要,可以做两个不同的脚本线:1.异常状态收集,可以在上下班各一次。及时的发现并反馈情况。2.即时状态收集,可以对当前的服务状态进行了解。

    根据每台机器所安装的不同组件,配置不同的定时任务,不同的清空要求即可实现不同的需求。

  • 相关阅读:
    CABasicAnimation 使用
    CABasicAnimation(CAKeyframeAnimation)keypath 取值
    c++的应用领域
    QT 状态机详解 statemachine (转)
    C++默认实参
    String隐式共享
    可重入函数与不可重入函数
    堆和栈的区别(转过无数次的文章)
    Qt Model/View(转)
    C++虚函数和纯虚函数
  • 原文地址:https://www.cnblogs.com/xiaoyuxixi/p/11281489.html
Copyright © 2020-2023  润新知