[转帖]Linux 监测服务心跳、服务重启策略
前言
请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、
提示:以下是本篇文章正文内容,下面案例可供参考
背景
当服务假死情况下,导致服务不可用,一时间定位不到服务假死原因,可以采用临时应急方案,需要增加探测机制,定时拉起重启服务。
一、curl服务可用验证
注:curl请求地址包含特殊字符时,需要将特殊字符转义,curl字符转义移步第四步
curl http://127.0.0.1:8088/GetResult.json?userName=superAdmin%26password=sadmin_secret_pw -d '{"id":100897}'
- 1
首先,正常运行情况下,适用下述curl指令可以正常返回结果:

二、服务探测脚本
编写shell脚本如下:
#!/bin/bash
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# + 1、此脚本为服务监控脚本,与系统定时任务配合使用
# + 2、执行crontab -e进入监控任务配置,配置探测脚本执行时间
# + 3、创建此脚本后请赋予可执行权限chmod +x chk_service.sh
# + 4、普通用户执行docker需要sudo 权限,在执行命令前先设置普通用户密码 !!!
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#获取当前时间
DATE=<span class="token hvariable">date</span> <span class="token operator">+%</span><span class="token constant">Y</span><span class="token operator">%</span><span class="token hvariable">m</span><span class="token operator">%</span><span class="token hvariable">d</span>
#检测地址
httpCode=<span class="token hvariable">curl</span> <span class="token operator">-</span><span class="token hvariable">s</span> <span class="token operator">-</span><span class="token hvariable">o</span> <span class="token operator">/</span><span class="token hvariable">dev</span><span class="token operator">/</span><span class="token builtin">null</span> <span class="token operator">-</span><span class="token hvariable">w</span> <span class="token string">"%{http_code}"</span> <span class="token operator">-</span><span class="token constant">X</span> <span class="token constant">POST</span> <span class="token operator">-</span><span class="token hvariable">d</span> '<span class="token punctuation">{<!-- --></span><span class="token string">"id"</span><span class="token operator">:</span><span class="token number">100897</span><span class="token punctuation">}</span>' <span class="token string">"http://127.0.0.1:8088/GetResult.json?userName=superAdmin&password=sadmin_secret_pw"</span>
#服务端口
ports=8088
#检查服务是否正常
function checkService()
{
echo "执行时间: \((date +%Y'-'%m'-'%d' '%H':'%M':'%S) "</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token punctuation">(</span> <span class="token string">"\)httpCode"=="200" ));then
echo ""
echo "检测服务正常运行服务可用!"
exit
else
echo ""
echo "检测服务不可用!"
echo "重启检测服务...预计两分钟"
echo "admin123" | sudo -S docker restart 09a380a14b7f
sleep 30s
<span class="token hvariable">status</span><span class="token operator">=</span>`<span class="token hvariable">netstat</span> <span class="token operator">-</span><span class="token hvariable">nltp</span><span class="token operator">|</span><span class="token hvariable">grep</span> <span class="token operator">$</span><span class="token punctuation">{<!-- --></span><span class="token hvariable">ports</span><span class="token punctuation">}</span><span class="token operator">|</span><span class="token hvariable">grep</span> <span class="token operator">-</span><span class="token hvariable">v</span> <span class="token string">"grep"</span>`
<span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token operator">-</span><span class="token hvariable">z</span> <span class="token string">"${status}"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">then</span>
<span class="token hvariable">echo</span> <span class="token string">"docker检测服务重启失败..."</span>
<span class="token hvariable">echo</span> <span class="token string">"再次重启docker检测服务..."</span>
<span class="token hvariable">echo</span> <span class="token string">"admin123"</span> <span class="token operator">|</span> <span class="token hvariable">sudo</span> <span class="token operator">-</span><span class="token constant">S</span> <span class="token hvariable">docker</span> <span class="token hvariable">restart</span> 09a380a14b7f
<span class="token hvariable">exit</span>
<span class="token keyword">else</span>
<span class="token hvariable">echo</span> <span class="token string">"docker检测服务重启完成..."</span>
<span class="token hvariable">exit</span>
<span class="token hvariable">fi</span>
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记录点滴每天成长一点点,学习是永无止境的!转载请附原文链接!!!
[转帖]Linux 监测服务心跳、服务重启策略的更多相关文章
- [转帖]Linux监测某一时刻对外的IP连接情况
Linux监测某一时刻对外的IP连接情况 https://blog.csdn.net/twt326/article/details/81454171 公司机器有病毒 需要分析一下. 之前有需要,在CS ...
- linux下的audit服务
audit ['ɔːdɪt] 审计 auditd是linux的一个审计服务. 这是man下的解释 auditd is the userspace component to the Linux A ...
- linux下的crontab服务
linux下的crontab服务:1.crontab 是用来让使用者在固定时间或固定间隔执行程序之用在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现.以某一频率执行任务linux缺 ...
- 如何管理linux开机自启服务
如何管理linux开机自启服务? 自启动服务非常重要,例如 (1)需要手动添加希望自启的服务,如安装svn后没有自动添加,就需要我们手动加入(2)安装某些程序后,自动加到自启动了,但我们不需要,需要手 ...
- linux下svn(subversion)服务端添加工程及配置权限
linux下svn(subversion)服务端添加工程及配置权限 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/9010507.html 此篇我只是将所做过的 ...
- 如何在linux下开启FTP服务
如何在linux下开启FTP服务 1. 首先服务器要安装ftp软件,查看是否已经安装ftp软件下: #which vsftpd 如果看到有vsftpd的目录说明服务器已经安装了ftp软件 2. ...
- 【转帖】云平台发现服务构建:为什么不使用ZooKeeper
http://www.chinacloud.cn/show.aspx?id=19979&cid=16 [日期:2015-04-29] 来源:dockerone 作者: [字体:大 中 小] ...
- linux 系统的ssh服务
ssh服务由服务端软件Openssh和客户端(常见的有ssh,SecureCRT,putty,xshell)组成,ssh服务默认使用22端口提供服务,它有两个不兼容的ssh协议版本,分别是1.x和2. ...
- linux应用之vsftp服务的安装及配置(centos)
1.centos中vsftp服务的安装 方法1:rpm方式 #rpm –ivh vsftpd-2.0.5-10.el5.i386.rpm 安装rpm程序包(网上下载的rpm包) 方法2:yum方式 ...
- Linux:定时任务crond服务
一.crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动cro ...
随机推荐
- 将模型转为NNIE框架支持的wk模型第一步:tensorflow->caffe
摘要:本系列文章旨在分享tensorflow->onnx->Caffe->wk模型转换流程,主要针对的是HI3516CV500, Hi3519AV100 支持NNIE推理框架的海思芯 ...
- GaussDB(DWS)发生数据倾斜不要慌,一文教你轻松获取表倾斜率
摘要:GaussDB(DWS)是MPP并行架构,若表的数据存在倾斜情况,会引起一系列性能问题,影响用户体验,严重时可能会引起系统故障.因此能快速获取倾斜的表并整改是GaussDB(DWS)运维管理人员 ...
- TICS端到端实践:企业积分查询作业开发
摘要:本次TICS端到端体验,将以一个"小微企业信用评分"的场景为例. 本文分享自华为云社区<基于华为隐私计算产品TICS实现端到端的企业积分查询作业[玩转华为云]>, ...
- 2023 年如何将您的应用提交到 App Store
您夜以继日地工作来创建您的梦想应用程序.最后,是时候向全世界宣布您的应用程序了.但不知道如何将您的应用提交到 App Store? 为您的商店获取现成的移动应用程序 将应用程序提交到 App Stor ...
- 火山引擎ByteHouse:4000字总结,Serverless在OLAP领域应用的五点思考
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 作为云计算的下一个迭代,Serverless可以使开发者更专注于构建产品中的应用,而无需考虑底层堆栈问题.伴随着近 ...
- 火山引擎DataLeap如何解决SLA治理难题(一):应用场景与核心概念介绍
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 基于火山引擎分布式治理的理念,数据平台数据治理团队自研了火山引擎DataLeap SLA保障平台,目前已在字节内部 ...
- mysql--read only
问题背景: 1.在进行数据迁移和从库只读状态设置时,都会涉及到只读状态和Master-Slave主从关系设置 2.数据库参数文件默认是只读,重启数据库服务时 解决方法: 1.在my.cnf配置文件中添 ...
- HTML5 postMessage 跨域跨窗口传递消息
父页面代码: <!DOCTYPE html> <html> <head> <title>选择位置demo</title> <meta ...
- POJ - 3180 The Cow Prom ( korasaju 算法模板)
The Cow Prom POJ - 3180 题意: 奶牛圆舞:N头牛,M条有向绳子,能组成几个歌舞团(团内奶牛数 n >= 2)?要求顺时针逆时针都能带动舞团内所有牛. 分析: 所谓能带动, ...
- 2017年第八届 蓝桥杯C组 C/C++决赛题解
蓝桥杯历年国赛真题汇总:Here 1.哥德巴赫分解 哥德巴赫猜想认为:不小于4的偶数都可以表示为两个素数的和. 你不需要去证明这个定理,但可以通过计算机对有限数量的偶数进行分解,验证是否可行. 实际上 ...