網路管理 即時通訊 告警

搭建IFTTT網路服務平台 連動Webhook自動發布消息

新添LINE訊息告警 Cacti網管更即時

2019-04-30
網管人員如果能夠即時發現設備發生異常狀態,就可提早一步進行前置處理,從而減少許多潛在的威脅。Cacti是一款常見的網路管理工具,為了讓它更利於使用,可以善用網路服務平台IFTTT,來增加它原本不具備的LINE訊息告警機制,讓網路管理更即時。

 

由於Cacti是較早發展的網路管理工具,因此有許多功能在當初設計的時候並未提供,本文將示範如何在變動Cacti原始碼最小的狀況下新增LINE告警的功能。


操作環境說明

在開始之前,先說明將會使用到的軟體工具Cacti和IFTTT。關於Cacti,在此假設目前已自行將Cacti安裝完成,並能正常使用Thold功能(可透過Thold發送告警信),只須簡單地加入幾行的程式,就可以達到使用LINE傳訊的功能。

IFTTT(命名源由是if this, then that)是一個網路服務平台,可透過其他不同平台的條件來決定是否執行下一條命令,這裡會使用到的是Webhook,它在接到Web Request之後可以讓LINE執行Send Message功能。

簡單來說,IFTTT就是一個中介平台,可以把兩個不同的平台加以串接與結合來滿足使用的需求。

在此例中,將使用LINE發訊息,同樣地也可以替換為用Facebook貼文或用IG貼圖。

實際操作示範

首先,連上IFTTT的官方網址(https://ifttt.com/)。在使用IFTTT之前,必須先註冊帳號。註冊後登入網站,再點選左上角的「My Applets」,如圖1所示。

圖1  點選My Applets。

接著,按一下右上角的〔New Applet〕,如圖2所示。

圖2  點選New Applet。

如圖3所示,接著點選網頁中「if + this then that」裡的「+」號,以新增一個來源條件。

圖3  新增來源條件。

在搜尋視窗中輸入「webhooks」,如圖4所示。下方的圖示也會自動變成Webhooks的圖示,立即點選該圖示。

圖4  搜尋webhooks並點選其圖示。

接著,按一下〔Connect〕進行連結,如圖5所示。

圖5  進行連結。

然後是Choose trigger,設定觸發條件,點選畫面左方的「Receive a web request」,如圖6所示。

圖6  選擇Trigger。

接著,設定Event的名稱。如圖7所示,先輸入「cacti」,再按一下〔Create trigger〕按鈕。

圖7  設定事件名稱並建立Trigger。

接下來,設定Trigger被觸發後要執行的工作。在建立Trigger後,IFTTT會回到建立Applet的頁面,此時點選then後面的「+」號,如圖8所示。

圖8  設定需要執行的程式。

緊接著,選擇要執行的程式,在Choose action service部分,輸入「line」,然後點選LINE圖示,如圖9所示。

圖9  選擇LINE。

隨後需要建立與LINE的連結,按一下圖10中的〔Connect〕按鈕。

圖10  建立與LINE的連結。

如圖11所示,LINE會開啟一個新網頁,要求使用者輸入帳號和密碼驗證身分。

圖11  輸入LINE帳號及密碼。

成功登入之後,LINE會自動帶出連動的確認頁面,在此點選〔同意並連動〕,如圖12所示。

圖12  讓LINE與IFTTT連動。

接下來,要選擇想執行的動作,這裡能夠選擇的只有「Send message」,如圖13所示。

圖13  設定LINE要執行的動作。

然後,就可以設定要收訊息的對象(Recipient欄位)以及訊息的格式(Message),如圖14所示。

圖14  設定收訊對象和訊息格式。

在此必須注意,LINE亦可設定發訊息給群組,點選「Recipient」可看到其他群組名稱。此時若加以點選,就可以設定將訊息發給該群組,如圖15所示。

圖15  設定接收對象為個人或群組。

另外,在訊息的部分,也可以按照實際的需求做調整。例如將Value2和Value3移除,並加上「OccuredAt」欄位,如此一來,LINE就可以將傳訊的時間也加在訊息裡,如圖16所示。

圖16  設定訊息格式。

設定完成後,再點選圖14最下方的〔Create action〕,完成此動作的建立。

接著會看到如圖17的頁面,然後再按一下〔Finish〕按鈕,完成此項操作。

圖17  完成動作設定。

最後要取出Key,以便Webhooks接受Request時可進行身分驗證。在上方的搜尋列輸入「webhook」並按下右側的Enter圖示,如圖18所示。

圖18  搜尋關鍵字「webhook」。

接下來,先點選切換至Services畫面,再選擇下方的Webhooks圖示,如圖19所示。

圖19  選擇Webhooks。

然後,如圖20所示,點選右方的「Settings」以取得相關設定。

圖20  點選Settings取得設定值。

最後,在「URL」的部分就會看到「https://maker.ifttt.com/use/thisisyourkey」,如圖21所示,thisisyourkey就是在發送Web Request需要帶的Key。請將這串Key備份下來,之後將會使用到。這串Key是由英文大小寫及數字符號所組成的,此處只是用簡單的字串取代,請在使用時按照實際情形進行調整。

圖21  取得Key。

加入LINE Notify

在LINE的部分,必須加入LINE Notify此官方帳號才能收到訊息。要將「LINE Notify」加入好友,這部分的操作請參考LINE官方網頁的說明,該網頁連結如下所示:

https://help2.line.me/line_notify/web/?lang=zh_TW

以下內容節錄自LINE官網:只要於ID搜尋欄位中輸入「@linenotify」並進行搜尋,即可將「LINE Notify」官方帳號加入好友。

首先,在LINE應用程式內依序點選「加入好友」→「ID/電話號碼」後,輸入「@linenotify」並進行搜尋。然後,點選「加入」即可。加入好友的畫面,如圖22所示。

圖22  將LINE Notify加入好友。

在此要提醒一下,如果要發訊息到群組,該群組需要邀請LINE Notify這個使用者加入群組成員。


到Cacti Server做設定

首先要記得安裝php-curl套件,在此以Ubuntu 18.04為例:

sudo apt-get install php-curl

接著,下載所需程式,筆者已經放在github上,相關網址如下:

https://github.com/tiserle/cacti_thold_line

下載line.php和ifttt-php.class.php這兩支程式,並放在Cacti的「plugins/thold」目錄中。

如果有資安疑慮的話,建議先看一下程式碼,內容相當淺顯易懂。請將line.php中的putyourkeyhere替換成之前所備份的Key。

需修改的部分,在cacti 0.8x及1.x均相同。編緝thold_functions.php,接著找到「function thold_mail」這一行,在這個Function最後的「return '';」上方加入以下程式碼:

require_once('line.php');    list($a,$b,$c) = explode("Mes    sage:",$text['text']);    line($b,”null”,”null”);

新增程式碼之後,記得先存檔再離開。如果之前已經設定Thold發送告郵件,此時便會一併發送LINE的告警訊息,如圖23所示。

圖23  LINE Notify發送訊息。

結語

在本文中,利用IFTTT平台,可讓原本無法做到LINE訊息告警的Cacti也能提供此項功能。

讀者亦可自行結合其他套件以觸發所需的告警至各平台軟體或App,對於設備狀態的掌握將更具時效性,更能提早一步發現設備的異常而進行前置處理,從而減少潛在的威脅。

<本文作者:丁光立,在ISP工作多年。對於Cisco設備較熟悉,除此之外也研究Linux,這幾年慢慢把觸角伸到資安的領域,並會在自己的blog(http://tiserle.blogspot.com/)分享一些實務上的經驗和測試心得。>

 


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!