云平台服务运行情况检测脚本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 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的更多相关文章
- 【Discuz】云平台服务:出了点小错,由于站点ID/通信KEY等关键信息丢失导致Discuz!云平台服务出现异常
提示信息 出了点小错,由于站点ID/通信KEY等关键信息丢失导致Discuz!云平台服务出现异常 版本X3.2.20160601 解决方案 Step1.修改云平台开通状态为未开通状态 Step2.访问 ...
- Linux中web服务运行情况的方法
监控一般通过脚本实现,使用定时任务定期执行检测. 1.端口 本地:ss,netstat,lsof 远程:telnet,namp,nc 2.本地进程数 例如: lsof -i:80|wc -l ps - ...
- 从CMDB查询云平台组件或者IP简单脚本
#!/bin/bash#author xiaoweige#todo: ip -- > ingredient or ingredient -- > ip #todo: get the ip ...
- 基于阿里云容器服务用docker容器运行ASP.NET 5示例程序
小试阿里云容器服务 之后,接下来有一个挡不住的小试冲动--用docker容器运行程序.首先想到的程序是 ASP.NET 5示例程序,于是参考msdn博客中的这篇博文 Running ASP.NET 5 ...
- Kubernetes容器云平台建设实践
[51CTO.com原创稿件]Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署.大规模可伸缩.应用容器化管理.伴随着云原生技术的迅速崛起,如今Kubernetes 事实上已经 ...
- YY游戏私有云平台实践 (转自InfoQ )
作者 风河 发布于 2016年1月13日 | 讨论 编者按:YY游戏的页游早在2013年就在云平台上运行,其Cloud 1.0已经支撑几十万的同时在线用户.日前,YY游戏云平台进行了Cloud 2 ...
- Windows操作系统远程Linux服务器传输文件方法(以EasyDSS云平台、EasyNVR上传部署为例)
本文转自博客:https://blog.csdn.net/black_3717/article/details/79769406 问题背景: 之前给客户部署我们一款EasyDSS云平台(配合EasyN ...
- SAP云平台架构概述
在我们开始SAP云平台的架构之旅之前,让我们先看看SAP已经发布的一些其他云产品.这些云产品方案可以分为公有云和私有云两种. SAP公有云解决方案见下图最右侧,比较著名的有SAP SuccessFac ...
- Discuz! X3.1直接进入云平台列表的方法
Discuz! X3.1已经改版,后台不能直接进云平台列表,不方便操作,操作云平台服务时,大家可以这样操作: 1.登录后台:2.访问域名进入云平台列表http://你域名/admin.php?fram ...
随机推荐
- C#的internal访问修饰符
文章:C# 访问修饰符internal的访问范围误区释疑 internal访问修饰符限定的类,只能在本程序集中访问.
- penLDAP学习笔记
LDAP协议 目录是一组具有类似属性.以一定逻辑和层次组合的信息.常见的例子是通讯簿,由以字母顺序排列的名字.地址和电话号码组成.目录服务是一种在分布式环境中发现目标的方法.目录具有两个主要组成部分: ...
- PokeCats开发者日志(七)
现在是PokeCats游戏开发的第十二天的晚上,很不幸提交到的三个平台(360开放平台,腾讯开放平台,华为应用市场)都没通过,著作权申请也被打回来了. 心中一万只草泥马在奔腾. 得了,看来 ...
- RxJS & Angular
RxJS & Angular https://www.learnrxjs.io/ https://rxjs-cn.github.io/learn-rxjs-operators/ https:/ ...
- Nginx 学习笔记之安装篇
在windows下安装Nginx其实非常简单,只需如下几个步骤: 1. 在Nginx官网下载相应版本的安装程序,上面有最新版.稳定版等各种版本,正式运营的项目建议下载最新的稳定版 2.将下载后的压缩包 ...
- Java IO 之 File 的创建、重命名与遍历
File表示存储设备上的一个文件或目录,使用方式查看API即可,比较简单 package org.zln.io.file; import java.io.File; /** * Created by ...
- 【bzoj2326】[HNOI2011]数学作业 矩阵乘法
题目描述 题解 矩阵乘法 考虑把相同位数的数放到一起处理: 设有$k$位的数为$[l,r]$,那么枚举从大到小的第$i$个数(即枚举$r-i+1$),考虑其对$Concatenate(l..r)$的贡 ...
- AtCoder 神题汇总
记录平时打 AtCoder 比赛时遇到的一些神题. Tenka1 Programmer Contest 2019 D Three Colors 题目大意 有 $n$ 个正整数 $a_1, a_2,\d ...
- 洛谷P4592 [TJOI2018]异或 【可持久化trie树】
题目链接 BZOJ4592 题解 可持久化trie树裸题 写完就A了 #include<algorithm> #include<iostream> #include<cs ...
- BZOJ day1
十题击破 1051108811921432195119682242245624632761