nagios 整合 ganglia 设置邮件、短信报警
要學的東西還有很多呢,慢慢來~!
?
環境:
操作系統:ubuntu 10.10
軟件:ganglia-monitor 3.1.7-1,gmetad 3.7.1-1,nagios 3.2.1-2
?
步驟:
1.下載安裝nagios:
sudo apt-get install nagios3 nagios-plugins
輸入要發送報告的郵箱
輸入密碼(用戶名默認為:nagiosadmin)
2.把nagios的http文件鏈接到apache所在目錄,并重啟apache
sudo ln -s /usr/share/nagios3/htdocs /var/www/nagios
sudo service apache2 restart
現在,就可以通過http://localhost/nagios來訪問nagios了,查看service的時候會要求輸入用戶名和密碼,就是之前設置的
3.下載插件腳本
1)check_ganglia.py 試驗發現只適合單播、單個數據源的
去http://ganglia.sourceforge.net/downloads.php?component=ganglia-webfrontend&version=3.1.7下載ganglia的源文件
解壓后在contrib目錄中找到check_ganglia.py并復制到/usr/lib/nagios/plugins/目錄(該目錄在/etc/nagios3/resource.cfg腳本中被定義為USER1)
這個python腳本是通過ganglia收集到的數據發出不同等級的警報,nagios顯示這些警報信息或者根據設置通過郵件、短信發送警報信息給指定用戶
2)check_ganglia_metric.php 這個好像是最原生態的,都適合
下載地址:http://vuksan.com/linux/ganglia/check_ganglia_metric.phps
這是check_ganglia的php腳本,直接調用gmetad取得的信息,因此可以獲得other clusters and Grids的信息。把它復制到$USER1$目錄下。
調用方法:check_ganglia_metric.php hostName?metric_name less|more?value
4.在/etc/nagios3/conf.d添加一個名為ganglia-services.cfg的配置文件,添加如下設置:
#定義servicegroup方便host使用多個service
define servicegroup {
servicegroup_name ganglia-metrics
alias Ganglia Metrics
}
#定義host,address似乎可以不用,因為check_ganglia.py腳本只通過host_name就可獲取數據
#host_name可以從ganglia中看到
define host{
use generic-host ; Name of host template to use
host_name Just_Test
alias ? test-host
}
#定義hostgroup,members中可以指定屬于該組的成員,定義service的時候可以指定只有某組才能使用該service
define hostgroup {
hostgroup_name my-host-servers
alias test-group
members * ;可以指定多個host屬于當前組,用逗號分隔
}
#定義check_ganglia.py的command,執行檢測腳本
#define command {
# command_name check_ganglia
# command_line $USER1$/check_ganglia.py -h $HOSTNAME$ -m $ARG1$ -w $ARG2$ -c $ARG3$
#}
?
#定義command,執行check_ganglia_metric.php檢測腳本
define command{
command_name check_ganglia
command_line $USER1$/check_ganglia_metric.php $HOSTNAME$ $ARG1$ $ARG2$ $ARG3$
}
#定義一個service集合,共享配置(似乎是這個意思)
define service {
use generic-service
name ganglia-service
hostgroup_name my-host-servers ;定義那個組需要當前服務
service_groups ganglia-metrics
notifications_enabled 1 ?;是否發送通知,1為發送,0為不發送
}
#定義具體service,check_command中的值:首先是command名,然后是用!分隔的參數,分別對應$ARG1$,$ARG2$。。。
#check_ganglia.py的檢測命令
define service {
use ganglia-service
service_description load_one ?;服務名稱
check_command ?check_ganglia!load_one!4!5 ;調用之前定義的command
}
#check_ganglia_metric.php的檢測命令
define service {
use ganglia-service
service_description 內存空閑
check_command check_ganglia!mem_free!less!10240
}
#發送郵件的command
define command {
command_name notify-by-email
command_line /usr/bin/printf "%b" "***** Nagios 3.2.1*****\nNotification Type: $NOTIFICATIONTYPE$\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\nDate/Time: $LONGDATETIME$\nAdditionalInfo: $SERVICEOUTPUT$" | /usr/local/bin/sendEmail -f sender@qq.com -t $CONTACTEMAIL$ -s smtp.qq.com -u "**$NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is ?$SERVICESTATE$ **" -xu sender@qq.com -xp password
}
5.修改contacts_nagios2.cfg
修改被通知的Email以及xx_notification_commands:
service_notification_commands notify-by-email
host_notification_commands notify-by-email
email 138xxxxxxxx@139.com
使用139的郵箱,讓接收短信的人去139郵箱那開通下短信通知(同時設置長短信打開),這樣就可以免費接到報警短信了。之前配飛信的時候遇到太多問題,而且聽說用飛信還要驗證碼,只好轉139郵箱了,似乎163也有郵件到達通知。
6.安裝sendEmail,發郵件通知(可以直接復制已經安裝的程序/usr/local/bin/sendEmail):
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.55.tar.gz
tar -zxvf sendEmail-v1.55.tar.gz
cd sendEmail-v1.55
cp sendEmail /usr/local/bin
chmod 0755 /usr/local/bin/sendEmail
測試sendEmail(我試的時候,只有qqmail能發送成功,163、sina什么的都不行,不知道為什么):
sendEmail -f sender@qq.com -t receiver@qq.com -s smtp.qq.com -u "test" -xu sender@qq.com -xp your-password -m "hello world!"
-f表示發送者的郵箱
-t表示接收者的郵箱
-s表示SMTP服務器的域名或者ip
-u表示郵件的主題
-xu表示SMTP驗證的用戶名
-xp表示SMTP驗證的密碼
-m表示郵件的內容
?
*結束語
至此,已經能通過nagios收到報警信息了,間歇性地花了一周事件才搞定。。慢慢來吧
轉載于:https://www.cnblogs.com/Nstd/archive/2012/11/08/2760180.html
總結
以上是生活随笔為你收集整理的nagios 整合 ganglia 设置邮件、短信报警的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Object to XML
- 下一篇: 7/7 第7篇 函数名与函数指针