今天在用 Nagios 監控一個 HTTP Url 的時候屢屢發生監控失敗的訊息『Return code of 127 is out of bounds – plugin may be missing』但實際檢查 Url 是正常的!
就字面上來看,說是缺少 Plugin,但我用的是一般 check_http,其他 HTTP Url 都沒有這個問題呀!所以初步排除缺少 Plugin 的問題
監控 Url:https://taiwan.com/download.php?client=android&channel=shazi
在發生問題之前我的設定檔如下
define service { use generic-service host_name taiwan.com service_description taiwan for Android check_command check_http! --ssl=3 -u /download.php?client=android&channel=shazi -c 30! contact_groups system }
看起來問題不大,但嘗試用 check_http 測試後才發現問題藏在細節裡!
如果你手動執行 check_http
$ ./check_http --ssl=3 -H taiwan.com -u /download.php?client=android&channel=shazi
你將會發現這段監控被拆成兩段
http://taiwan.com/download.php?client=android
和
channel=shazi
看出關鍵就是在 & 身上出包的!
正確使用方式必須用雙引號 “” 包起來
define service { use generic-service host_name taiwan.com service_description taiwan for Android check_command check_http! --ssl=3 -u "/download.php?client=android&channel=shazi" -c 30! contact_groups system }
這算是很基本的帶參數常識,但如果你直接在 Nagios 設定,看到這樣的錯誤訊息一定抓不到頭緒!
另外補充在上面我有帶到 –ssl=3 代表我要使用 https 並且為 sslv3 的協定,若是你要監控證書到期日,也可以用 -C 來監控剩餘天數!