写了个监控 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 进程异常的脚本!
服务器配置免密钥环境准备: 配置免密钥前,需要在服务器的 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新闻表 数据库系统是用来保存数据的软件系统,当今比较流行的数据库系统,如 MS…...
电脑检测温度软件有哪些?
环境: Win10 专业版 问题描述: 电脑检测温度软件有哪些? 解决方案: 有很多电脑检测温度的软件可供选择,以下是一些常用的电脑温度监测工具: HWMonitor:一款免费的硬件监控软件࿰…...
设计模式 -- 单例模式(Singleton Pattern)
单例模式:最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式…...
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的版本,目前最新是2023,要选择旗舰版。笔者曾选择社区版,发现少了很多功能。只能重新安装。 2.安装好以后的第1件事,是设置Maven,并将下载地址改为淘定站,参照这篇一次包会——最新IDEA配置Maven指南…...
RabbitMQ传统数据持久化和Lazy queue的区别
问题引出: 在了解这个问题前我们需要一些前置知识: 关于MQ可靠性,在默认情况下,RabbitMQ会将接收到的信息保存在内存中以降低消息收发的延迟。这样会导致两个问题: 一旦MQ宕机,内存中的信息会丢失 内存空…...
docker部署lnmp环境
文章目录 前期准备:一、部署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虚拟主机配置文件,使其支持php3.…...
数据结构 | 带头双向循环链表专题
数据结构 | 带头双向循环链表专题 前言 前面我们学了单链表,我们这次来看一个专题带头的双向循环链表~~ 文章目录 数据结构 | 带头双向循环链表专题前言带头双向循环链表的结构实现双向链表头文件的定义创建节点哨兵位初始化尾插尾删头插头删打印查找指定位置前插入…...
Redis使用Pipeline(管道)批量处理
Redis 批量处理 在开发中,有时需要对Redis 进行大批量的处理。 比如Redis批量查询多个Hash。如果是在for循环中逐个查询,那性能会很差。 这时,可以使用 Pipeline (管道)。 Pipeline (管道) Pipeline (管道) 可以一次性发送多条命令并在执…...
Linux中at命令添加一次性任务
1、工作原理 功能:在某个时间点,执行一次命令。 特点:任务是用户隔离的。 条件:必须要保证atd进程存在。 ps -ef |grep atd 原理:atd进程循环遍历队列里的任务,有任务,且到达执行时间ÿ…...
交换机基础知识之安全配置
交换机在网络基础设施中扮演着重要角色,它促进了设备之间数据包的流动。正因此,采取适当的安全措施来保护网络免受未经授权的访问和潜在攻击至关重要。本文将全面解读交换机基础安全配置知识,并提供实践方案,以保证安全的网络环境…...
Netty入门指南之Reactor模型
作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言单线程…...
Ubuntu20.04软件安装顺序
目录 0.网卡驱动1. sogoupinyin2. terminator3.1zsh3.2升级Cmake(有些后面的软件需要高版本Cmake)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 ) 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁 适配器模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能 举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器…...
JAVA G1垃圾收集器介绍
为解决CMS算法产生空间碎片和其它一系列的问题缺陷,HotSpot提供了另外一种垃圾回收策略,G1(Garbage First)算法,通过参数-XX:UseG1GC来启用,该算法在JDK 7u4版本被正式推出,官网对此描述如下&am…...
十方影视后期“领进门”,成长与成就还得靠自身
在这个充满视觉冲击的时代,影视后期制作已经成为了一种炙手可热的艺术形式。而在这个领域,Adobe After Effects(AE)这款软件无疑是王者之一。十方影视后期作为十方教育科技旗下的艺术设计学科,不仅培养了数万名优秀的后…...
Golang之火爆原因
引言 在计算机编程领域,有很多种编程语言可供选择。然而,近年来,Golang(Go)这门相对年轻的编程语言却越来越受欢迎,备受推崇。那么,为什么Golang如此火爆?本文将探讨Golang之火爆原…...
WPF中Dispatcher对象的用途是什么
在WPF (Windows Presentation Foundation) 中,Dispatcher 对象的主要用途是提供一个与UI线程关联的消息循环系统,这允许开发者在UI线程上安排和执行任务。由于WPF的UI元素不是线程安全的,因此任何对UI元素的访问都必须从创建该元素的线程&…...
三次握手,四次挥手速记版
本文同步发表于微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新 三次握手和四次挥手是 TCP 协议中建立与关闭连接的关键机制,常因流程抽象而难以记忆。结合权威资料和通俗类比,以下是清晰、易记的要点&#…...
如祺出行2025年营收53亿:网约车贡献97%收入 净亏2.9亿
雷递网 乐天 4月1日如祺出行科技有限公司(股份代号:9680)日前发布截至2025年12月31日的财报。财报显示,如祺出行2025年营收为52.86亿元,较上年同期的24.63亿元增长114.6%。如祺出行收入主要来自网约车服务,…...
Electron 14+ 开发必看:WebContentsView 实战指南(含与 BrowserView 对比)
Electron 14 开发实战:WebContentsView 深度解析与性能优化 如果你正在使用 Electron 14 开发跨平台桌面应用,那么 WebContentsView 绝对是你需要重点掌握的核心组件。作为 Electron 团队在 14 版本引入的全新视图系统,WebContentsView 不仅解…...
SSD用久了为啥会变慢?深入NAND Flash的‘写放大’与‘磨损均衡’,教你看懂SMART数据避坑
SSD性能下降的真相:从写放大到磨损均衡的深度解析 你是否遇到过这样的困扰——新买的SSD速度飞快,但用了一段时间后,系统响应明显变慢,开机时间延长,文件传输速度大不如前?这种现象并非偶然,而是…...
FastAPI 2.0 + LLM流式输出全栈方案,含OpenAI兼容层、前端SSE重连策略、服务端背压控制(仅限内部技术白皮书级实录)
第一章:FastAPI 2.0 异步 AI 流式响应教程概览FastAPI 2.0 原生强化了对异步流式响应(StreamingResponse)的支持,为构建低延迟、高吞吐的 AI 接口(如大语言模型推理、语音合成、实时图像生成)提供了坚实基础…...
MCP3208 12位SPI ADC嵌入式驱动与硬件设计实战
1. MCP3208芯片深度解析:面向嵌入式系统的12位8通道SPI模数转换器工程实践1.1 芯片定位与核心价值MCP3208是Microchip公司推出的逐次逼近型(SAR)模数转换器,专为资源受限的嵌入式系统设计。其核心价值在于以极简硬件接口ÿ…...
**跨平台开发新范式:Flutter + Dart实战构建高性能多端应用**在移动与桌面融
跨平台开发新范式:Flutter Dart 实战构建高性能多端应用 在移动与桌面融合加速的今天,跨平台开发早已不是“妥协”的代名词,而是开发者提升效率、降低维护成本的核心策略。本文将带你深入 Flutter Dart 的实战体系,通过真实项目…...
2026年4月怎么搭建OpenClaw?腾讯云小白1分钟部署及百炼APIKey配置步骤
2026年4月怎么搭建OpenClaw?腾讯云小白1分钟部署及百炼APIKey配置步骤。OpenClaw(原Clawdbot)作为2026年主流的AI自动化助理平台,可通过阿里云轻量服务器实现724小时稳定运行,并快速接入钉钉,让AI在企业群聊…...
STM32除零运算不崩溃的机制与配置解析
1. STM32单片机除零运算不崩溃的底层机制解析 在嵌入式开发领域,STM32系列单片机因其出色的性能和丰富的外设资源而广受欢迎。许多从传统PC平台转向嵌入式开发的工程师都会发现一个有趣的现象:在STM32上执行除零操作时,程序竟然不会像在PC上那…...
【AI】开源文字转语音(TTS)模型
目前开源界在文字转语音(TTS)领域非常活跃,特别是针对多角色对话、情感控制和声音克隆方面,涌现了几个非常强大的模型。 结合(多角色、好用、开源),以下几款目前(截至2026年4月&…...
