阿里雲自定義監控tomcat進程數

阿里雲提供自定義監控SDK,這有助於我們定製化的根據自身業務來做監控,下面我就根據業務需求來介紹一個簡單的自定義監控配置。

阿里提供了2個版本的自定義監控接口:
自定義監控SDK(python版) :cms_post.py
自定義監控SDK(bash版) :cms_post.sh

下載地址:http://help.aliyun.com/knowledge_detail.htm?knowledgeId=5974901

本文使用shell版本做演示
       這裏說下我的簡單需求,我們需要監控ECS服務器中tomcat的進程是否存在,如果小於1,就說明tomcat進程關閉,然後根據設定的報警規則報警。

首先我們需要在阿里雲自定義監控頁面建立一個自定義監控,如下圖:

1、添加自定義監控
monitor

wKioL1e20eWRYRSbAAB9aE0TujE127.png

腳本post方法說明

post方法中傳入4個參數,分別爲 aliuid,監控項名稱,監控項值,字段信息(以下腳本中傳入參數)。

最後按照第4部分的說明,添加定時任務即可。

再次強調這些參數的意義,參見雲監控控制檯自定義監控自定義監控項管理

a.命名空間中的數字串,即是用戶的aliuid

b. 監控項名稱,即是用戶創建監控項時填寫的名稱

c. 監控項值,是用戶上報到雲監控的業務數據

d.  字段信息,結合監控項,表示具體業務字段的實際意義。

    例如字段信息是  machineIp,監控項名稱是 cpuutilization,若當前cpu利用率80%,那麼在上面的示例中傳入的 參數分別是 1359099605207770 ,cpuutilization,0.8,machineIp=192.168.1.1

2、定製腳本

我製作的調用自定義SDK的腳本內容如下:

vi tomcat_process_check.sh

#!/bin/bash
## This is a monitor shell script for aliyun ecs
## It is mainly used to monitor the presence of the Tomcat process
## Created in 2015.07.25
## Written by Edison
## Version 1.0

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
export VAUL=$(ps --user tomcat |grep java |wc -l)
#export VAUL=$(ps aux --user deploy |grep java |grep -E "a|b|c"|wc -l)
#export IP=$(ifconfig | sed '/.*inet addr:/!d;s///;s/ .*//' |grep -v "127.0.0.1" |sed -n "1p")
export HOSTS=$(hostname)
#新版監控腳本位置自定義
/usr/local/aegis/script/cms_post.sh 1359099605207770 tomcat $VAUL java=$HOSTS-tomcat-stop

給予腳本執行權限
chmod +x cms_post.sh tomcat_process_check.sh

3、配置調度任務

3-1新版監控(cloudmonitor進程)

將腳本放置到任意位置中:
/usr/local/aegis/script/

添加crontab定時任務(與雲監控控制檯中設置監控項【上報頻率】保持一致)

* * * * * /bin/bash /usr/local/aegis/script/tomcat_process_check.sh >/dev/null 2>&1


3-2舊版監控如果是利用阿里雲監控自帶的調度任務,那麼我們需要將腳本放置到制定位置:
/usr/local/aegis/aegis_quartz/libexec/user
然後添加調度任務,執行此命令必須使用絕對路徑

/usr/local/aegis/aegis_quartz/aegis_quartz -e "AddTask [0 0/5 * * * ?] /usr/local/aegis/aegis_quartz/libexec/user/tomcat_process_check.sh"
##刪除
/usr/local/aegis/aegis_quartz/aegis_quartz -e "RemoveTask [0 0/5 * * * ?] /usr/local/aegis/aegis_quartz/libexec/user/tomcat_process_check.sh"
##查看任務
/usr/local/aegis/aegis_quartz/aegis_quartz -e "GetTasks"
##aegis_quartz 幫助
[root@server07 ~]# /usr/local/aegis/aegis_quartz/aegis_quartz -h
Usage:/usr/local/aegis/aegis_quartz/aegis_quartz
   -f  configFile            (default:conf/aegis_quartz.conf)
   -c  configFile            (only check configFile)
   -e "opType value"         (get or set some inner info)
   -v                        (show agent version)
   -h                        (show help)
about opType and value: 
   SetLogLevel [error|warn|info|debug] (set agent log level)
   GetLogLevel            (show agent log level)
   GetConfig              (show config)
   GetTasks               (show tasks)
   GetTasksJson           (show tasks)
   GetTaskStatus          (show task status)
   AddTask "xxx"          (add task)
   RemoveTask "xxx"       (remove task)
   RemoveAllTasks         (remove all tasks)

需要用戶注意的一些事情:
I. aegis_quartz 進程請匆停止,系統的監控數據採集是通過 aegis_quartz 完成
II. aegis_quartz 程序的調用請使用絕對路徑,如 linux 環境下
/usr/local/aegis/aegis_quartz/aegis_quartz
III. aegis_quartz libexec/default 下面的腳本是內置的監控數據採集腳本,請用戶匆
修改
IV. 用戶的監控數據程序只能放在 libexec/user 目錄下面;上面添加任務與刪除任務
的示例中,腳本程序的路徑寫的即是相對路徑。因此,用戶在命令行中的腳本路徑
只需要填寫成 user/xxx 即可(其中 xxx,是用戶的腳本)
V. 關於任務的執行頻率,是基於標準的 quartz 表達式,用戶按照規範填寫即可。腳
本的監控數據上報頻率請與雲監控控制檯中設置監控項【上報頻率】保持一致(控
制臺支持的頻率是 1 分鐘,5 分鐘,15 分鐘),若修改上報頻率請保持控制檯與
腳本一致,否則監控數據處理會不準確

如果你發現不能上報數據,可以使用

/usr/local/aegis/aegis_quartz/aegis_quartz -e "SetLogLevel debug"

設置日誌級別,來查看日誌排查問題。更多選項請查看 aegis_quartz -h

日誌目錄 /usr/local/aegis/aegis_quartz/log


4、配置報警

然後我們設置報警規則,在報警管理如圖:
fail
這裏需要注意,字段的值一定要與腳本中字段的值一致,否則即使監控的值觸發了你的報警規則,狀態依然是正常的。

下面就是我收到阿里雲的短信報警信息,上報頻率5分鐘
【阿里雲】您監控tomcat的f45966d***e60d在11:10發生報警,實例:(server07-tomcat-stop),值爲0個,請登錄雲監控平臺查看
【阿里雲】您監控tomcat的f45966d***e60d在11:15發生報警,實例:(server07-tomcat-stop),值爲0個,請登錄雲監控平臺查看

配置成功。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章