指令碼監控MySQL伺服器

2021-09-22 10:42:03 字數 4341 閱讀 2815

使用redis監控的方式,監控mysql伺服器

#!/bin/

bash

#告警條件

:#磁碟使用率超過70

%#記憶體使用率超過50

%#cpu使用率超過700%(

伺服器是24核心的

)#空閒執行緒小於50

#出現錯誤或者警告日誌

disk_target=70

mem_target=50

cpu_target

=700

idle_target=50

port

=3306

password='

root

'#設定錯誤日誌的位置

#設定監控日誌的位置

logfile=/

home

/lihuilin

/monitor_mysql

.log

pid=$(

ps -

ef |

grep 

-w mysqld 

|grep 

-v grep 

|awk ''

)if["$pid"==

""];then

echo 

"[error]mysql is shutdown."

>

>

$logfile

error_msg=$

error_msg

"+mysql_is_shutdown"

else

topcontent=$

(top -b 

-p $pid 

-n 1 

|grep $pid 

|awk '/

mysqld/'

)cpuusage=$

(echo $topcontent 

|awk ''

)memusage=$

(echo $topcontent 

|awk ''

)diskusage=$

(df -h 

|grep %|

awk 

'nr!=1'|

tr -s '

'|cut -d 

''-f 2-6 

|awk '}

')idlethread=$

(mysql 

-uroot 

-p$password 

-p$port -e 

'show full processlist\g

'|grep 

'state:$

'|wc -l)

alert_content=$

(diff $alert_file $alert_file_bak 

|grep -e 

'error

|warning'|

sed 's

/\./

_/g'

|sed 's

/:/_

/g'|

sed 's

//_/

g'|sed 's

/-/_

/g')

echo $

(date

)>

>

$logfileif[

"$alert_content"!=

""];then

echo 

"[error]$alert_content"

>

>

$logfile

error_msg=$

error_msg

"+errorlog#"

error_msg=$

error_msg$alert_content

fiif[$

(echo 

"scale=2; $memusage>$mem_target"|bc

)-eq 1 ];

then

echo 

"[error]memory usage:$memusage"

>

>

$logfile

error_msg=$

error_msg

"+memtarget#$mem_target"

error_msg=$

error_msg

"+memusage#$memusage"

else

echo 

"[info]memory usage:$memusage"

>

>

$logfile

fiif[$

(echo 

"scale=2; $cpuusage>$cpu_target"|bc

)-eq 1 ];

then

echo 

"[error]cpu usage:$cpuusage"

>

>

$logfile

error_msg=$

error_msg

"+cpu_target#$cpu_target"

error_msg=$

error_msg

"+cpu_usage#$cpuusage"

else

echo 

"[info]cpu usage:$cpuusage"

>

>

$logfile

fiif

["$diskusage"!=

""];then

echo 

"[error]disk usage:$diskusage"

>

>

$logfile

error_msg=$

error_msg

"+diskspace#"

$diskusage

fiif

[$idlethread 

-le $idle_target ];

then

echo 

"[error]idle thread:$idlethread"

>

>

$logfile

error_msg=$

error_msg

"+idle_target#$idle_target"

error_msg=$

error_msg

"+idlethread#$idlethread"

else

echo 

"[info]idle thread:$idlethread"

>

>

$logfile

fifiif[

"$error_msg"!=

''];

then

error_msg=$

(echo $error_msg 

|sed 's

/\./

_/g'

|sed 's

/:/_

/g'|

sed 's

//_/

g'|sed 's

/-/_

/g'|

sed 's

/\//

/g')

error_msg=$

(echo $error_msg 

|sed 's

/\[/

_/g'

|sed 's

/\]/

_/g'

)curl $alert_url$error_msg

ficp 

-rf $alert_file $alert_file_bak

這裡比較費勁的是監控磁碟剩餘空間

下圖的這種結果是沒有辦法使用awk抽取資料的。

可以使用如下命令,格式化資料

df -h | grep % | awk 'nr!=1' | tr -s ' ' | cut -d ' ' -f 2-6

格式化之後就可以使用awk了。

伺服器監控

北京豐匯聯合科技 的 伺服器監控軟體是一款24,只要您的手機開機,就能及時知道伺服器執行狀態!及時排除執行故障。www.looking365.com 註冊,就可以享受本公司為您提供的服務 我們這裡有專業的人員直接幫您監控伺服器,讓您在第一時間掌握伺服器執行狀況。每台伺服器只需 100元 月,現在註冊...

監控伺服器

1.監控伺服器,可以用來監控nginx,tomcat,redis,mysql,那麼怎樣監控具體的哪個應用程式呢?答 每個具體的應用程式nginx,tomcat,redis,mysql,都有自己的已經寫好的監控軟體。只需要安裝在監控伺服器上就行了。面對這些監控資訊,要7x24小時有人維護,有人看著。2...

用於監控伺服器大檔案的指令碼

bin bash usage sh disksize.sh 路徑引數 該引數可無 author yang 20191027 該函式用於識別大檔案或目錄 function disksize if d 1 then path filast du ah max depth 1 path wc l size...