將此篇文章跟 Facebook 上的朋友分享將此篇文章跟 Plurk 上的朋友分享將此篇文章跟 Twitter 上的朋友分享列印轉寄
2019/4/30

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

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

丁光立
網管人員如果能夠即時發現設備發生異常狀態,就可提早一步進行前置處理,從而減少許多潛在的威脅。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/)分享一些實務上的經驗和測試心得。>

這篇文章讓你覺得滿意不滿意
送出
相關文章
產業變革搶成IT人才荒 人力銀行揭供需真相
Cacti匯整NetFlow資訊 網路監控/報表產出全包辦
趨勢科技與 NEC、Netcracker 攜手合作提供整合式虛擬網路防護解決方案
兩種網管自動化協定 搞定大型Cisco網路管理
修改現成Cacti圖表範本 自訂網管數據監看不求人
留言
顯示暱稱:
留言內容:
送出