10 分鐘實現(xiàn)一個自己的服務(wù)器監(jiān)控器

需求

最近需要給自己的服務(wù)器添加監(jiān)控器聪铺,目的是監(jiān)控服務(wù)器的內(nèi)存化焕、CPU、磁盤占用率铃剔,資源占用率過高的話能給自己發(fā)個提醒撒桨,當(dāng)前主流的平臺一般會提供郵件、短息键兜、甚至?xí)峁┪⑿盘嵝逊锢啵贿^這類提醒包含的噪音太多了(夾雜著各種無關(guān)的社交信息),我只是單純的需要接收到服務(wù)器的預(yù)警普气。由于服務(wù)器環(huán)境并不復(fù)雜谜疤,所以不考慮主流的與監(jiān)控平臺(畢竟搭建起來還是挺復(fù)雜的)。

選擇產(chǎn)品

有很多產(chǎn)品支持 incoming(就是通過調(diào)用應(yīng)用提供的 API 把我們自定義的消息轉(zhuǎn)發(fā)送該應(yīng)用)现诀,我打算使用 JBox 夷磕,因為它提供了 Android、和 iOS 客戶端支持而且是開源的所以后期有什么需求都可以自己加上去(還有一點最主要的是使用起來非常簡單仔沿,API 文檔只有一個接口坐桩,基本沒有學(xué)習(xí)成本)。

著手操作

按照 JBox 教程 來于未,首先新建一個自定義集成撕攒,獲得一個 Webhook url

http://jbox.jiguang.cn/v1/message/dxwYTMfrC8GRhU5/vwlrqCegmp  //注意:這里填寫自己集成的 Webhook url陡鹃,每個集成的 Webhook 都不一樣。

首先編寫我們的監(jiān)控腳本抖坪,這里我寫了兩個腳本

#內(nèi)存監(jiān)控腳本  monitor_memory.sh
webhook="http://jbox.jiguang.cn:80/v1/message/dxwYTMfrC8GRhU5/vwlrqCegmp" #注意:這里填寫自己集成的 Webhook url
#告警閾值30G萍鲸,少于則告警,頻率 30分鐘 檢查一次
 normal=30
 
#取得總內(nèi)存  
 
#取得內(nèi)存分頁數(shù)  
 
freemk=`vmstat 5 2 | tail -n 1 | awk '{print $5}'`;  
 #每一頁是4K 擦俐,所以乘以4                              
 
freemm=`expr $freemk \* 4`;    
 #轉(zhuǎn)換為 G                                                          
 
freemem=`echo $freemm/1024/1024|bc`;                                          
 
echo `date +%Y%m%d%H%M`"  Memory:" "M" all $freemem"G" avail;
 
if [ $freemem -lt $normal ]
 
then
 
    echo "當(dāng)前內(nèi)存"$freemem"G,少于"$normal"G"        #打印告警信息    這里可以插入短信庫脊阴,發(fā)送至手機(jī)
    title="內(nèi)存告警!蚯瞧!"
    message="當(dāng)前內(nèi)存"$freemem"G,少于"$normal"G"
    memoryAlertJson='{"title":"'${title}'"'',"message":"'${message}'"}'
    echo $memoryAlertJson

# 這里發(fā)送預(yù)警嘿期,該條消息會轉(zhuǎn)發(fā)到 JBOx app
    curl -H "Content-Type: application/json" -X POST -d $memoryAlertJson $webhook
fi
# 磁盤監(jiān)控腳本 monitor_disk.sh
webhook="http://jbox.jiguang.cn:80/v1/message/dxwYTMfrC8GRhU5/vwlrqCegmp"
normal=10 #當(dāng)超過 10% 這個值時產(chǎn)生告警,這里因為測試 所以設(shè)得很低,這個可以根據(jù)自己的需求來增加

DiskPercent=`df |grep -w / |awk '{print $5}'|awk -F '%' '{print $1}'`;
echo $DiskPercent;
if [ $normal -lt $DiskPercent ] 
    then
    echo "硬盤 使用率告警"
    title="硬盤 使用率告警B窈稀备徐!"
    message="當(dāng)前使用率"$DiskPercent"%,大于"$normal"%"
    DiskAlertJson='{"title":"'${title}'"'',"message":"'${message}'"}'
    echo $DiskAlertJson
# 這里發(fā)送預(yù)警,該條消息會轉(zhuǎn)發(fā)到 JBOx app
    curl -H "Content-Type: application/json" -X POST -d $DiskAlertJson $webhook
fi

我把這兩個腳本加在 crontab 執(zhí)行計劃里面
$ crontab -e

# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
# 一分鐘執(zhí)行一次腳本
* * * * * /bin/bash /home/ubuntu/monitor_memory.sh >>/home/ubuntu/moniter_memory.log
* * * * * /bin/bash /home/ubuntu/monitor_disk.sh >>/home/ubuntu/monitor_disk.log
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末甚颂,一起剝皮案震驚了整個濱河市蜜猾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌振诬,老刑警劉巖蹭睡,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赶么,居然都是意外死亡肩豁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門辫呻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來清钥,“玉大人,你說我怎么就攤上這事印屁⊙啵” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵雄人,是天一觀的道長从橘。 經(jīng)常有香客問我,道長础钠,這世上最難降的妖魔是什么恰力? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮旗吁,結(jié)果婚禮上踩萎,老公的妹妹穿的比我還像新娘。我一直安慰自己很钓,他們只是感情好香府,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布董栽。 她就那樣靜靜地躺著,像睡著了一般企孩。 火紅的嫁衣襯著肌膚如雪锭碳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天勿璃,我揣著相機(jī)與錄音擒抛,去河邊找鬼。 笑死补疑,一個胖子當(dāng)著我的面吹牛歧沪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播莲组,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼诊胞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锹杈?” 一聲冷哼從身側(cè)響起厢钧,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嬉橙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寥假,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡市框,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了糕韧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枫振。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖萤彩,靈堂內(nèi)的尸體忽然破棺而出粪滤,到底是詐尸還是另有隱情,我是刑警寧澤雀扶,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布杖小,位于F島的核電站,受9級特大地震影響愚墓,放射性物質(zhì)發(fā)生泄漏予权。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一浪册、第九天 我趴在偏房一處隱蔽的房頂上張望扫腺。 院中可真熱鬧,春花似錦村象、人聲如沸笆环。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躁劣。三九已至迫吐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間习绢,已是汗流浹背渠抹。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留闪萄,地道東北人梧却。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像败去,于是被迫代替她去往敵國和親放航。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理圆裕,服務(wù)發(fā)現(xiàn)广鳍,斷路器,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫吓妆、插件赊时、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,093評論 4 62
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,071評論 25 707
  • 文 / 墨墨 胸藏文墨若懷谷,腹有詩書氣自華 古人云:“水嘗無華行拢,相蕩而成漣漪祖秒;石本無火,相擊而生靈光”舟奠。文字只是...
    紫雨軒尼詩閱讀 979評論 1 1
  • [NSURLURLWithString:urlString]生成URL對象時,iOS客戶端不能正確進(jìn)行網(wǎng)絡(luò)請求,網(wǎng)...
    sll_閱讀 656評論 0 1