【任务16】故障监控:1、用脚本监控 mysql + redis
本问题对应的项目链接:从0设计一个web项目
实现功能:监控我们服务器的 mysql + redis 是否处于正常运行状态,如果是,则不理,如果挂了,那么自动重启,并且打印下日志,记录一下具体时间,日志的文件名用 xxxx.log,具体要放在什么位置,随你便吧,mysql+redis用不同的文件哈。
另外,定时任务脚本,每分钟执行一次。
**要求**:给你的脚本代码
本问题对应的项目链接:从0设计一个web项目
实现功能:监控我们服务器的 mysql + redis 是否处于正常运行状态,如果是,则不理,如果挂了,那么自动重启,并且打印下日志,记录一下具体时间,日志的文件名用 xxxx.log,具体要放在什么位置,随你便吧,mysql+redis用不同的文件哈。
另外,定时任务脚本,每分钟执行一次。
**要求**:给你的脚本代码
共以下 1 个回答
监控 MySQL 思路
监控 Redis 思路
设置定时脚本思路
do whileshell 代码如下:
测试结果(事先手动关闭了 MySQL 和 Redis 服务):
服务器链接:http://124.223.184.187:8088/FromZerotoExpert
Github仓库链接:https://github.com/jiangyklala/FromZerotoExpert/tree/dev
大佬您好!如果不仅要在Linux服务器上打印并保存日志,还要能在网站上有所体现/展示的话可以怎么实现呢?这种需求不知道实际项目中有没有?
你好你好,我的思路是:写一个接口来查询 check_wrong_Redis.log 文件中服务的状态。
具体的,可以用文件流操作读取这个日志文件中的每一行,用正则表达式提取其中的某些字段(如“Redis已停止运行”),如果能成功提取到,说明 Redis 已经寄了。前端页面只需要访问这个接口就能知道当前 Redis 服务的状态了。
补充:这里其实不严谨,因为在监控脚本中,检测到 Redis 停止运行之后,我们除了打印日志之外,还会执行重启操作,无法确定这个重启是否成功,如果重启失败了才说明 Redis 真寄了。那么根据这个思路就可以在脚本的重启操作之后,再次检查是否有 Redis 进程(即是否重启成功),同时也可以设置最多能重启的次数,超过这个次数就认定 Redis 真寄,然后在日志文件中记录一个特定字段,再在接口中查询这个字段。
其实我觉得,如果 MySQL/Redis 挂了,那网站也就挂了,那在网站上再显示这俩服务的状态就无意义了,不过倒是可以在脚本中设置 MySQL/Redis 挂了之后给自己发邮件,提醒自己。
感谢大佬的分享,后面我试试能不能把挂了后发邮件或短信这个功能给实现一下,也期待大佬的编码实现,前面有不少都有参考您的实现,例如自定义注解等等,自己第一次从0编码一个Demo项目,有很多不太懂,还需向大伙儿学习!
冲冲冲💪