supervisor监控java应用

背景:

应用在运行过程中避免不了进程出现一些情况挂掉,导致服务不可用,影响业务功能;因此,我们希望当应用进程挂掉的时候,能自动的重启应用。

supervisor是什么?

supervisor是用Python语言开发的一个client/server服务,是Linux/unix系统下的一个进程管理工具。它是可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它拉起来,很方便的做到进程自动恢复的功能。

supervisor安装:

1、Linux版本:

2、安装命令:

[root@localhost /]# yum install epel-release

[root@localhost /]# yum install -y supervisor

[root@localhost /]# systemctl enable supervisord # 开机自启动

[root@localhost /]# systemctl start supervisord # 启动supervisord服务

[root@localhost /]# systemctl status supervisord # 查看supervisord服务状态

[root@localhost /]# ps -ef|grep supervisord # 查看是否存在supervisord进程

3、安装成功后,在/etc下面有一个目录/supervisord.d;

4、有一个主配置文件supervisord.conf,supervisor监控多个不同的应用,为了方便统一管理,在/etc/supervisord.d/conf/下面配置每一个应用的配置文件;

supervisord.conf配置:

5、在/etc/supervisord.d/conf建立java应用配置文件,起名为springboot.hook.conf,配置内容如下所示:

[program:springboot-hook-0.0.1-SNAPSHOT] ;程序名称,终端控制时需要的标识

command=/usr/bin/java -jar springboot-hook-0.0.1-SNAPSHOT.jar > hook.log & ; 运行程序的命令

directory=/usr/local/data/ ; 命令执行的目录

autorestart=true ; 程序意外退出是否自动重启

stdout_logfile=/usr/local/data/hook.log; 输出日志文件

environment==MALLOC_ARENA_MAX="1" ; 进程环境变量

user=wangtk ; 进程执行的用户身份

6、上传java应用包到指定配置目录,这个路径取决于springboot.hook.conf配置文件。

supervisor验证:

1、查看当前java进程是否已启动;

2、启动supervisor服务,[root@localhost conf]# systemctl start supervisord.service,通过status查看supervisor服务状态已启动;

3、supervisor启动成功后查看java应用是否也启动;命令查看发现已有java应用已被supervisor管理;查看java启动日志也正常;

min

4、supervisor也提供了web端对进程进行管理,在浏览器登录http://172.16.205.128:9901,这里的端口和登陆的用户名密码配置在supervisord.conf文件,如果遇到无法访问此网站,在确保supervisor服务已正常启动后,检查一下服务器的防火墙是否已关闭;

5、登陆成功后,在页面上可以看到已有一个java应用被supervisor管理,此时的状态是running;

6、在web页面上,可以对应用进行重启、关闭应用,同时也可以进程在线的tail -f查看应用日志。

服务挂掉后,supervisor是否会自动拉起?

手动的把java应用kill掉,观察supervisor是否会自动把java服务拉起来;

1、查看java进程pid;

2、在步骤1kill 掉java进程,在步骤2查看java应用已经不存在,第3步查看发现java应用已被supervisor自动拉起来;

3、查看java日志,服务已正常启动。

结论:

1、确保supervisord.conf与应用配置文件springboot.hook.conf配置正确;

2、在supervisor启动后,可以查看到被supervisor管理的配置文件应用启动成功;

3、当应用挂掉后,supervisor也能自动拉起java应用,保证服务正常运行。

你可能感兴趣的:(supervisor监控java应用)