基於金笛簡訊Web中介軟體實現Cacti簡訊報警

2021-10-17 19:03:27 字數 2237 閱讀 5014

注:此外掛程式面向cacti版本0.8.8h

cacti圖

我們將介紹如何給cacti裝置監控系統新增簡訊報警,以便讓運維人員及時收到裝置故障報警,減少應急修復反應時間。

首先介紹完成簡訊報警需要接觸到的兩個主要程式,由cacti的兩個外掛程式以及金笛簡訊web中介軟體構成。

傳送簡訊的任務由金笛簡訊web中介軟體與金笛簡訊貓配合完成,下圖為web中介軟體的簡訊收發介面設定,僅需通過訪問http介面,即可用web中介軟體完成各類簡訊的收發。

而cacti這邊需要兩個基本外掛程式完成報警動作,其中settings外掛程式提供郵件傳送介面,thold外掛程式提供閾值觸發以及報警服務,我們只需要將這兩個外掛程式進行改造即可讓cacti擁有簡訊報警的功能。

cacti的一般報警流程是這樣的:cacti部署到企業內網並新增需監控的伺服器,在thold外掛程式中設定好報警閾值,即可在發生故障時觸發settings外掛程式的郵件報警功能。

新增簡訊報警功能,我們需要做的是給settings外掛程式新增簡訊處理**塊,可以實現通過金笛web中介軟體傳送簡訊報警,及時通知運維人員進行修復。

以下講解如何給cacti的settings外掛程式新增必要的**,為cacti新增簡訊報警功能,具體實施步驟如下:

在settings外掛程式的目錄(\cacti\plugins\settings\)下找到setup.php和include目錄下的mailer.php兩個檔案,分別對這兩個檔案進行如下修改

setup.php(新增管理選單)

將選單**構造如下

修改之後的效果如圖,已基本將呼叫所有需要配置的內容囊括,而且可以在之後的**中直接呼叫其值。

mailer.php新增核心**(用於傳送簡訊的**)

核心**用於呼叫簡訊中介軟體web介面通訊,可以放在mailer.php內的mailer類中,命名為send_sms(),原理是用php的原生curl直接呼叫web中介軟體的http介面,之後在外掛程式中呼叫$mailer->send_sms()即可實現通過中介軟體發簡訊的功能。

由於**直接調了cacti自帶的配置文字,修改配置也非常方便。

在實際實施中我們新增了較多的判定,以保證cacti能正確讓web中介軟體傳送簡訊,以防止通訊**錯,出現漏發或cacti崩潰的情況發生,也新增了debug記錄,可以在測試中及時發現問題.

mailer.php新增呼叫**(發郵件同時發簡訊)

此檔案需要更改的部分非常少,只需要在呼叫發郵件的方法_send_mail()之後新增呼叫簡訊傳送的方法,即可呼叫上一步在mailer.php中構造的發簡訊方法來傳送簡訊。

以上一系列配置避免了乙個問題:有些外掛程式沒有根據settings文件中寫的推薦方式去呼叫settings/includes/functions.php中的發郵件方法,比如settings外掛程式和thold外掛程式原作者jimmy conner,直接在需要發郵件的地方include(mailer.php),不通過functions.php中的發郵件方法,也避免了有些時候測試時一切正常,但是實施後漏收簡訊的問題。

當然,也有客戶不想所有通知都發簡訊,覺得簡訊太多無法體現出通知簡訊的重要性。可以按照以下步驟進行**改造:

在需要發簡訊的cacti外掛程式中(比如thold的輪詢功能polling),找到其呼叫發郵件的語句;

在發郵件的**中找到郵件正文的變數名;

在呼叫郵件語句之後再呼叫一次mailer類的send_sms()方法,將郵件正文發給這個方法;

測試是否能正確呼叫該**。

WEB中介軟體漏洞

下午的乙個 面試讓我措手不及,壓根就沒準備。不過面試官很好,引導我回答問題,也了解很多了知識,但自己不爭氣,給了他一種似懂非懂的感覺,估計是涼了。一開始我聽到這個我人傻掉,啥是中介軟體,經過面試官引導才知道就是tomcat weblogic jboss這些東西,我們經常管web中介軟體叫做web伺服...

中介軟體 Web中介軟體到底是什麼?

中介軟體 顧名思義,中介軟體是提供系統軟體和應用軟體之間連線的軟體,以便於軟體和系統各部件之間的聯絡。中介軟體處於作業系統和更高一級應用程式之間 將應用程式執行環境與作業系統相互隔離 作業系統 中介軟體 應用程式 web中介軟體 主要作用是提供系統軟體和應用軟體之間連線的軟體,以便於軟體各部件之間的...

PHP 中介軟體實現

注意 本文內容可能已經過時,優化的實現請參考 php 基於 psr 15 的中介軟體和請求處理 本文採用層層遞進的方式描述了中介軟體的實現。在很多計算機程式語言中,函式可以作為引數傳遞到另外乙個函式中。php 的例子如下 fun function function main fun main fun...