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 zxvf Python-3.6..tgz
cd Python-3.6.
./configure -prefix=/usr/local/python -enable-shared
make && make install
ln -s /usr/local/python/bin/python3 /usr/bin/python3 、在运行Python之前需要配置库: echo /usr/local/python/lib >> /etc/ld.so.conf.d/local.conf && ldconfig 、运行演示:
python3 -V
Python 3.6. 、升级一下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 =
NeedCheckPort = {'MYSQL服务': , 'REDIS服务': RedisPort, 'SSDB服务': , 'NGINX服务': , 'ICOMET服务': ,
'RABBITMQ服务': } 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()
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=)
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 != :
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=)
# r.set('WinForm_GetSwf',)
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 =
for line in var.split("\n"):
n = n + if n == :
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('恭喜,所有检查成功完成!没有发现异常!')

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

  1. 【Discuz】云平台服务:出了点小错,由于站点ID/通信KEY等关键信息丢失导致Discuz!云平台服务出现异常

    提示信息 出了点小错,由于站点ID/通信KEY等关键信息丢失导致Discuz!云平台服务出现异常 版本X3.2.20160601 解决方案 Step1.修改云平台开通状态为未开通状态 Step2.访问 ...

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

    监控一般通过脚本实现,使用定时任务定期执行检测. 1.端口 本地:ss,netstat,lsof 远程:telnet,namp,nc 2.本地进程数 例如: lsof -i:80|wc -l ps - ...

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

    #!/bin/bash#author xiaoweige#todo: ip -- > ingredient or ingredient -- > ip #todo: get the ip ...

  4. 基于阿里云容器服务用docker容器运行ASP.NET 5示例程序

    小试阿里云容器服务 之后,接下来有一个挡不住的小试冲动--用docker容器运行程序.首先想到的程序是 ASP.NET 5示例程序,于是参考msdn博客中的这篇博文 Running ASP.NET 5 ...

  5. Kubernetes容器云平台建设实践

    [51CTO.com原创稿件]Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署.大规模可伸缩.应用容器化管理.伴随着云原生技术的迅速崛起,如今Kubernetes 事实上已经 ...

  6. YY游戏私有云平台实践 (转自InfoQ )

    作者 风河 发布于 2016年1月13日 | 讨论   编者按:YY游戏的页游早在2013年就在云平台上运行,其Cloud 1.0已经支撑几十万的同时在线用户.日前,YY游戏云平台进行了Cloud 2 ...

  7. Windows操作系统远程Linux服务器传输文件方法(以EasyDSS云平台、EasyNVR上传部署为例)

    本文转自博客:https://blog.csdn.net/black_3717/article/details/79769406 问题背景: 之前给客户部署我们一款EasyDSS云平台(配合EasyN ...

  8. SAP云平台架构概述

    在我们开始SAP云平台的架构之旅之前,让我们先看看SAP已经发布的一些其他云产品.这些云产品方案可以分为公有云和私有云两种. SAP公有云解决方案见下图最右侧,比较著名的有SAP SuccessFac ...

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

    Discuz! X3.1已经改版,后台不能直接进云平台列表,不方便操作,操作云平台服务时,大家可以这样操作: 1.登录后台:2.访问域名进入云平台列表http://你域名/admin.php?fram ...

随机推荐

  1. 使用PHP静态变量当缓存的方法

    下面这个PHP的代码实例,功能是帮助用户重置密码,requestResetPassword是接收用户重置密码的请求并且做了相应的检查.为了更好的复用性,我将重置密码的操作单独分配到一个新的resetP ...

  2. [剑指Offer] 14.链表中倒数第k个结点

    [思路]利用两个相隔为k-1个结点的指针进行遍历,当后一个指针移到末尾时,前一个指针就是要求的结点. /* struct ListNode { int val; struct ListNode *ne ...

  3. 解决IIS的Server Application Error

    问题描述一下: Server Application ErrorThe server has encountered an error while loading an application dur ...

  4. CSS clear both清除浮动总结

    我们知道有时候使用了CSS float浮动,会产生CSS浮动,这个时候就需要清理浮动,我们就用clear样式属性即可实现. 接下来我们来认识与学习CSS clear知识与用法. clear清除浮动目录 ...

  5. hdu 1249 三角形 (递推)

    三角形 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  6. 【题解】NOIP2016愤怒的小鸟

    一眼n<=18状压dp……方程什么的都很显然,枚举两只小鸟,再将这条抛物线上的小鸟抓出来就好啦.只是这样O(n^3)的dp必然是要TLE的,我一开始这样交上去显然跑得巨慢无比,后来转念一想:面对 ...

  7. [CQOI2012]局部极小值

    题目链接 注意到\(4\times 7\)的矩阵的局部极小值最多只有8个,可以状压. 设\(f[i][sta]\)表示从小到大填数,当前填到\(i\),极小值的填充状态为\(sta\)的方案数. 考虑 ...

  8. [洛谷P1120]小木棍 [数据加强版]

    题目大意:有一些同样长的木棍,被切割成几段(长$\leqslant$50).给出每段小木棍的长度,找出原始木棍的最小可能长度. 题解:dfs C++ Code: #include<cstdio& ...

  9. NAS星云链 入门之从零开发第一个DAPP

    应该有很多小伙伴和我一样,一直想去入手学习区块链,但是总无从下手,有些概念感觉理解了,有感觉没理解.其实这都是“没实践”的锅. 所谓看十遍不如想一遍,想一遍不如做一遍.这不最近星云链nebulas正有 ...

  10. Idea 怎么远程debug

    注意的问题:远程debug别人的服务器只能开一个debug,所以当你的同事比你先远程debug同一台服务器时,你应该报Error running 某某ip地址 .unable to open debu ...