簡易實現Redis監控自動簡訊告警
如果沒有企業簡訊閘道器,如何實現監控的自動簡訊告警呢?
1.開通QQ郵箱,並且繫結手機號。
設定之後,一旦QQ郵箱接收到新郵件,就會自動傳送簡訊提醒。
http://jingyan.baidu.com/article/90808022a318b2fd91c80f9a.html
2.製作一個JAVA程式,可以接收請求,並將請求內容作為郵件傳送到QQ郵箱。
3.在Redis伺服器上進行指令碼監控。如果監控超過閾值,則請求JAVA程式代發郵件。
Shell指令碼確實寫著費勁
它還居然沒有浮點運算
有兩個方式可以實現浮點運算。
1.$(awk 'BEGIN {printf("%.2f",'$used_memory'/'$maxmemory')}')
2.$(echo "scale=2;$mem_ratio>$mem_target" | bc)
另外需要注意的是,top命令的結果預設是亂碼,不能使用awk運算
使用top -b 引數就可以解決這個問題了
將這個指令碼新增到crontab以一個間隔執行。
這樣就實現了簡易的Redis監控自動簡訊告警功能。
1.開通QQ郵箱,並且繫結手機號。
設定之後,一旦QQ郵箱接收到新郵件,就會自動傳送簡訊提醒。
http://jingyan.baidu.com/article/90808022a318b2fd91c80f9a.html
2.製作一個JAVA程式,可以接收請求,並將請求內容作為郵件傳送到QQ郵箱。
3.在Redis伺服器上進行指令碼監控。如果監控超過閾值,則請求JAVA程式代發郵件。
-
#! /bin/bash
-
logfile=/home/redis/redisdata/redis_monitor.log
-
serverip='127.0.0.1'
-
redisport=6379
-
slave_target=1
-
mem_target=0.5
-
cpu_target=0.5
-
alert_url='http://IP:port/servlet?to=dba&title=RedisError('$serverip')&content='
-
error_msg=''
-
echo $(date) >> $logfile
-
pid=$(ps -ef | grep redis-server | grep -v grep | awk '{print $2}')
-
if [ "$pid" = '' ] ; then
-
echo "[ERROR]Redis is shutdown" >>$logfile
-
error_msg=$error_msg"+Redis_is_shutdown"
-
else
-
echo "[INFO]pid:$pid" >>$logfile
-
-
maxmemory=$(redis-cli -p $redisport config get maxmemory | awk 'NR==2 {print $1}')
-
used_memory=$(redis-cli -p $redisport info memory | grep used_memory: | awk -F : '{print $2}' | sed 's/\r//g')
-
mem_ratio=$(awk 'BEGIN {printf("%.2f",'$used_memory'/'$maxmemory')}')
-
if [ $(echo "scale=2;$mem_ratio>$mem_target" | bc) -eq 1 ] ; then
-
echo "[ERROR]used_memory:$used_memory" >>$logfile
-
echo "[ERROR]mem_used_ratio:$mem_ratio" >> $logfile
-
error_msg=$error_msg"+mem_target#$mem_target"
-
error_msg=$error_msg"+used_memory#$used_memory"
-
error_msg=$error_msg"+mem_used_ratio#$mem_ratio"
-
else
-
echo "[INFO]used_memory:$used_memory" >>$logfile
-
echo "[INFO]mem_used_ratio:$mem_ratio" >> $logfile
-
fi
-
-
-
cpu_ratio=$(top -b -p $pid -n 1 | grep $pid | awk '/redis-server/{print $9}' | sed 's/\r//g')
-
if [ $(echo "scale=2;($cpu_ratio/100)>$cpu_target" |bc) -eq 1 ] ; then
-
echo "[ERROR]cpu_ratio:$cpu_ratio" >> $logfile
-
error_msg=$error_msg"+cpu_target#$(echo "$cpu_target*100" | bc)"
-
error_msg=$error_msg"+cpu_ratio#$cpu_ratio"
-
else
-
echo "[INFO]cpu_ratio:$cpu_ratio" >> $logfile
-
fi
-
-
slave_count=$(redis-cli -p $redisport info replication | awk -F : '/connected_slaves:/{print $2}' | sed 's/\r//g')
-
if [ $slave_count -ne $slave_target ] ; then
-
echo "[ERROR]slave:$slave_count" >> $logfile
-
error_msg=$error_msg"+slave_target#$slave_target"
-
error_msg=$error_msg"+slave#$slave_count"
-
else
-
echo "[INFO]slave:$slave_count" >> $logfile
-
fi
-
fi
-
-
if [ "$error_msg" != '' ] ; then
-
curl $alert_url$error_msg
- fi
它還居然沒有浮點運算
有兩個方式可以實現浮點運算。
1.$(awk 'BEGIN {printf("%.2f",'$used_memory'/'$maxmemory')}')
2.$(echo "scale=2;$mem_ratio>$mem_target" | bc)
另外需要注意的是,top命令的結果預設是亂碼,不能使用awk運算
使用top -b 引數就可以解決這個問題了
將這個指令碼新增到crontab以一個間隔執行。
這樣就實現了簡易的Redis監控自動簡訊告警功能。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1203311/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡易實現 HTTPS (一) 自動實現 sslHTTP
- 交換機統一監控和遠端控制:自動發現、自動監控、自動告警、自動修復
- 如何快速實現告警簡訊的通知方式?
- Git + Jenkins 自動化 NGINX 釋出簡易實現GitJenkinsNginx
- Go 實現簡易的 Redis 客戶端GoRedis客戶端
- 讓動畫實現更簡單,Flutter 動畫簡易教程!動畫Flutter
- ThreeJS簡易魔方自動還原實現(一)層先法JS
- Docker容器的自動化監控實現Docker
- namedtuple簡易實現
- Oracle 自動化運維-Python監控Oracle告警日誌Oracle運維Python
- Python監控線上異常圖片地址自動告警Python
- 從零手動實現簡易TomcatTomcat
- HTML5觸控事件實現移動端簡易進度條HTML事件
- 夜鶯簡訊告警教程
- 監控系統整合告警平臺實現郵件、簡訊、微信、電話語音和app等多方式報警APP
- 簡易實現 HTTPS (二) 自簽名證書HTTP
- 簡易版 vue實現Vue
- 簡單簡易實現伺服器遠端登陸傳送簡訊提示伺服器
- C++11 實現簡易的訊號槽。C++
- C# 簡易的串列埠監視上位機實現C#串列埠
- prometheus監控+alertmanager告警Prometheus
- Zabbix監控虛擬機器服務-告警與自動恢復虛擬機
- 簡易實現一個expressExpress
- Go 實現簡易 RPC 框架GoRPC框架
- 利用 trait 簡易 Facade 實現AI
- 基於AOP和Redis實現的簡易版分散式鎖Redis分散式
- Unity Shader- UV動畫原理及簡易實現Unity動畫
- Python3簡易介面自動化測試框架設計與實現(中)Python框架
- Python3簡易介面自動化測試框架設計與實現(上)Python框架
- 透過資料結構實現簡易通訊錄資料結構
- 簡易版的Spring框架之IOC簡單實現Spring框架
- 簡單4步,利用Prometheus Operator實現自定義指標監控Prometheus指標
- 學習Promise && 簡易實現PromisePromise
- 模擬實現簡易版shell
- 簡易執行緒池實現執行緒
- UNIX Domain Socket實現簡易聊天AI
- 實現一個簡易版WebpackWeb
- NodeJS實現簡易區塊鏈NodeJS區塊鏈
- 實現一個簡易的vueVue