Linux 监测服务心跳、服务重启策略

news2024/11/16 22:22:40

文章目录

  • 前言
  • 背景
  • 一、curl服务可用验证
  • 二、服务探测脚本
  • 三、配置系统定时任务
  • 四、Linux特殊字符转义
  • 总结


前言

请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、


提示:以下是本篇文章正文内容,下面案例可供参考

背景

当服务假死情况下,导致服务不可用,一时间定位不到服务假死原因,可以采用临时应急方案,需要增加探测机制,定时拉起重启服务

一、curl服务可用验证

注:curl请求地址包含特殊字符时,需要将特殊字符转义,curl字符转义移步第四步

curl  http://127.0.0.1:8088/GetResult.json?userName=superAdmin%26password=sadmin_secret_pw -d '{"id":100897}'

首先,正常运行情况下,适用下述curl指令可以正常返回结果:
curl

二、服务探测脚本

编写shell脚本如下:

#!/bin/bash

#      ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#      + 1、此脚本为服务监控脚本,与系统定时任务配合使用    
#      + 2、执行crontab -e进入监控任务配置,配置探测脚本执行时间      
#      + 3、创建此脚本后请赋予可执行权限chmod +x chk_service.sh
#      + 4、普通用户执行docker需要sudo 权限,在执行命令前先设置普通用户密码 !!!          
#      ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



#获取当前时间
DATE=`date +%Y%m%d`
#检测地址
httpCode=`curl -s -o /dev/null -w "%{http_code}" -X POST -d '{"id":100897}' "http://127.0.0.1:8088/GetResult.json?userName=superAdmin&password=sadmin_secret_pw"` 

#服务端口
ports=8088

#检查服务是否正常
function checkService()
{
echo "执行时间: $(date +%Y'-'%m'-'%d' '%H':'%M':'%S) "
if (( "$httpCode"=="200" ));then
        echo "*************************"
        echo "检测服务正常运行服务可用!"
		exit
else
        echo "*************************"
        echo "检测服务不可用!"
        echo "重启检测服务...预计两分钟"
        echo "admin123" | sudo -S docker restart 09a380a14b7f
        sleep 30s

		status=`netstat -nltp|grep ${ports}|grep -v "grep"`
		if [ -z "${status}" ];then
		  echo "docker检测服务重启失败..."
		  echo "再次重启docker检测服务..."
		  echo "admin123" | sudo -S docker restart 09a380a14b7f
		  exit
		else
		  echo "docker检测服务重启完成..." 
		  exit

		fi		
fi

}

checkService	#调用函数

三、配置系统定时任务

监控脚本写完之后,便是把该脚本加入到crontab监控任务中了。该过程可以去查看crontab定时任务。我这个设置的是每一分钟执行一次,就是一行指令:先执行crontab -e进入监控任务配置文件位置:

#查看监控任务
crontab -e

#配置任务
*/1 * * * * cd /root && sh cront_check.sh >> /root/cront.log

查看效果
探测效果

四、Linux特殊字符转义

友情提示: 在url中直接使用特殊符号会截断命令让命令失去原本意义.,所以我们需要编码转义特殊符号

字符URL编码值
空格%20
"%22
#%23
%%25
&%26
(%28
)%29
+%2B
,%2C
/%2F
:%3A
;%3B
<%3C
=%3D
>%3E
?%3F
@%40
\%5C
%7C

总结

我是南国以南i记录点滴每天成长一点点,学习是永无止境的!转载请附原文链接!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/353957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【飞桨AI-Python小白逆袭大神课程】作业1-python基础练习

链接&#xff1a;飞桨AI Studio - 人工智能学习与实训社区 作业一&#xff1a;输出 9*9 乘法口诀表(注意格式) 注意&#xff1a;提交作业时要有代码执行输出结果。 def table():#在这里写下您的乘法口诀表代码吧&#xff01;if __name__ __main__:table() 思路&#xff1a…

基础篇—CSS padding(填充\内边距)解析

CSS padding(填充) CSS padding(填充)是一个简写属性,定义元素边框与元素内容之间的空间,即上下左右的内边距。 属性说明padding使用简写属性设置在一个声明中的所有填充属性padding-bottom设置元素的底部填充padding-left设置元素的左部填充padding-right设置元素的右部…

win11下WSL环境安装

微软官方wsl手册 微软官方wsl手册pdf 一、wsl中镜像安装 在启用或关闭Windows功能勾选一下两个选项 打开powershell&#xff0c;输入wsl, 可以根据wsl的命令来安装镜像。也可以在软件商店中进行安装ubuntu 安装完成后&#xff0c;打开ubuntu,会自动完成初始化。提示安装成功…

【RabbitMQ六】——RabbitMQ主题模式(Topic)

RabbitMQ主题模式&#xff08;通配符模式&#xff09;前言什么是Topic模式使用Topic模式的要点通配符规则示例代码示例Pom文件引入RabbtiMQ依赖RabbitMQ工具类生产者消费者1消费者2效果总结前言 通过本篇博客能够简单使用RabbitMQ的主题模式。 本篇博客主要是博主通过官网总结…

K8s集群部署(kubeadm安装部署详细手册)

1、简介 K8s部署主要有两种方式&#xff1a;1、Kubeadm Kubeadm是一个K8s部署工具&#xff0c;提供kubeadm init和kubeadm join&#xff0c;用于快速部署Kubernetes集群。 2、二进制 从github下载发行版的二进制包&#xff0c;手动部署每个组件&#xff0c;组成Kubernetes集群。…

【C++进阶】二、多态详解(总)

目录 一、多态的概念 二、多态的定义及实现 2.1 多态的构成条件 2.2 虚函数 2.3 虚函数的重写 2.4 虚函数重写的两个例外 2.4.1 协变 2.4.2 析构函数的重写 2.5 C11 override 和 final 2.5.1 final 2.5.2 override 2.6 重载、覆盖(重写)、隐藏(重定义)的对比 三、…

【C++】类与对象 (四)初始化列表 static成员 友元 内部类 匿名对象 拷贝对象时的一些编译器优化

前言 本章就是我们C中类与对象的终章了&#xff0c;不过本章的难度不大&#xff0c;都是类中一些边边角角的知识&#xff0c;记忆理解就行了&#xff0c;相信经过这么长时间的学习类与对象&#xff0c;你对面向对象也有了更加深的理解&#xff0c;最后我们学习完边边角角的一些…

2022黑马Redis跟学笔记.实战篇(五)

2022黑马Redis跟学笔记.实战篇 五4.5 Redis实现秒杀优化4.5.1 基于Redis实现秒杀减库存6.1 秒杀优化-异步秒杀思路4.5.2 基于Redis的一人一单限制4.5.3 基于阻塞队列的异步下单4.6 秒杀的异步优化4.6.1.基于消息队列的异步下单思路4.6.2.基于List结构的消息队列4.6.3.基于PubSu…

[答疑]经营困难时期谈建模和伪创新-长点心和长点良心

leonll 2022-11-26 9:53 我们今年真是太难了……&#xff08;此处删除若干字&#xff09;……去年底就想着邀请您来给我们讲课&#xff0c;现在也没有实行。我想再和我们老大提&#xff0c;您觉得怎么说个关键理由&#xff0c;这样的形势合适引进UML开发流程&#xff1f; UML…

ESXi Args勒索病毒来袭,VMware ESXi用户需提高警惕

近日&#xff0c;多国通报了一项名为“ESXi Args”的勒索软件活动。ESXi Args主要针对VMware ESXi服务器进行攻击&#xff0c;利用ESXi 服务器中的已知漏洞&#xff0c;获取访问权限并部署勒索软件&#xff0c;对ESXi服务器内配置文件进行加密并发送赎金票据。 当前&#xff0…

从零到1构建可发布的npm包

本文将介绍通过 rollup, 从零开始构建一个简易的可发布的npm包。本文可实现的目标如下&#xff1a; 通过 rollup进行构建支持 Typescript支持 npm 方式安装支持 cdn 方式&#xff0c;在页面中引入支持本地调试可发布到npm 一、从 package 开始项目分析 首先&#xff0c;在终…

港科夜闻|香港科大与香港科大(广州)两校交流开启新篇章

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科大与香港科大(广州)两校交流开启新篇章。2月10日&#xff0c;香港科技大学校董会主席廖长城先生、校董会副主席杨佳锠先生、校长叶玉如院士一行到访香港科大(广州)&#xff0c;共商“香港科大一体、双校互补”框架下的…

go gin学习记录3

环境 环境&#xff1a;mac m1&#xff0c;go version 1.17.2&#xff0c; goland&#xff0c; mysql 安装gorm 第二节学习了在gin中使用go的原生SQL进行操作&#xff0c;这节学习一下使用orm。 go的orm包有很多&#xff0c;gorm是使用较多较广的&#xff0c;所以我们就用gor…

车辆逆行识别检测预警算法 yolov5

车辆逆行识别检测预警算法通过Pythonyolov5网络模型计算机算法技术&#xff0c;车辆逆行识别检测预警算法对道路来往行驶车辆出现逆行行为及时预警存档。Python是一种由Guido van Rossum开发的通用编程语言&#xff0c;它很快就变得非常流行&#xff0c;主要是因为它的简单性和…

大数据之-Nifi-监控nifi数据流信息_监控数据来源_bub轻松复现---大数据之Nifi工作笔记0011

通过数据流功能可以轻松复现,数据的流向在某个时间点数据是怎么流动的,出现了什么问题,太强大了.. 真的是,可以看到通过右键,处理器,打开view data province就可以看到, 上面是处理器处理数据的详细信息 点击左侧的详情图标可以查看详情信息,details是这个事件处理的内容详情,…

【计算机网络】运输层

文章目录运输层概述运输层端口号、复用与分用的概念UDP和TCP的对比TCP的流量控制TCP的拥塞控制TCP超时重传时间的选择TCP可靠传输的实现TCP的运输连接管理TCP的连接建立(3次握手)TCP的连接释放(4次挥手)TCP报文段的首部格式运输层概述 这里我们对运输层进行概述&#xff0c;之…

【双指针问题】LeetCode 925. 长按键入

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…

【C++】类型转化

&#x1f308;欢迎来到C专栏~~类型转化 (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&#xff01;送给自己的一句鸡汤&…

Python-第九天 Python异常、模块与包

Python-第九天 Python异常、模块与包一、了解异常1. 什么是异常&#xff1a;2. bug是什么意思&#xff1a;二、异常的捕获方法1. 为什么要捕获异常&#xff1f;2. 捕获异常的语法3. 如何捕获所有异常&#xff1f;三、异常的传递性1.异常是具有传递性的四、Python模块1. 什么是模…

21. 合并两个有序链表

题目链接&#xff1a;解题思路&#xff1a;遍历&#xff0c;双指针&#xff1a;因为两个链表有序&#xff0c;所以只需要依次比较两个元素的大小&#xff0c;然后添加到新的链表中即可first指针指向第一个链表l1&#xff0c;second指针指向第二个链表l2&#xff0c;answer保存合…