监控:系统构架重要的一环
監(jiān)控非常有用,不僅能及時預(yù)警發(fā)現(xiàn)故障,事后還能提供詳實(shí)的數(shù)據(jù)用于追查定位問題。
監(jiān)控也非常重要,從產(chǎn)品的角度來看,沒有監(jiān)控意味著產(chǎn)品是不可靠不安全的。從技術(shù)的角度來看,沒有監(jiān)控意味著分析bug就如同盲人摸象,不知下次故障何時發(fā)生,出現(xiàn)故障后毫無頭緒,無法解決。
說到監(jiān)控大家首先想到的是運(yùn)維監(jiān)控,不過監(jiān)控不僅僅是運(yùn)維的工作。后端可以有后端的監(jiān)控(如監(jiān)控php的致命錯誤),前端也可以有前端的監(jiān)控(如監(jiān)控app閃退)。甚至產(chǎn)品運(yùn)營都要各自的監(jiān)控,它是一種實(shí)用方法。
運(yùn)維監(jiān)控:
目標(biāo):
1.實(shí)時監(jiān)控系統(tǒng)
2.能實(shí)時反饋系統(tǒng)狀態(tài)
3.保障服務(wù)安全穩(wěn)定
4.保證產(chǎn)品穩(wěn)定運(yùn)行
方法:
1.了解監(jiān)控對象
2.分析監(jiān)控對象有哪些指標(biāo),例如CPU的指標(biāo)有使用率、負(fù)載、用戶態(tài)、內(nèi)核態(tài)、上下文切換
?3.給每個指標(biāo)設(shè)置閾值,可以設(shè)多個閾值,例如提醒閾值,警告閾值,故障閾值。
4.超過提醒/警告/故障閥值時需要設(shè)計(jì)處理流程,例如在管理端醒目顯示,給相關(guān)責(zé)任人發(fā)送消息等等
作用:
1.發(fā)現(xiàn)問題
2.定位問題
3.可以第一時間解決問題
4.總結(jié)過往問題為系統(tǒng)優(yōu)化提供方向。
工具:
Zabbix(神器),有它就夠了!是一個分布式監(jiān)控系統(tǒng),支持多種采集方式和采集客戶端,有專用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多種協(xié)議,它將采集到的數(shù)據(jù)存放到數(shù)據(jù)庫,然后對其進(jìn)行分析整理,達(dá)到條件觸發(fā)告警。其靈活的擴(kuò)展性和豐富的功能是其他監(jiān)控系統(tǒng)所不能比的。相對來說,它的總體功能做的非常優(yōu)秀。?
從以上各種監(jiān)控系統(tǒng)的對比來看,Zabbix都是具有優(yōu)勢的,其豐富的功能、可擴(kuò)展的能力、二次開發(fā)的能力和簡單易用的特點(diǎn),讀者只要稍加學(xué)習(xí),即可構(gòu)建自己的監(jiān)控系統(tǒng)。
流程:
1.采集各種指標(biāo)(種類繁多)的數(shù)據(jù)值。
2.將采回得數(shù)據(jù)存儲到DB
3.分析數(shù)據(jù)
4.展示數(shù)據(jù)和結(jié)論
5.超過閾值報(bào)警
6.可以設(shè)置處理流程,例如自動重啟等等。
細(xì)類:
硬件監(jiān)控,系統(tǒng)監(jiān)控?,應(yīng)用監(jiān)控?,網(wǎng)絡(luò)監(jiān)控?,流量分析?,日志監(jiān)控?,安全監(jiān)控?,API監(jiān)控?,性能監(jiān)控?,業(yè)務(wù)監(jiān)控等等。
這里的每個分類都可以講很多,就不展開了,需要了解的自行百度。當(dāng)然Zabbix工具基本可以覆蓋這些監(jiān)控。
軟件開發(fā)中的監(jiān)控思想:
軟件能夠上線并不意味著軟件運(yùn)行過程中不會出現(xiàn)bug,服務(wù)器硬件不會出現(xiàn)故障,進(jìn)程不會假死等等很多問題。最好的效果是即使出現(xiàn)故障也要是負(fù)責(zé)人第一時間知道而不是用戶先投訴。
?
軟件開發(fā)的過程中可以考慮的監(jiān)控手段有一下這些:
心跳檢測(比較適合客戶端模式的軟件):軟件定時發(fā)送心跳包,而監(jiān)控程序不停的檢測是否有心跳,如果檢測到說明軟件已經(jīng)掛掉了或者假死中。
通過異常/錯誤處理過程將錯誤信息發(fā)給責(zé)任人,每種編程語言都有異常/錯誤處理,我們可以自定義異常/錯誤處理類/方法,將錯誤/異常信息第一時間發(fā)送給開發(fā)者。
?
一個例子:監(jiān)控線上php的致命異常
具體的實(shí)現(xiàn)思路是這樣的:
1.php產(chǎn)生致命錯誤會通過日志類記錄這個致命的bug。
2.在日志類中埋入一個鉤子程序(切面編程思想)
3.通過鉤子程序?qū)㈠e誤信息發(fā)布到kafka(異步處理,防止阻塞)
4.另一個程序訂閱kafka中的錯誤信息,分析后,將錯誤信息通過釘釘發(fā)送給開發(fā)者。
5.開發(fā)者第一時間獲取到錯誤信息,立馬定位修改bug。
6.bug及時修復(fù)上線,避免重大損失。
?
?
歡迎大家討論和指正!!!
轉(zhuǎn)載于:https://www.cnblogs.com/chaogege1/p/9687869.html
總結(jié)
以上是生活随笔為你收集整理的监控:系统构架重要的一环的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: enum
- 下一篇: B1277 [HNOI2002]Tinu