云平台服务运行情况检测脚本V0.1

1、准备Python3环境

yum groupinstall "Development tools" -y
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
cd /usr/local/software && wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
tar xf Python-3.6.2.tgz
cd Python-3.6.2
./configure -prefix=/usr/local/python -enable-shared
make && make install
ln -s /usr/local/python/bin/python3 /usr/bin/python3

3、在运行Python之前需要配置库:

echo /usr/local/python/lib >> /etc/ld.so.conf.d/local.conf && ldconfig

4、运行演示:
python3 -V
Python 3.6.2

5、升级一下pip
pip3 install --upgrade pip

2、脚本内容 /usr/local/checkall.py

执行方式:

cd /usr/local/

python3 checkall.py

import subprocess as t
import time
import os, sys
import socket
import requests
import redis

# ===============================================================================================================
# pip3 install requests
# pip3 install redis
# ===============================================================================================================
# 地区名称
Area_Name = ‘199测试服务器‘

# 是否需要检查Tomcat2
NeedCheckTomcat2 = False

# 数据库所在的IP
DB_IP = ‘127.0.0.1‘

# WEB所在的IP
WEB_IP = ‘127.0.0.1‘

RedisPort = 6379
NeedCheckPort = {‘MYSQL服务‘: 22066, ‘REDIS服务‘: RedisPort, ‘SSDB服务‘: 8888, ‘NGINX服务‘: 80, ‘ICOMET服务‘: 8000,
                 ‘RABBITMQ服务‘: 4369}

SphinxList = [‘/usr/local/sphinx/etc/csft.conf‘,
              ‘/usr/local/sphinx/etc/csft_member.conf‘,
              ‘/usr/local/sphinx/etc/csft_paper.conf‘,
              ‘/usr/local/sphinx/etc/csft_tk.conf‘,
              ‘/usr/local/sphinx/etc/csft_tk_my.conf‘,
              ‘/usr/local/sphinx/etc/csft_group.conf‘,
              ‘/usr/local/sphinx/etc/csft_my.conf‘,
              ‘/usr/local/sphinx/etc/csft_paper_my.conf‘,
              ‘/usr/local/sphinx/etc/csft_cloud.conf‘,
              ‘/usr/local/sphinx/etc/csft_wkds.conf‘,
              ‘/usr/local/sphinx/etc/csft_publish.conf‘,
              ‘/usr/local/sphinx/etc/csft_publish_resource.conf‘,
              ‘/usr/local/sphinx/etc/csft_publish_paper.conf‘,
              ‘/usr/local/sphinx/etc/csft_publish_wk.conf‘,
              ‘/usr/local/sphinx/etc/csft_zy.conf‘,
              ‘/usr/local/sphinx/etc/csft_news.conf‘,
              ‘/usr/local/sphinx/etc/csft_kyyj.conf‘,
              ‘/usr/local/sphinx/etc/csft_xzt.conf‘,
              ‘/usr/local/sphinx/etc/csft_hd.conf‘,
              ‘/usr/local/sphinx/etc/csft_allpublish.conf‘,
              ‘/usr/local/sphinx/etc/csft_wktostudent.conf‘,
              ‘/usr/local/sphinx/etc/csft_bbs_topic.conf‘,
              ‘/usr/local/sphinx/etc/csft_bbs_post.conf‘,
              ‘/usr/local/sphinx/etc/csft_notice.conf‘,
              ‘/usr/local/sphinx/etc/csft_blog_article.conf‘,
              ‘/usr/local/sphinx/etc/csft_supervise.conf‘,
              ‘/usr/local/sphinx/etc/csft_seach.conf‘
              ]

# ===============================================================================================================
# 检查指定IP的服务端口
def check_port(address, port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(3)
    try:
        s.connect((address, port))
        s.close()
        return True
    except Exception as e:
        s.close()
        return False

# 检查磁盘
def check_disk():
    # 检查是不是存在指定的MOUNT盘
    var = t.getoutput("df -h | cat -n ")
    success = False
    for line in var.split("\n"):
        if ‘/usr/local/tomcat7/webapps/dsideal_yy/html/down‘ in line:
            success = True
    if not success:
        return False
    # 尝试写入文件,是不是正常
    try:
        testFile = ‘/usr/local/tomcat7/webapps/dsideal_yy/html/down/test.txt‘
        with open(testFile, ‘w‘) as data:
            print(time.strftime(‘%Y-%m-%d %H:%M:%S‘, time.localtime(time.time())), file=data)  # 输出默认为sys.stdout
            success = True
        os.remove(testFile)
    except IOError as err:
        success = False
    return success

# 检查服务端口
def check_serviceport():
    for (k, v) in NeedCheckPort.items():
        success = check_port(DB_IP, NeedCheckPort[k])
        if not success:
            return k

# 检查 Tomcat
def check_Tomcat():
    var = t.getoutput("ps -ef | grep tomcat")
    success = False
    for line in var.split("\n"):
        if ‘/usr/local/tomcat7/conf/logging.properties‘ in line:
            success = True

    if not success:
        return False

    # 判断是不是 Tomcat僵死掉
    try:
        requests.get("http://" + WEB_IP + "/dsideal_yy/adminlogin/captchaText", timeout=1)
    except requests.exceptions.ConnectTimeout:
        return False
    except requests.exceptions.Timeout:
        return False

    # 判断验证码是不是能正常生成?
    r = requests.get("http://" + WEB_IP + "/dsideal_yy/adminlogin/captchaText")
    if r.status_code != 200:
        return False
    else:
        # 下载图片
        try:
            r = requests.get("http://" + WEB_IP + "/dsideal_yy/adminlogin/captchaImage?text=" + r.json()[‘text‘])
            with open(‘/usr/local/software/picture.jpg‘, ‘wb‘) as file:
                file.write(r.content)
            # 用完就删除了吧
            os.remove(‘/usr/local/software/picture.jpg‘)
            return True
        except Exception as err:
            print(‘Tomcat检查发现异常:‘ + str(err))
            return False

# 判断 Tomcat2
def check_Tomcat2():
    var = t.getoutput("ps -ef | grep tomcat")
    success = False
    for line in var.split("\n"):
        if ‘/usr/local/tomcat7_2/conf/logging.properties‘ in line:
            success = True
    return success

# 检查是否存在检查挂盘定时任务
def check_disk_crontab():
    file = open(‘/etc/crontab‘)
    success = False
    for line in file:
        # 每分钟进行检查
        if ‘* * * * * root  /usr/local/checkdisk.sh > /dev/null 2>&1‘ in line:
            success = True
    file.close()
    return success

# 检查磁盘的定时脚本是不是与启动脚本中的挂载方式一致
def check_diskShAndRcLocal():
    typeA = ‘‘
    file = open(‘/usr/local/checkdisk.sh‘)
    for line in file:
        if ‘sshfs -o nonempty,allow_other,reconnect‘ in line:
            typeA = ‘ssh‘
        if ‘mount -t cifs -o‘ in line:
            typeA = ‘samba‘
    file.close()

    typeB = ‘‘
    file = open(‘/etc/rc.d/rc.local‘)
    for line in file:
        if ‘sshfs -o nonempty,allow_other,reconnect‘ in line:
            typeB = ‘ssh‘
        if ‘mount -t cifs -o‘ in line:
            typeB = ‘samba‘
    file.close()

    if typeA == ‘ssh‘:
        print("########################################################################################")
        print(‘########发现现在在使用sshfs方式挂盘,如果可能 ,还是建议使用samba的方式进行挂盘!########‘)
        print("########################################################################################")
    if typeA == typeB and typeA != ‘‘:
        return True
    else:
        return False

# 检查处理程序的状态
def checkWinFormExist():
    try:
        r = redis.Redis(host=DB_IP, port=RedisPort, db=0)
        # r.set(‘WinForm_GetSwf‘,11111)
        ret = r.get(‘WinForm_GetSwf‘)
        if ret is None:
            return False
        else:
            return True
    except Exception as err:
        print(‘Redis访问异常:‘ + str(err))
        return False

# 检查sphinx服务状态
def checkSphinx():
    for c in SphinxList:
        var = t.getoutput(‘ps -ef | grep ‘ + c + ‘ | grep -v grep‘)
        n = 0
        for line in var.split("\n"):
            n = n + 1

        if n == 0:
            print(‘Sphinx检查失败:‘ + c)
            return c

# 检查sphinx 定时增量索引的配置是否正确
def checkSphinxInc():
    SphinxShList = []
    for c in SphinxList:
        a = c.replace(‘.conf‘, ‘.sh‘).replace(‘/usr/local/sphinx/etc/‘, ‘/usr/local/sphinx_sh/‘)
        SphinxShList.append(a)

    for c in SphinxShList:
        Found = False
        with open(‘/etc/crontab‘, ‘r‘) as f:
            for line in f:
                if c in line:
                    Found = True
                    break
                else:
                    Found = False
            if not Found:
                return c

# 检查sphinx 在自启动脚本中是不是存在
def checkSphinxRcLocal():
    for c in SphinxList:
        with open(‘/etc/rc.d/rc.local‘, ‘r‘) as f:
            Found = False
            for line in f:
                if c in line:
                    Found = True
                    break
                else:
                    Found = False
            if not Found:
                return c

if __name__ == "__main__":
    # 检查磁盘
    if not check_disk():
        print(‘1、磁盘检查失败,请马上处理!‘)
        sys.exit()
    else:
        print(‘1、磁盘检查成功!‘)

    # 检查Tomcat
    if not check_Tomcat():
        print(‘2、Tomcat检查失败,请马上处理!‘)
        sys.exit()
    else:
        print(‘2、Tomcat检查成功!‘)

    # 检查Tomcat2,各地区不一样,有的需要进行检查
    if NeedCheckTomcat2:
        if not check_Tomcat2():
            print(‘3、Tomcat_2检查失败,请马上处理!‘)
            sys.exit()
        else:
            print(‘3、Tomcat_2检查成功!‘)

    # 检查端口
    ret = check_serviceport()
    if ret != None:
        print(‘4、‘ + ret + ‘端口检查失败,请马上处理!‘)
        sys.exit()
    else:
        print(‘4、端口检查成功!‘)

    # 检查定时磁盘检查
    if not check_disk_crontab():
        print(‘5、磁盘定时探测服务检查失败,请马上处理!‘)
        sys.exit()
    else:
        print(‘5、磁盘定时探测服务检查成功!‘)

    # 检查磁盘探测程序是不是与启动脚本中的挂载磁盘方式一致?
    if not check_diskShAndRcLocal():
        print(‘6、磁盘挂载方式不一致,请马上处理!‘)
        sys.exit()
    else:
        print(‘6、磁盘挂载方式一致性检查成功!‘)

    # 检查处理程序的状态
    if not checkWinFormExist():
        print(‘7、处理程序没有正确开启,请马上处理!‘)
        sys.exit()
    else:
        print(‘7、处理程序检查成功!‘)

    # 检查Sphinx服务状态
    ret = checkSphinx()
    if ret != None:
        print(‘8、检查Sphinx失败,‘ + ret + ‘,请马上处理!‘)
        sys.exit()
    else:
        print(‘8、检查Sphinx成功完成!‘)

    # 检查Sphinx增量脚本的编写
    ret = checkSphinxInc()
    if ret != None:
        print(‘9、检查Sphinx增量索引失败,‘ + ret + ‘,请马上处理!‘)
        sys.exit()
    else:
        print(‘9、检查Sphinx增量索引完成!‘)

        # 检查Sphinx自启动脚本的编写
        ret = checkSphinxRcLocal()
        if ret != None:
            print(‘10、检查Sphinx自启动脚本失败,‘ + ret + ‘,请马上处理!文件位置:/etc/crontab‘)
            sys.exit()
        else:
            print(‘10、检查Sphinx自启动脚本完成!‘)

    print(‘恭喜,所有检查成功完成!没有发现异常!‘)
时间: 2024-10-10 15:30:05

云平台服务运行情况检测脚本V0.1的相关文章

Linux中web服务运行情况的方法

监控一般通过脚本实现,使用定时任务定期执行检测. 1.端口 本地:ss,netstat,lsof 远程:telnet,namp,nc 2.本地进程数 例如: lsof -i:80|wc -l ps -ef|grep nginx|wc -l nmap 192.168.220.139 -p 80|grep open|wc -l 3.查看http返回码 返回的是200就正常 [[email protected] ~]# curl -I -s -w "%{http_code}" -o /dev

从CMDB查询云平台组件或者IP简单脚本

#!/bin/bash#author xiaoweige#todo: ip -- > ingredient or ingredient -- > ip #todo: get the ip of the given ingredientfunction ingredient_ip() {#todo: get the ip of the ingredient given mysql -uroot -pengine -e "select * from ipandingredient.ipa

多备份:云端数据物流平台为企业提供云备份服务(通过增值服务盈利,数据备份相当于买保险)

在第六届云计算大会召开之际,云计算创新项目评选也在如火如荼展开,今天我们给大家介绍深圳木浪科技公司是国内首家从事基于互联网的云备份行业,团队成员都是来自腾讯.盛大.迅雷.1号店等知名IT公司的技术骨干. 云计算和大数据的产业顶级盛会,“ 第六届中国云计算大会”将于2014年5月20-23日在北京国家会议中心隆重召开.“ 全国云计算大数据创新项目评选”于2014年3月正式启动.本次项目评选由中国电子学会主办,中国电子学会云计算专家委员会及中国云计算技术与产业联盟共同承办, CSDN协办.该活动最终

智慧能源物联网云平台方案

多比智慧能源云平台以能源管理智能化为核心, 通过对各种耗能设备(如照明系统,动力系统,电梯系统,空调系统等),各种能源(电.水.天然气.油.煤.蒸汽.压缩空气.工业氮气等)实时采集.动态监测.能耗分析.成本核算.绩效考核和报表发布等功能,实现企业能源管理精细化,促进节能降耗.以有效手段实现工业园区.学校/医院.公共建筑的安全.有序.节约的使用能源. 智慧能源云平台-能耗分析 概要显示当月.当年用能情况,并与往年同期用能进行对比,掌握用能趋势.实时动态监测企业当前用电功率.通过设置每日用能的计划值

安犬漏洞扫描云平台整合云盾防护功能

国庆之前,安犬漏洞扫描云平台将迎来一次重大更新.这次更新对于安犬平台非常重要,因为这意味着安犬漏洞扫描云平台从过去的检测扫描进化成防御防护与扫描一体的全面型安全平台. 历史更新版本功能: (点击蓝字即可进入版本更新说明 2.0.5更新说明-多语言版本更新 2.0.6更新说明-扫描模块加载Acunetix引擎 2.0.7更新说明-漏洞推送功能上线 2.0.8更新说明-定制API模块 OEM部分功能整合 2.0.9更新说明-域名绑定与资产发现 2.0.10更新说明-界面改版,友情链接及扫描测试 2.

邮件归档云平台

当前,企业和机构已经意识到需要对电子文档进行监管,实现对相关法规的遵从,满足法律证据查找需求,快速查找和获取电子邮件的历史数据,这些都需要电子邮件的归档存储和获取能力. MessageSolution云归档系统是基于云平台服务商在法规遵从和用户日益增长的归档需求下,为云平台服务商提供的一套整体解决方案.运营商利用已有的运维平台,让使用云平台服务的企业用户能够享受到最专业的归档功能.企业用户能够长期保留数据,即时查找所需邮件,恢复历史邮件数据.安全存储邮件并能满足法规遵从和监督管理等方面的要求.

新手的云计算学习路线,云平台入门必备(干货整理)

云计算作为信息技术领域的一种创新应用模式,自其诞生以来一直备受关注.由于其具备低成本.弹性调度.便捷易用.高可靠性.按需服务等特点,近年来被看作是新一代信息技术变革和商业模式变革的核心. 近几年云计算的深入发展和加速落地,目前云平台已经成为更多行业用户的基础环境和业务承载平台,越来越多的行业客户也认识到云计算的价值.而云平台最大的价值在于改变了传统的资源交付模式,实现了IT服务从资源到服务的转型:其中云管平台更起到了核心作用.一个好的云管平台是贴合用户实际需求的,它在提升IT资源利用率的基础上,

YY游戏私有云平台实践 (转BOSS的InfoQ发文 )

作者 风河 发布于 2016年1月13日 | 讨论 编者按:YY游戏的页游早在2013年就在云平台上运行,其Cloud 1.0已经支撑几十万的同时在线用户.日前,YY游戏云平台进行了Cloud 2.0的改造,其主要目标是支撑端游,同时也将继续服务页游.手游的运营. 这次架构升级是一次完全重构——抛弃OpenStack,网络.计算.存储业务都是自己实现.作为YY游戏云平台的负责人,风河在本文里主要描述了YY游戏需要建设一个什么样的云平台,以及如何建设这个云平台的. YY游戏的业务需求变迁 YY游戏

Discuz! X3.1直接进入云平台列表的方法

Discuz! X3.1已经改版,后台不能直接进云平台列表,不方便操作,操作云平台服务时,大家可以这样操作: 1.登录后台:2.访问域名进入云平台列表http://你域名/admin.php?frames=yes&action=cloud&operation=applist 1.登录后台:2.访问域名进入开通云平台页面 :http://你域名/admin.php?action=cloud&operation=open