Use google calendar api to Nagios send notification by SMS

經過之前的安裝與設定,大略已經知道 python 版的 google api 是如何操作與使用 google calendar 。而這次的記錄主要是能讓 nagios 的事件,透過 google calendar api 來發送簡訊通知

Nagios 要使用 google api ,它上面必需要安裝 google api 。如果 Nagios 還沒安裝 google api 就趕緊安裝吧!因為我的 Nagios server 是架在 FreeBSD 上,所以還要再安裝一次 google api 。

在 Nagios 上需要修改幾個檔案來才能使用 Google 簡訊通知服務:

    • /usr/local/etc/nagios/object/command.cfg #命令定義配置檔
    • /usr/local/etc/nagios/object/contacts.cfg #通知聯絡配置檔

/usr/local/etc/nagios/object/command.cfg

# 'notify-host-by-google-calendar' command definition
define command{
        command_name    notify-host-by-google-calendar
        command_line    /usr/local/libexec/nagios/notify_by_google_calendar.py " $HOSTNAME$ is $HOSTSTATE$ "
        }

# 'notify-service-by-google-calendar' command definition
define command{
        command_name    notify-service-by-google-calendar
        command_line    /usr/local/libexec/nagios/notify_by_google_calendar.py " $SERVICEDESC$ was $SERVICESTATE$ on $HOSTALIAS$ "
        }

/usr/local/etc/nagios/object/conatacts.cfg

############# Add flow define ####################################

define contact{
        contact_name                    nagiosadmin2
        use                             generic-contact
        alias                           Nagios Admin2
        service_notification_commands   notify-service-by-google-calendar
        host_notification_commands      notify-host-by-google-calendar
        }

###############################################################################
###############################################################################
#
# CONTACT GROUPS
#
###############################################################################
###############################################################################

# We only have one contact in this simple configuration file, so there is
# no need to create more than one contact group.

define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 nagiosadmin,nagiosadmin2
        }

修改 notification_by_google_calendar.py 的執行權限並複製到 /usr/local/libexec/nagios/ 目錄下。

sudo chmod ug+x notification_by_google_calendar.py
sudo cp notification_by_google_calendar.py /usr/local/libexec/nagios/

重新載入 naigos 設定

sudo /usr/local/etc/rc.d/nagios reload

FreeBSD 沒安裝圖形介面,所以需修改 notify_by_google_calendar.py 。將 FLAGS.auth_local_webserver = False 這一行前面的註解拿掉,如此就不會在沒安裝瀏灠器的電腦主機開啟瀏覽器作驗證的動作。

# To disable the local server feature, uncomment the following line:
FLAGS.auth_local_webserver = False

在第一次執行測試時,會要求輸入驗證碼,完成驗證動作。

執行畫面如下

[root@MyFreeBSD ~]# python /usr/local/libexec/nagios/notify_by_google_calendar.py first_running
2012-02-06T13:35:26.770660
Go to the following link in your browser:

    https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar&redirect_uri=oob&response_type=code&client_id=716912592564.apps.googleusercontent.com&access_type=offline

Enter verification code: 4/5Fwn9YycSE5NAQwIQGhzy_f3fxYX
Authentication successful.
c9eeltd8ibd8ekpgjgv05dghus

該如何取得 API 驗證碼

允許存取

取得驗證碼

改變 calendar.dat 的存取權限

由於產生的 calendar.dat 是用 root 執行腳本產生,所以存取權限為 600 擁有者 root 。所以要讓 nagios 可以存取 calendar.dat ,需要將檔案存取權限改為 660

[root@MyFreeBSD ~]# ls -al /root/calendar.dat
-rw-------  1 root  wheel  503  2  6 13:38 /root/calendar.dat
[root@MyFreeBSD ~]# chmod 660 /root/calendar.dat
[root@MyFreeBSD ~]# ls -al /root/calendar.dat
-rw-rw----  1 root  wheel  503  2  6 13:38 /root/calendar.dat

完成以上設定就能透過 google 來發送簡訊。

P.S : 日曆共享設定說明

  1. 用公司資訊部門的電子郵件申請一個google的帳號,假設是 MIS@toyoink-ct.com.tw的帳號。
  2. 利用部門帳號登入並建立一個日曆專供 Nagios 記錄系統事件。
  3. 加入資訊人員個人的gmail帳號,為可共用 Nagios 系統記錄日曆的帳號。
  4. 資訊人員登入goole個人帳號,針對 Nagios 系統記錄共享日曆的通知進行設定。設定個人帳號的共用日曆,於事件開始前 0 分鐘使用 SMS 發出通知。
  5. 若設定完成後有事件新增於共用日曆上,卻遲遲無法收到通知的簡訊。可以試著使用個人帳號登入於共用日曆上新增一測試的事件,讓 google 發送簡訊通知你。之後應該就可以正常的接收 API 新增的事件通知的簡訊了。

One thought on “Use google calendar api to Nagios send notification by SMS

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s