HI 大家好,去年有寫過一篇Cacti如何結合Line來發告警訊息,
但是那個API畢竟不是官方的所以後來就被封了只好另找出路
,今天來介紹結合Hipchat來發告警訊息.
1.先申請hipchat帳號,申請方法非常簡單這邊就不贅述
http://imgur.com/Jrbjvz9
2.申請完後登入可以依照你的作業系統下載client
http://imgur.com/fPAXuxt
3.使用client登入後,先create new room
http://imgur.com/CaiuwtP
4.再來我們要產生access token,回到網頁點選account settings
http://imgur.com/CZhEIGy
5.再點選API access
http://imgur.com/881OJ7d
6.賦予這個token權限,為了測試方便我先全選
http://imgur.com/n6WlFGj
7.取得token後,打開瀏覽器輸入
https://api.hipchat.com/v2/room?auth_token=你剛取得的token
或是使用curl https://api.hipchat.com/v2/room?auth_token=你剛取得的token
這時候你就能看到你剛剛建立的room id
8.再來我們到cacti的目錄(我這邊是/usr/share/cacti/plugins/thold)
下vi一個hipchat.php,code如下,$room_id,$auth_token填剛剛產生的
,$data這邊我說明一下,color可以改成yellow, green, red, purple, gray
任選一個預設是黃色,重點來了,在message這邊一定要@在這個room裡面的成員
不然hipchat ios or android app不會推送通知.
ps.這邊有用到json_encode,所以要裝php-pecl-json
ex:yum install php-pecl-json
記得要restart httpd or php-fpm看你用什麼環境
下面的code礙於ptt的篇幅所以有斷行,請在自行接回去
參考文件
https://www.hipchat.com/docs/apiv2/method/send_room_notification
<?php
$room_id = 'xxxxx';
$auth_token = 'xxxxxxxxxxxxxxxxx';
$data = array("color" => "red","notify" => "true", "message_format" => "text"
, "message" => "@連勝文 @朱立倫 $argv[1]");
$data_string = json_encode($data);
$url = "https://api.hipchat.com/v2/room/{$room_id}/notification?auth_token=
{$auth_token}";
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($c, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($c, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
echo curl_exec($c);
?>
9.再來修改thold_functions.php這隻程式,找到
function thold_mail($to, $from, $subject, $message, $filename, $headers = '')
移動到function 的最尾端可以看到return ''; ,在return '';前加入
$sms = shell_exec('php /usr/share/cacti/plugins/thold/hipchat.php '
.escapeshellarg($message).'');
完成圖 電腦
http://i.imgur.com/H0PESyY.png
完成圖 手機
http://i.imgur.com/MWmetB4.jpg
Hipchat可以應用在很多方面,大家可以多多研究.