[转帖]Linux 监测服务心跳、服务重启策略

linux,监测,服务,心跳,重启,策略 · 浏览次数 : 0

小编点评

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树服务网格(istio)ServiceMesh介绍12571 人正在系统学习中 。归纳总结以上内容,生成内容时需要带简单的排版,例如以下: * 在文章中添加一些排版,例如标题、列表、表格等,可以使文章更美观易读。 * 在文章中添加一些脚注,例如引用文章、提供更多信息等,可以使文章更完整。 * 在文章中添加一些代码,例如解释特殊符号或算法等,可以使文章更易懂。 例如,以下文章可以添加一些排版、脚注、代码等,使文章更美观易读: **文章知识点与官方知识档案匹配** 文章中添加了标题、列表、表格等,使文章更美观易读。 文章中添加了脚注,例如引用文章、提供更多信息等,使文章更完整。 文章中添加了代码,例如解释特殊符号或算法等,可以使文章更易懂。 例如,以下文章可以添加一些标题、列表、表格等,以及一些脚注和代码等,使文章更美观易读: **文章知识点与官方知识档案匹配** **文章知识点与官方知识档案匹配** 文章中添加了标题、列表、表格等,使文章更美观易读。 文章中添加了脚注,例如引用文章、提供更多信息等,使文章更完整。 文章中添加了代码,例如解释特殊符号或算法等,可以使文章更易懂。

正文


前言

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


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

背景

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

一、curl服务可用验证

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

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

首先,正常运行情况下,适用下述curl指令可以正常返回结果:
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&amp;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 监测服务心跳、服务重启策略

      文章目录 前言背景一、curl服务可用验证二、服务探测脚本三、配置系统定时任务四、Linux特殊字符转义总结 前言 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、 提示:以下是本篇文章正文内容,下面案例可供参考 背景 当服务假死情况下,导致服务不可用,一时间定位不到服务假死原因,可以采用

      [转帖]通过架设Cockpit服务 使用Web浏览器监测管理多个Linux服务器

      Cockpit是一个易于使用,轻量级和简单但功能强大的工具,通过单个Web浏览器监视和管理多个远程Linux服务器。 如果你管理着一台 Linux 服务器,那么你可能正在寻找一个可靠的管理工具。为了这个你可能已经看了 Webmin 和 cPanel 这类软件。但是,如果你正在寻找一种简单的方法来管理

      [转帖]linux 调优各项监控指标小记

      https://z.itpub.net/article/detail/8A4E4E96522BD59D45AB5A4CA442EDB3 自开始负责生产环境部署,中间遇到了若干线上环境内存以及CPU的问题。由于微服务以及容器的流行,现在已经可以很方便的使用 K8s + prometheus + gra

      [转帖]linux服务之tuned

      https://www.cnblogs.com/createyuan/p/5701650.html RHEL/CentOS 在 6.3 版本以后引入了一套新的系统调优工具 tuned/tuned-adm,其中 tuned 是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供的信息动态调整系

      [转帖]linux 上进程被随机kill掉,如何监测和查询;谁杀了我的进程;Who sends a SIGKILL to my process mysteriously on ubuntu server

      https://www.cnblogs.com/xuyaowen/p/linux-audit.html 今天跑实验,发现进程被随机kill。咨询了服务器上的其他同学,他们说之前也发生过,一直存在。看来可能有可能不是我自己程序的原因,只能自己动手解决了。 在 Who sends a SIGKILL t

      [转帖]JMETER性能监控之serverAgent

      对linux服务器的服务进行压测时,服务器的运行情况可以通过添加插件serverAgent来观察,可以实时监控性能指标。 1 (一)环境准备 1、下载zip包ServerAgent-2.2.3.zip 2、在服务器中,创建一个文件夹serveragent,名字随便起 mkdir serveragen

      [转帖]NetworkManager服务(nmcli)

      一、简介 NetworkManager服务是管理和监控网络设置的守护进程,是2004年RedHat启动的项目,皆在能够让Linux用户更轻松的处理现代网络需求,尤其是无线网络,能够自动发现网卡并配置IP地址。Centos7之前的版本都是通过network.service管理网络配置。到了Centos

      [转帖]Linux服务器上监控网络带宽的18个常用命令

      https://www.pianshen.com/article/57221534801/ nload等一些工具可以读取"proc/net/dev"文件,以获得流量统计信息;而一些工具使用pcap库来捕获所有数据包,然后计算总数据量,从而估计流量负载。下面是按功能划分的命令名称。监控总体带宽使用――

      [转帖]Linux服务器上监控网络带宽的18个常用命令-2

      https://www.cnblogs.com/fan-yuan/p/9231501.html 本文介绍了一些可以用来监控网络使用情况的Linux命令行工具。这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度。入站流量和出站流量分开来显示。 这些工具使用不同的机制来制作流量报告。

      [转帖]Linux服务器性能追踪以及服务器监控常用命令

      https://www.pianshen.com/article/86181938917/ 作者:赵高欣 . Robbin http://www.drupal001.com/2012/07/linux-server-monitor/ 在网站性能优化中,我们经常要检查服务器的各种指标,以便快速找到害群