這個(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è)業(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)化處理。
只是個(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)載!