指令碼監控MySQL伺服器
http://blog.itpub.net/29254281/viewspace-1203311/
使用Redis監控的方式,監控MySQL伺服器
這裡比較費勁的是監控磁碟剩餘空間
下圖的這種結果是沒有辦法使用awk抽取資料的。
可以使用如下命令,格式化資料
格式化之後就可以使用awk了。
使用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'
-
-
#設定錯誤日誌的位置
-
alert_file=/home/lihuilin/mysql/data/mysql.51vv.err
-
alert_file_bak=$alert_file.bak
-
-
error_msg=''
-
serverip='127_0_0_1'
-
alert_url='http://IP:port/servlet?to=dba&title=MySQLError('$serverip')&content='
-
-
#設定監控日誌的位置
-
logfile=/home/lihuilin/monitor_mysql.log
-
-
-
pid=$(ps -ef | grep -w mysqld | grep -v grep | awk '{print $2}')
-
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/{print $0}')
-
cpuusage=$(echo $topcontent | awk '{print $9}')
-
memusage=$(echo $topcontent | awk '{print $10}')
-
diskusage=$(df -h | grep % | awk 'NR!=1' | tr -s ' ' | cut -d ' ' -f 2-6 | awk '{ sub(/%/,"",$4); if($4>'$disk_target') {print $0} }')
-
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) >> $logfile
-
if [ "$alert_content" != "" ] ; then
-
echo "[ERROR]$alert_content" >> $logfile
-
error_msg=$error_msg"+errorlog#"
-
error_msg=$error_msg$alert_content
-
fi
-
-
if [ $(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
-
fi
-
-
if [ $(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
-
fi
-
-
if [ "$diskusage" != "" ] ; then
-
echo "[ERROR]Disk usage:$diskusage" >> $logfile
-
error_msg=$error_msg"+diskspace#"$diskusage
-
fi
-
-
if [ $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
-
fi
-
fi
-
-
if [ "$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
-
fi
-
- cp -rf $alert_file $alert_file_bak
這裡比較費勁的是監控磁碟剩餘空間
下圖的這種結果是沒有辦法使用awk抽取資料的。
可以使用如下命令,格式化資料
- df -h | grep % | awk 'NR!=1' | tr -s ' ' | cut -d ' ' -f 2-6
格式化之後就可以使用awk了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-1211193/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- shell指令碼:監控MySQL服務是否正常指令碼MySql
- Shell指令碼監控MySQL主從狀態指令碼MySql
- 【shell】磁碟監控指令碼指令碼
- PostgreSQL之鎖監控指令碼SQL指令碼
- MySQL 5.6大查詢和大事務監控指令碼(Python 2)MySql指令碼Python
- 監控系統告警指令碼集合指令碼
- Shell 系統資訊監控指令碼指令碼
- Linux下針對伺服器網路卡流量和磁碟的監控指令碼Linux伺服器指令碼
- centos 監控web站點是否500 指令碼CentOSWeb指令碼
- 網路卡流量監控指令碼,python實現指令碼Python
- 監控磁碟使用率的shell指令碼指令碼
- mysql 伺服器巡檢指令碼MySql伺服器指令碼
- 關於前端指令碼異常監控的思考前端指令碼
- shell指令碼監控啟動停止weblogic服務指令碼Web
- MySQL監控工具MySql
- Prometheus 監控Mysql伺服器及Grafana視覺化PrometheusMySql伺服器Grafana視覺化
- 寫了個監控 ElasticSearch 程式異常的指令碼!Elasticsearch指令碼
- 在 Linux 上用 Bash 指令碼監控 messages 日誌Linux指令碼
- 使用Shell指令碼程式監控網站URL是否正常指令碼網站
- Java程式碼中,如何監控Mysql的binlog?JavaMySql
- 【MySQL】MHA原始碼之監控檢查(一)MySql原始碼
- MySQL sys效能監控MySql
- MySQL監控-Datadog資料庫監控調研MySql資料庫
- zabbix-mongodb監控指令碼(高效能、低佔用)MongoDB指令碼
- 透過shell指令碼監控日誌切換頻率指令碼
- 基於Ping和Telnet/NC的監控指令碼案例分析指令碼
- MySQL指令碼MySql指令碼
- 2. 監控nginx伺服器502狀態碼Nginx伺服器
- Prometheus MySQL監控+grafana展示PrometheusMySqlGrafana
- mysql效能監控相關MySql
- 搭建Lepus 天兔 監控MySQLMySql
- Mysql事件監控日誌MySql事件
- 利用Bash指令碼監控Linux伺服器的記憶體使用情況的相關資料指令碼Linux伺服器記憶體
- 用於自動監控磁碟使用情況的 Shell 指令碼指令碼
- 分享實用監控指令碼:使用Shell檢查程式是否存在指令碼
- 利用 Shell 指令碼來監控 Linux 系統的記憶體指令碼Linux記憶體
- Skywalking APM監控系列(二、Mysql、Linux伺服器與前端JS接入Skywalking監聽)MySqlLinux伺服器前端JS
- MySQL 常用指令碼MySql指令碼
- PowerShell 指令碼來監控 CPU、記憶體和磁碟使用情況:指令碼記憶體