最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

shell腳本實(shí)現(xiàn)Hbase服務(wù)的監(jiān)控報(bào)警和自動(dòng)拉起問(wèn)題

 更新時(shí)間:2022年11月09日 14:13:00   作者:時(shí)間的往事  
這篇文章主要介紹了shell腳本實(shí)現(xiàn)Hbase服務(wù)的監(jiān)控報(bào)警和自動(dòng)拉起,主要是通過(guò)服務(wù)名監(jiān)控和端口監(jiān)控,通過(guò)企業(yè)微信消息通知腳本,對(duì)此內(nèi)容感興趣的朋友跟隨小編一起看看吧

需求說(shuō)明

期初是我們的物理機(jī)上安裝了Hbase,由于物理機(jī)硬件配置還可以,1T內(nèi)存,64核。
只有4臺(tái)機(jī)器,我們裝完Hbase后,發(fā)現(xiàn)應(yīng)用請(qǐng)求比較多,導(dǎo)致RegionServer經(jīng)常掛掉。
但是機(jī)器本身資源使用率并不高,因此我們希望在一個(gè)節(jié)點(diǎn)上啟用多個(gè)RegionServer服務(wù)。

如果一個(gè)節(jié)點(diǎn)啟動(dòng)2個(gè)RegionServe服務(wù),那么通過(guò)服務(wù)名稱(chēng)方式就無(wú)法監(jiān)控每個(gè)服務(wù),所以改用了端口監(jiān)控的方式。
當(dāng)服務(wù)出現(xiàn)異常掛掉后,可以自動(dòng)報(bào)警,并自動(dòng)拉起該服務(wù)。

1. 通過(guò)服務(wù)名監(jiān)控

monitor_regionserver.sh

#!/bin/sh
# 必須配置,引入環(huán)境變量;不然使用crond 定時(shí)執(zhí)行腳本無(wú)法啟動(dòng)Java應(yīng)用

source /etc/profile

#當(dāng)前時(shí)間
now=`date +"%Y-%m-%d %H:%M:%S"`
file_name="/opt/local/listen/monitor.log"  #重啟腳本的日志,保證可寫(xiě)入,保險(xiǎn)一點(diǎn)執(zhí)行 chmod 777 data.log
pid=0
hostname=`hostname`

proc_num()
{
    num=`ps -ef | grep 'HRegionServer' | grep -v grep | wc -l`
    return $num
}
proc_id()
{
    pid=`ps -ef | grep 'HRegionServer' | grep -v grep | awk '{print $2}'`
}

proc_num  #執(zhí)行proc_num(),獲取進(jìn)程數(shù)
number=$?  #獲取上一函數(shù)返回值

if [ $number -eq 0 ];then

    /opt/local/hbase/bin/hbase-daemon.sh start regionserver
    sleep 5
    proc_id
    echo "${now} 應(yīng)用服務(wù):HRegionServer不存在,正在重啟服務(wù),進(jìn)程號(hào) -> ${pid}" >> $file_name  #把重啟的進(jìn)程號(hào)、時(shí)間 寫(xiě)入日志
    /opt/local/listen/weixin.sh "生產(chǎn)服務(wù)器:${hostname} HRegionServer已停止,正在重啟服務(wù),PID -> ${pid}"
else
    proc_id
    echo "${now}  應(yīng)用服務(wù):HRegionServer 正常,進(jìn)程號(hào)-> ${pid}"  >> $file_name
fi

2. 通過(guò)端口監(jiān)控

端口監(jiān)控有2個(gè)腳本,一個(gè)是監(jiān)控腳本listen_port.sh,一個(gè)用來(lái)執(zhí)行的腳本monitor_port.sh。
monitor_port.sh可以直接用命令代替。

腳本listen_port.sh,用來(lái)監(jiān)聽(tīng)指定端口的RegionServer,運(yùn)行時(shí)需要指定端口號(hào)。

#!/bin/sh
source /etc/profile

#指定腳本路徑
script_path=/opt/local/listen/

if [ $# != 2 ];then
   echo '請(qǐng)輸入端口和Hbase的路徑'
   exit 1;
fi

port=$1
hbase_home=$2

echo '正在監(jiān)聽(tīng)端口號(hào):' $port


#當(dāng)前時(shí)間
now=`date +"%Y-%m-%d %H:%M:%S"`
file_name=${script_path}"monitor.log"  #重啟腳本的日志,保證可寫(xiě)入,保險(xiǎn)一點(diǎn)執(zhí)行 chmod 777 data.log
pid=0
hostname=`hostname`
proc_num()
{
    num=`netstat -nltp | grep ${port} |awk '{print $4}'|grep -v grep|wc -l`
    return $num
}
proc_id()
{
    pid=`netstat -nltp | grep ${port} |awk '{print $7}'|cut -d/ -f1`
}


proc_num  #執(zhí)行proc_num(),獲取進(jìn)程數(shù)
number=$?  #獲取上一函數(shù)返回值

if [ $number -eq 0 ];then

    $hbase_home/bin/hbase-daemon.sh start regionserver
    sleep 5
    proc_id
    echo "${now} 應(yīng)用服務(wù):HRegionServer不存在,正在重啟服務(wù),端口:${port} 進(jìn)程號(hào):${pid}" >> $file_name  #把重啟的進(jìn)程號(hào)、時(shí)間 寫(xiě)入日志
    ${script_path}/weixin.sh "測(cè)試服務(wù)器:${hostname}:${port} HRegionServer已停止,正在重啟服務(wù),PID -> ${pid}"

else
    proc_id
    echo "${now} HRegionServer 正常,端口:${port} 進(jìn)程號(hào):${pid}"  >> $file_name
fi

腳本monitor_port.sh,用來(lái)執(zhí)行l(wèi)isten_port.sh腳本。

#!/bin/sh
source /etc/profile
/opt/local/listen/listen_port.sh 16020 /opt/local/hbase/
sleep 1
/opt/local/listen/listen_port.sh 16120 /opt/local/hbase2/

3. 企業(yè)微信消息通知腳本

微信報(bào)警腳本weixin.sh,將下面的xxxxxxxxx換成自己的key就好。

#!/bin/bash
content=${@:1}
content=${content//\ /}
content=${content//\"/}
date=$(date +%Y-%m-%d)
time=$(date "+%H:%M:%S")
content="
**Hbase**
    >告警時(shí)間:$date.$time
    >告警詳情:$content

"
webHookUrl="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxx"
content='{"msgtype": "markdown","markdown": {"content": "'$content'","mentioned_list":"@all"},}'
echo "content : $content"
curl --data-ascii "$content" $webHookUrl
echo "over!"

4.定時(shí)調(diào)度

使用crontab每間隔1分鐘執(zhí)行一次。

# 監(jiān)控服務(wù)名的
*/1 * * * * sh /opt/local/listen/monitor_regionserver.sh >/dev/null 2>&1

# 監(jiān)控端口的
*/1 * * * * sh /opt/local/listen/monitor_port.sh >/dev/null 2>&1

5. 報(bào)警信息

報(bào)警信息樣式可以自己在weixin.sh中定義,支持markdown寫(xiě)法。

到此這篇關(guān)于shell腳本實(shí)現(xiàn)Hbase服務(wù)的監(jiān)控報(bào)警和自動(dòng)拉起的文章就介紹到這了,更多相關(guān)shell腳本Hbase服務(wù)監(jiān)控報(bào)警內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • linux 中l(wèi)s命令詳解

    linux 中l(wèi)s命令詳解

    ls命令是linux下最常用的命令。ls命令就是list的縮寫(xiě)。下面通過(guò)本文給大家分享linux 中l(wèi)s命令詳解,感興趣的朋友一起看看吧
    2017-09-09
  • 虛擬機(jī)中使用linux系啟用文件共享之后的文件存在的位置方法

    虛擬機(jī)中使用linux系啟用文件共享之后的文件存在的位置方法

    下面小編就為大家?guī)?lái)一篇虛擬機(jī)中使用linux系啟用文件共享之后的文件存在的位置方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • shell腳本自動(dòng)檢測(cè)網(wǎng)絡(luò)掉線和自動(dòng)重連

    shell腳本自動(dòng)檢測(cè)網(wǎng)絡(luò)掉線和自動(dòng)重連

    這篇文章主要介紹了shell腳本自動(dòng)檢測(cè)網(wǎng)絡(luò)掉線和自動(dòng)重連,這篇文章介紹的是自動(dòng)檢測(cè)連接網(wǎng)絡(luò)的解決方法,需要的朋友可以參考下
    2019-12-12
  • Shell腳本中if條件判斷的寫(xiě)法實(shí)例

    Shell腳本中if條件判斷的寫(xiě)法實(shí)例

    在寫(xiě)shell腳本的過(guò)程中,用到了if else的寫(xiě)法,突然有多個(gè)參數(shù)需要判斷,那么就想到了if else if的用法,這篇文章主要給大家介紹了關(guān)于Shell腳本中if條件判斷寫(xiě)法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • Shell腳本if else語(yǔ)句小結(jié)

    Shell腳本if else語(yǔ)句小結(jié)

    這篇文章主要介紹了Shell腳本if else語(yǔ)句小結(jié),總結(jié)了Shell腳本中的if控制語(yǔ)句和其它語(yǔ)言的不同,常見(jiàn)的3種寫(xiě)法等,需要的朋友可以參考下
    2014-07-07
  • shell命令執(zhí)行hive腳本(hive交互)

    shell命令執(zhí)行hive腳本(hive交互)

    本文主要介紹了shell命令執(zhí)行hive腳本(hive交互),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • shell腳本開(kāi)頭#!/bin/bash的作用詳解

    shell腳本開(kāi)頭#!/bin/bash的作用詳解

    在Shell腳本中,#!/bin/bash 是指定腳本使用 Bash 解釋器的 shebang 語(yǔ)句,它出現(xiàn)在腳本的第一行,并告訴操作系統(tǒng)使用 Bash 解釋器來(lái)執(zhí)行該腳本,這篇文章主要介紹了shell腳本開(kāi)頭#!/bin/bash的作用詳解,需要的朋友可以參考下
    2023-12-12
  • 通過(guò)shell腳本循環(huán)進(jìn)入目錄執(zhí)行命令的方法

    通過(guò)shell腳本循環(huán)進(jìn)入目錄執(zhí)行命令的方法

    今天小編就為大家分享一篇通過(guò)shell腳本循環(huán)進(jìn)入目錄執(zhí)行命令的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Linux中rpm命令用法詳解

    Linux中rpm命令用法詳解

    rpm命令是用于在基于RPM包管理系統(tǒng)的Linux發(fā)行版中安裝、查詢(xún)、升級(jí)和刪除軟件包的命令行工具,本文講給大家詳細(xì)的介紹一下Linux?rpm命令的使用方法,感興趣的同學(xué)跟著小編一起來(lái)看看吧
    2023-08-08
  • shell判斷文件是否為空的代碼

    shell判斷文件是否為空的代碼

    這篇文章主要介紹了shell判斷文件是否為空的代碼,需要的朋友可以參考下
    2017-05-05

最新評(píng)論

修武县| 永济市| 静宁县| 巴南区| 类乌齐县| 卫辉市| 武穴市| 桑植县| 鄄城县| 江山市| 宁海县| 隆化县| 广河县| 清涧县| 石河子市| 龙陵县| 团风县| 昆山市| 乌鲁木齐市| 合江县| 海安县| 富平县| 伊川县| 云林县| 炎陵县| 普洱| 津市市| 磴口县| 华蓥市| 阜新市| 黔江区| 杭锦后旗| 保德县| 揭阳市| 垣曲县| 丹棱县| 古丈县| 泽普县| 太原市| 左贡县| 博乐市|