当前位置: 首页 > news >正文

写了个监控 ElasticSearch 进程异常的脚本!

服务器配置免密钥环境准备:

配置免密钥前,需要在服务器的 hosts 文件中配置目标主机名称与 IP 对应关系。

vim /etc/hosts
IP1 hostname1
IP2 hostname2
......

将 mianmiyaojiaoben.zip 安装包解压在当前目录下

cd /usr/local/jiaoben
unzip mianmiyaojiaoben.zip

修改 mianmiyao_config 配置文件,添加目标主机名称与目标主机密码,通过用免密钥的脚本来调用。

vim mianmiyao_configAllHosts=hostname1,hostname2
Passwd='test23!\@Test^&*','test23!\@Test^&*'

配置文件中,需注意:

  • AllHosts:可配置当前主机通往目标主机的主机名,可以免秘钥自身,数量不限。多台目标主机需以英文逗号隔开

  • Passwd:主机所对应的密码,顺序需要与主机顺序对应

  • 如果原密码为:test23!@Test^&*,则密码字符带有特殊符号可以用 \ 符转义

mianmiyao.sh 脚本文件内容:

vim mianmiyao.sh#!/bin/bash -x
source mianmiyao_config
yum -y install expect expect-devel
#rm -rf /root/.ssh/*
/usr/bin/expect -d <<-EOF
set timeout 100
spawn ssh-keygen -t rsa
expect {
"*id_rsa):" { send "\r"; exp_continue }
"*(y/n)?" { send "y\r"; exp_continue }
"*passphrase)*" { send "\r"; exp_continue }
"*again:" { send "\r"; exp_continue }
"*-------+" { send "\r"}
}
expect eof
EOFhostsarr=(${hosts//,/ })
passwdarr=(${passwd//,/ })
num=${#hostsarr[@]}  
for((i=0;i<num;i++));  
do  /usr/bin/expect <<-EOFset timeout 100spawn ssh-copy-id ${hostsarr[i]}expect {"*(yes/no)?" { send "yes\r"; exp_continue }"*password:" { send "${passwdarr[i]}\r"; exp_continue }"*authorized_keys*" { send "\r"}}expect eofexit
EOF
done 

将 mianmiyao.sh 文件添加执行权限并执行此脚本

chmod +x mianmiyao.sh
./mianmiyao.sh

脚本执行完毕后,可以先手动执行如下命令,如无需输入密码跳转到对应的目标服务器时,则表示成功。

ssh hostname2
服务器部署监测 ElasticSearch 环境准备:

将 cpufreedisk_config 配置文件添加对应 ES 集群主机名、ES 端口、ES 主节点服务器主机名。

vim cpufreedisk_config# 所有 ES 集群的主机名,用英文逗号分隔,需要在免密钥机器上执行
EsHosts=hostname1,hostname2# ES 端口
EsPort=9200# ES 主节点服务器的主机名
EsMaster=hostname1

将 cpufreedisk.sh 脚本文件放入 ElasticSearch 服务器的 /usr/local/jiaoben/ 目录下

#!/bin/bash
# @Time    : 2023/02/01
# @Author  : JackTian
# @File    : cpufreedisk.sh
# @Desc    : 使用该脚本监控 ES 系统程序假死、挂掉、异常及服务器断网、宕机服务器恢复后,程序做判断恢复/检测服务器cpu内存磁盘。
# 使用前提:ES 集群服务器配置免密钥
# 使用方法:将 cpufreedisk.sh 脚本放置 ES 服务器的 /usr/local/jiaoben/ 目录下、在 cpufreedisk_config 中配置 ES 集群的主机名、端口、ES 主节点服务器的主机名
# 设置定时任务(可以事先手动执行)
# 0 6 * * * source /etc/profile && cd /usr/local/jiaoben && ./cpufreedisk.sh
source /usr/local/jiaoben/cpufreedisk_configfunction esStatus
{
curl --connect-timeout 30 -m 60 $1:$esport > resultEsCurl.log
echo "`cat resultEsCurl.log | grep cluster_name`"
}function esLost
{
iptemp=`cat /etc/hosts | grep -w $1 | grep '^[^#]' | awk '{print $1}'`
curl --connect-timeout 30 -m 60 $esMaster:$esport/_cat/nodes?v | grep $iptemp > resultEsCurl1.log
echo "`cat resultEsCurl1.log`"
}function esDie
{
ssh $1 "source /etc/profile && jps | grep Elasticsearch | awk '{print \$1}' | xargs"
}function restart
{
ssh $1 <<EOF
echo "请手动启动 ES 进程"
exit
EOF
}today=$(date +"%Y-%m-%d")
todaytime=`date`
#针对 ES 做假死、宕机、挂掉,做日志记录和处理
serverroothostname=(${esHosts//,/ })
for rootHost in ${serverroothostname[*]}
doesStatusResult=`esStatus $rootHost`echo "$rootHost 的状态为: $esStatusResult"if [ -n "$esStatusResult" ];thenesLostResult=`esLost $rootHost`echo "$rootHost 的状态为: $esLostResult"if [ -n "$esLostResult" ];thenecho "ES 运行状态正常。"elseecho "$rootHost 脱离集群。"echo "${todaytime}ES的${rootHost}节点脱离集群。请人工排查" >> /usr/local/jiaoben/ESmanager.logrestart $rootHostfielseecho "${todaytime}xxx系统$rootHost 的 ES 进程运行状态异常,启动重启中..." >> /usr/local/jiaoben/ESmanager.logecho "${todaytime}xxx系统$rootHost 重启" >> /usr/local/jiaoben/ESmanager.logssh $rootHost <<EOF >>/usr/local/jiaoben/ESmanager.logmkdir -p /usr/local/jiaoben/cd /usr/local/jiaoben/echo "--------------------------------------服务器分割线-------------------------------------------"echo "$rootHost磁盘信息"df -hecho "$rootHost内存信息(单位为:G)"free -hecho "$rootHost的CPU信息"vmstatexit
EOFif [ $? -eq 0 ];thenesDieResult=`esDie $rootHost`if [ -n "$esDieResult" ];thenecho "${todaytime}xxx系统 ES 出现假死,已执行重启临时解决,详情参看日志" >> /usr/local/jiaoben/ESmanager.logelseecho "${todaytime}xxx系统 ES 未启动,已执行重启临时解决,详情参看日志" >> /usr/local/jiaoben/ESmanager.logfielseecho "${todaytime}xxx系统 ES 服务器疑似宕机:无法 ssh 登录" >> /usr/local/jiaoben/ESmanager.logfirestart $rootHostfidone

将 cpufreedisk.sh 脚本文件添加可执行权限并执行

chmod +x cpufreedisk.sh
./cpufreedisk.sh

设定周期性定时任务,每天定时执行。

crontab -e
# 使用该脚本监控 ES 系统程序假死、挂掉、异常及服务器断网、宕机服务器恢复后,程序做判断恢复/检测服务器cpu内存磁盘。
0 6 * * * source /etc/profile && cd /usr/local/jiaoben && ./cpufreedisk.sh

相关文章:

写了个监控 ElasticSearch 进程异常的脚本!

服务器配置免密钥环境准备&#xff1a; 配置免密钥前&#xff0c;需要在服务器的 hosts 文件中配置目标主机名称与 IP 对应关系。 vim /etc/hosts IP1 hostname1 IP2 hostname2 ...... 将 mianmiyaojiaoben.zip 安装包解压在当前目录下 cd /usr/local/jiaoben unzip mianmi…...

第三篇 基于JSP 技术的网上购书系统—— 数据库系统设计(网上商城、仿淘宝、当当、亚马逊)

目录 1.逻辑关系设计 2.物理设计 2.1管理员表 2.2留言表 2.3会员登录表 2.4会员表 2.5订单表 2.6订单商品表 2.7产品表 2.8产品货架表 2.9收藏表 2.10类别表 2.11新闻表 数据库系统是用来保存数据的软件系统&#xff0c;当今比较流行的数据库系统&#xff0c;如 MS…...

电脑检测温度软件有哪些?

环境&#xff1a; Win10 专业版 问题描述&#xff1a; 电脑检测温度软件有哪些&#xff1f; 解决方案&#xff1a; 有很多电脑检测温度的软件可供选择&#xff0c;以下是一些常用的电脑温度监测工具&#xff1a; HWMonitor&#xff1a;一款免费的硬件监控软件&#xff0…...

设计模式 -- 单例模式(Singleton Pattern)

单例模式&#xff1a;最简单的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式…...

ubuntu给终端加代理服务器

ubuntu给终端加代理 访问google.com 是否可以访问通 curl https://www.google.com如果访问不通说明代理服务器没有配置好。 使用 gedit ~/.bashrc 打开网络配置 gedit ~/.bashrc找到文章的最后添加代理 export http_proxyhttp://127.0.0.1:7890 export https_proxyhttp://…...

centos 6.10 安装 readline 6.2.0

下载地址 解压文件 cd readline-6.2 ./configure -prefix /usr/local/readline-6.2 make && make install安装完成...

IDEA 2023搭建 SpringMVC +FreeMarker+JDBC

1.IDEA的版本&#xff0c;目前最新是2023&#xff0c;要选择旗舰版。笔者曾选择社区版&#xff0c;发现少了很多功能。只能重新安装。 2.安装好以后的第1件事&#xff0c;是设置Maven&#xff0c;并将下载地址改为淘定站&#xff0c;参照这篇一次包会——最新IDEA配置Maven指南…...

RabbitMQ传统数据持久化和Lazy queue的区别

问题引出&#xff1a; 在了解这个问题前我们需要一些前置知识&#xff1a; 关于MQ可靠性&#xff0c;在默认情况下&#xff0c;RabbitMQ会将接收到的信息保存在内存中以降低消息收发的延迟。这样会导致两个问题&#xff1a; 一旦MQ宕机&#xff0c;内存中的信息会丢失 内存空…...

docker部署lnmp环境

文章目录 前期准备&#xff1a;一、部署mysql1.1 获取 Mysql 5.7.22 镜像1.2 启动mysql容器 二、部署php2.1 获取php 7.2镜像2.2 启动php 容器2.3 php的扩展安装 三、部署nginx3.1 获取nginx:1.14镜像3.2 启动nginx容器3.3 编写nginx虚拟主机配置文件&#xff0c;使其支持php3.…...

数据结构 | 带头双向循环链表专题

数据结构 | 带头双向循环链表专题 前言 前面我们学了单链表&#xff0c;我们这次来看一个专题带头的双向循环链表~~ 文章目录 数据结构 | 带头双向循环链表专题前言带头双向循环链表的结构实现双向链表头文件的定义创建节点哨兵位初始化尾插尾删头插头删打印查找指定位置前插入…...

Redis使用Pipeline(管道)批量处理

Redis 批量处理 在开发中&#xff0c;有时需要对Redis 进行大批量的处理。 比如Redis批量查询多个Hash。如果是在for循环中逐个查询&#xff0c;那性能会很差。 这时&#xff0c;可以使用 Pipeline (管道)。 Pipeline (管道) Pipeline (管道) 可以一次性发送多条命令并在执…...

Linux中at命令添加一次性任务

1、工作原理 功能&#xff1a;在某个时间点&#xff0c;执行一次命令。 特点&#xff1a;任务是用户隔离的。 条件&#xff1a;必须要保证atd进程存在。 ps -ef |grep atd 原理&#xff1a;atd进程循环遍历队列里的任务&#xff0c;有任务&#xff0c;且到达执行时间&#xff…...

交换机基础知识之安全配置

交换机在网络基础设施中扮演着重要角色&#xff0c;它促进了设备之间数据包的流动。正因此&#xff0c;采取适当的安全措施来保护网络免受未经授权的访问和潜在攻击至关重要。本文将全面解读交换机基础安全配置知识&#xff0c;并提供实践方案&#xff0c;以保证安全的网络环境…...

Netty入门指南之Reactor模型

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言单线程…...

Ubuntu20.04软件安装顺序

目录 0.网卡驱动1. sogoupinyin2. terminator3.1zsh3.2升级Cmake&#xff08;有些后面的软件需要高版本Cmake&#xff09;4.显卡驱动(在cuda之前)5.CUDA与cudnn,TensorRT6.OpenCV(在ROS之前)6.1先安装各种依赖6.2安装Ceres-1.14.06.3安装Pangolin6.4安装Sophus6.5安装VTK6.5编译…...

适配器模式 ( Adapter Pattern )(6)

适配器模式 ( Adapter Pattern ) 适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁 适配器模式涉及到一个单一的类&#xff0c;该类负责加入独立的或不兼容的接口功能 举个真实的例子&#xff0c;读卡器是作为内存卡和笔记本之间的适配器…...

JAVA G1垃圾收集器介绍

为解决CMS算法产生空间碎片和其它一系列的问题缺陷&#xff0c;HotSpot提供了另外一种垃圾回收策略&#xff0c;G1&#xff08;Garbage First&#xff09;算法&#xff0c;通过参数-XX:UseG1GC来启用&#xff0c;该算法在JDK 7u4版本被正式推出&#xff0c;官网对此描述如下&am…...

十方影视后期“领进门”,成长与成就还得靠自身

在这个充满视觉冲击的时代&#xff0c;影视后期制作已经成为了一种炙手可热的艺术形式。而在这个领域&#xff0c;Adobe After Effects&#xff08;AE&#xff09;这款软件无疑是王者之一。十方影视后期作为十方教育科技旗下的艺术设计学科&#xff0c;不仅培养了数万名优秀的后…...

Golang之火爆原因

引言 在计算机编程领域&#xff0c;有很多种编程语言可供选择。然而&#xff0c;近年来&#xff0c;Golang&#xff08;Go&#xff09;这门相对年轻的编程语言却越来越受欢迎&#xff0c;备受推崇。那么&#xff0c;为什么Golang如此火爆&#xff1f;本文将探讨Golang之火爆原…...

WPF中Dispatcher对象的用途是什么

在WPF (Windows Presentation Foundation) 中&#xff0c;Dispatcher 对象的主要用途是提供一个与UI线程关联的消息循环系统&#xff0c;这允许开发者在UI线程上安排和执行任务。由于WPF的UI元素不是线程安全的&#xff0c;因此任何对UI元素的访问都必须从创建该元素的线程&…...

三菱现代自动擦窗机器人PLC软件:后发产品介绍及技术细节

三菱 现代自动擦窗机器人PLC软件 我们主要的后发送的产品有&#xff0c;带解释的梯形图接线图原理图图纸&#xff0c;io分配&#xff0c;组态画面 界面多种组态可供选择上周刚帮一个三菱现代贴牌擦窗机的小客户把新软件迭代完&#xff0c;顺便攒了一套带人话解释的梯形图、不…...

Wan 3D Causal VAE:一篇讲清视觉 token、时间压缩、3D Causal 卷积

从 Emu3.5、Show-o2、Show-o、Chameleon,到 Wan 3D Causal VAE:一篇讲清视觉 token、时间压缩、3D Causal 卷积和数据量估算的入门分析 0. 先说这篇文章要解决什么问题 这篇文章想回答 6 个问题: Emu3.5、Show-o2、Show-o、Chameleon 这几类 UMM,到底是怎么表示图像和视频…...

突破百度网盘限速瓶颈:BaiduPCS-Go命令行客户端完全指南

突破百度网盘限速瓶颈&#xff1a;BaiduPCS-Go命令行客户端完全指南 【免费下载链接】BaiduPCS-Go iikira/BaiduPCS-Go原版基础上集成了分享链接/秒传链接转存功能 项目地址: https://gitcode.com/GitHub_Trending/ba/BaiduPCS-Go 你是否厌倦了百度网盘那令人抓狂的下载…...

OpCore-Simplify:一键自动化黑苹果配置,让复杂技术变得简单

OpCore-Simplify&#xff1a;一键自动化黑苹果配置&#xff0c;让复杂技术变得简单 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore-Simplify是…...

GLM-4.1V-9B-Base应用场景:零售货架图像识别与SKU自动盘点方案

GLM-4.1V-9B-Base应用场景&#xff1a;零售货架图像识别与SKU自动盘点方案 1. 零售行业面临的库存管理挑战 走进任何一家超市或便利店&#xff0c;你都会看到整齐排列的商品货架。但你可能不知道的是&#xff0c;这些看似简单的货架背后隐藏着一个巨大的管理难题 - 库存盘点。…...

IDEA插件MyBatisX实战:3分钟搞定SpringBoot项目CRUD代码生成

MyBatisX插件全流程实战&#xff1a;SpringBoot项目CRUD代码生成效率革命 在快节奏的企业级开发中&#xff0c;重复编写基础CRUD代码就像在键盘上跳机械舞——动作标准却毫无新意。当项目包含20张以上数据表时&#xff0c;手动创建Entity、Mapper、Service等层级代码会消耗开发…...

基于Python的多媒体信息共享平台毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于Python的多媒体信息共享平台&#xff0c;以满足现代网络环境下多媒体信息传播的需求。具体研究目的如下&#xff1a;构建一个高效、…...

ARP 协议超详细讲解

前言网络设备有数据要发送给另一台网络设备时&#xff0c;必须要知道对方的网络层地址&#xff08;即IP地址&#xff09;。IP地址由网络层来提供&#xff0c;但是仅有IP地址是不够的&#xff0c;IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址&…...

告别水印烦恼!3步轻松去水印,新手秒上手。

找到心仪的图片有水印、做设计好不容易找到的素材有水印、下载好看的壁纸有水印&#xff0c;遇到的好图全被水印扫兴&#xff1f;PS去水印&#xff0c;操作复杂&#xff0c;学习成本高&#xff0c;浪费时间&#xff1b;用专业去水印工具&#xff0c;收费昂贵&#xff0c;还有广…...

2024年DroidKaigi官方会议应用:Android DataStore轻量级数据存储终极指南

2024年DroidKaigi官方会议应用&#xff1a;Android DataStore轻量级数据存储终极指南 【免费下载链接】conference-app-2024 The Official Conference App for DroidKaigi 2024 项目地址: https://gitcode.com/GitHub_Trending/co/conference-app-2024 DroidKaigi 2024官…...