鍍金池/ 教程/ Python/ 報(bào)警監(jiān)控平臺擴(kuò)展功能 url 回調(diào)的設(shè)計(jì)及應(yīng)用 [python 語言]
通過 memcached 實(shí)現(xiàn)領(lǐng)號排隊(duì)功能及 python 隊(duì)列實(shí)例
利用 pypy 提高 python 腳本的執(zhí)行速度及測試性能
Python FAQ3-python 中 的原始(raw)字符串
Mongodb 千萬級數(shù)據(jù)在 python 下的綜合壓力測試及應(yīng)用探討
Parallel Python 實(shí)現(xiàn)程序的并行多 cpu 多核利用【pp 模塊】
python simplejson 模塊淺談
服務(wù)端 socket 開發(fā)之多線程和 gevent 框架并發(fā)測試[python 語言]
python Howto 之 logging 模塊
python 之 MySQLdb 庫的使用
關(guān)于 python 調(diào)用 zabbix api 接口的自動(dòng)化實(shí)例 [結(jié)合 saltstack]
python 之利用 PIL 庫實(shí)現(xiàn)頁面的圖片驗(yàn)證碼及縮略圖
Python 通過 amqp 消息隊(duì)列協(xié)議中的 Qpid 實(shí)現(xiàn)數(shù)據(jù)通信
python 中用 string.maketrans 和 translate 巧妙替換字符串
python linecache 模塊讀取文件用法詳解
Python 批量更新 nginx 配置文件
python 計(jì)算文件的行數(shù)和讀取某一行內(nèi)容的實(shí)現(xiàn)方法
python+Django 實(shí)現(xiàn) Nagios 自動(dòng)化添加監(jiān)控項(xiàng)目
多套方案來提高 python web 框架的并發(fā)處理能力
python 寫報(bào)警程序中的聲音實(shí)現(xiàn) winsound
python 調(diào)用 zabbix 的 api 接口添加主機(jī)、查詢組、主機(jī)、模板
對 Python-memcache 分布式散列和調(diào)用的實(shí)現(xiàn)
使用 python 構(gòu)建基于 hadoop 的 mapreduce 日志分析平臺
一個(gè)腳本講述 python 語言的基礎(chǔ)規(guī)范,適合初學(xué)者
Python 編寫的 socket 服務(wù)器和客戶端
如何將 Mac OS X10.9 下的 Python2.7 升級到最新的 Python3.3
python 監(jiān)控文件或目錄變化
報(bào)警監(jiān)控平臺擴(kuò)展功能 url 回調(diào)的設(shè)計(jì)及應(yīng)用 [python 語言]
Python 處理 cassandra 升級后的回滾腳本
python 實(shí)現(xiàn) select 和 epoll 模型 socket 網(wǎng)絡(luò)編程
關(guān)于 B+tree (附 python 模擬代碼)
通過 python 和 websocket 構(gòu)建實(shí)時(shí)通信系統(tǒng)[擴(kuò)展 saltstack 監(jiān)控]

報(bào)警監(jiān)控平臺擴(kuò)展功能 url 回調(diào)的設(shè)計(jì)及應(yīng)用 [python 語言]

前言:

這個(gè)國內(nèi)也有一些第三方的廠商在用,比如 dnspod 的 url 回調(diào)和監(jiān)控寶的 url 回調(diào)!

有人開源了一個(gè)腳本,監(jiān)控寶的 url 回調(diào),可以聯(lián)合 dnspod 的 api 接口。可以處理當(dāng) ip-A 的 web 死掉的時(shí)候,dns 記錄切換到 ip-B 上。 當(dāng)然這只是個(gè)小應(yīng)用罷了,但不能不說,這個(gè)想法確實(shí)不錯(cuò)。 我這邊也實(shí)現(xiàn)了類似方式。

所謂的 URL 回調(diào)功能,您可以讓告警通知發(fā)送到您指定的 URL,使你能更加靈活處理告警消息。 打個(gè)比方,有個(gè)服務(wù)器的 nginx 進(jìn)程死掉了,這個(gè)時(shí)候 nagios 監(jiān)控到了這個(gè)情況,然后調(diào)用了我這邊的接口,我這邊接到的 post 數(shù)據(jù),不僅發(fā)郵件,而且會(huì)根據(jù)注冊事件的情況,進(jìn)行處理。 如果注冊了一個(gè)遠(yuǎn)程 nginx 重啟的事項(xiàng),我這邊就遠(yuǎn)程 paramiko 或者是 saltstack 過去重啟該進(jìn)程 ?。?!

http://wiki.jikexueyuan.com/project/python-actual-combat/images/57.jpg" alt="pic" />

怎么個(gè)靈活法:

每個(gè)業(yè)務(wù)部門其實(shí)都想自己統(tǒng)計(jì) error 情況,但是監(jiān)控平臺一般是在基礎(chǔ)監(jiān)控部門手里掌控者,又不太方便做部署,這個(gè)時(shí)候,url 回調(diào)是個(gè)好方法。我會(huì)把每次告警的信息不僅推到你的 mail 和手機(jī)上,而且會(huì)給你的 url 地址做 webhook。你服務(wù)端接受認(rèn)證后的 url 地址后,會(huì)有相應(yīng)的措施,比如調(diào)用 saltsatck 來進(jìn)行處理特定的主機(jī),比如插入到庫里面,自己做報(bào)表統(tǒng)計(jì),根據(jù)來著的信息做自動(dòng)化處理。

關(guān)于觸發(fā)式的處理:

只是個(gè)人的想法而已 ~

在監(jiān)控系統(tǒng)的體系下,比如有 nagios,zabbix 專業(yè)監(jiān)控系統(tǒng)。 咱們還是用例子說話: 監(jiān)控 mysql 從是否高延遲,嚴(yán)重不同步問題的時(shí)候,咱們一般是在 nagios 里加載監(jiān)控獲取判斷從延遲的腳本,以及在某個(gè)節(jié)點(diǎn)上做處理腳本【腳本的內(nèi)容是 while get 每個(gè) mysql 從情況,高延遲的那臺在負(fù)載群里面踢出去】,這樣算的話是兩個(gè)腳本了。

如果利用 url 回調(diào),可以用處理腳本,這個(gè)腳本也只是當(dāng)觸發(fā) url 回調(diào)的時(shí)候,才執(zhí)行才處理的。避免了處理腳本沒完沒了的去判斷和獲取狀態(tài)。要是監(jiān)控一些統(tǒng)計(jì)壓力大的服務(wù),那就有點(diǎn)悲催了。

當(dāng)然這樣也會(huì)有些問題的,比如 web 死掉的話,他無法接受 url 回調(diào),另一方面 開發(fā)部也不想調(diào)用系統(tǒng)層面的外部命令,畢竟責(zé)任是個(gè)問題。

下面是我寫的 url 回調(diào)的 demo,等有機(jī)會(huì)上線供大神們測試下。

第一版的時(shí)候,沒有定義 post 的方式,以及回調(diào)結(jié)果的查看。

http://wiki.jikexueyuan.com/project/python-actual-combat/images/58.jpg" alt="pic" />

第二版做了,get 和 post 的方式,返回結(jié)果的驗(yàn)證。

http://wiki.jikexueyuan.com/project/python-actual-combat/images/59.jpg" alt="pic" />

下面是平臺的 demo ~ 我想說的是,現(xiàn)在好多公司的告警信息都沒有統(tǒng)計(jì),隨意的調(diào)用 smtp 發(fā)郵件,而不知道發(fā)送成功了沒有,每個(gè)月發(fā)送了幾次,發(fā)送都是啥內(nèi)容。當(dāng)然這些東西在 nagios zabbix 也大體可以看到,但是個(gè)人覺得還是綜合到一個(gè)管理系統(tǒng)下,管理系統(tǒng)更加直觀。

也有想這么搞的朋友直接提問題就行,我會(huì)第一時(shí)間給大家解答~

框架:
nginx tornado jquery

http://wiki.jikexueyuan.com/project/python-actual-combat/images/60.jpg" alt="pic" />

http://wiki.jikexueyuan.com/project/python-actual-combat/images/61.jpg" alt="pic" />

此文接上文: http://rfyiamcool.blog.51cto.com/1030776/1332160

有后文,會(huì)補(bǔ)上的~

本文出自 “峰云,就她了。” 博客,謝絕轉(zhuǎn)載!