python自动化运维,当然指的是用python语言调用linux命令的一个过程,本文先以最为简单的方式,给大家展示一下基本的过程
场景:执行python命令,使tomcat服务一直在线
首先,我们需要知道的是,监测tomcat在线的方式有很多,我们以8080端口在线为准,监视tomcat的服务情况
[root@localhost proc]# ss -ntl | grep 8080
LISTEN 0 100 :::8080 :::*
访问网址存在
首先,我们需要知道,tomcat挂掉的情况之一是8080端口不在
在此模拟tomcat挂掉的情况
[root@localhost bin]# ./shutdown.sh
Using CATALINA_BASE: /usr/local/apache-tomcat-8.5.35
Using CATALINA_HOME: /usr/local/apache-tomcat-8.5.35
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.35/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/apache-tomcat-8.5.35/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.35/bin/tomcat-juli.jar
[root@localhost bin]# ss -ntl | grep 8080
[root@localhost bin]#
在tomcat挂掉之后,执行“ss -ntl | grep 8080”没有任何端口显示(模拟线上服务挂掉)
此时,我们需要重启tomcat服务
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/apache-tomcat-8.5.35
Using CATALINA_HOME: /usr/local/apache-tomcat-8.5.35
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.35/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/apache-tomcat-8.5.35/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.35/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# ss -ntl | grep 8080
LISTEN 0 100 :::8080 :::*
执行后,tomcat服务端口在线,tomcat服务重启成功
上面过程就是我们手动维护的tomcat服务器的过程,这个过程虽然简单,但是,基本就是线上环境的会面临的问题,唯一的问题是线上环境可能存在着更多的不确定因素,本文不展开叙述。
那么上述服务从挂掉到启动,实则是一个对8080端口监听的过程分析。
现在我们以python来解决问题。(shell脚本也可以,不过不是本文重点)
需要使用到的命令
[root@localhost bin]# ss -ntl | grep 8080
[root@localhost bin]# ./startup.sh
逻辑:
1:检测8080端口,存在,无任何操作
2:检测8080端口,不存在,执行start.sh命令
python中调用命令的方法是 os.system(‘命令’)
代码如下:
import os #在python中使用shell命令
result = os.system('ss -ntl | grep 8080')#判断命令是否执行成功,正确返回0
if(result==0):
print('服务存在!')
else:
print('服务不存在')
os.system('/usr/local/apache-tomcat-8.5.35/bin/startup.sh')#在脚本和程序中使用绝对路径能减少很多新手错误
[root@localhost python]# ll
总用量 4
-rw-r--r-- 1 root root 269 5月 13 14:49 tomcat服务监控.py
[root@localhost python]# chmod +x tomcat服务监控.py
[root@localhost python]# ll
总用量 4
-rwxr-xr-x 1 root root 269 5月 13 14:49 tomcat服务监控.py
[root@localhost python]# cat tomcat服务监控.py
import os
result = os.system('ss -ntl | grep 8080')
if(result==0):
print('服务存在!')
else:
print('服务不存在')
os.system('/usr/local/apache-tomcat-8.5.35/bin/startup.sh')#在脚本和程序中使用绝对路径能减少很多新手错误
配置相应的权限
到上面为止,基本上一个python代码过程的分析已经完成
开始测试python代码
情况一:服务在线
[root@localhost python]# ss -ntl | grep 8080
LISTEN 0 100 :::8080 :::*
[root@localhost python]# python3 tomcat服务监控.py
LISTEN 0 100 :::8080 :::*
服务存在!
情况二:服务不存在
[root@localhost python]# ss -ntl | grep 8080
[root@localhost python]# python3 tomcat服务监控.py
服务不存在
Using CATALINA_BASE: /usr/local/apache-tomcat-8.5.35
Using CATALINA_HOME: /usr/local/apache-tomcat-8.5.35
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.35/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/apache-tomcat-8.5.35/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.35/bin/tomcat-juli.jar
Tomcat started.
[root@localhost python]# ss -ntl | grep 8080
LISTEN 0 100 :::8080 :::*
python已经成功的重启服务
到此,我们只需要调用python代码就可以重启服务,接下来就是实现一个基本的运维过程(毕竟人为监控显然不符合急速发展的it行业!emmmm....也许,或许....吧,哈哈哈哈!)
将上述python过程加入crontab中实现,每1min调用
[root@localhost ~]# crontab -l
*/1 * * * * /usr/bin/python3 /root/python/tomcat服务监控.py
现在,你已经成功实现了每1min就检查一次tomcat服务过程(也就是说,服务也就挂掉1min就会重启,当然,真正的线上环境情况复杂的多,本文大家可以先了解一下线上生产环境过程)
完!