在工作中或多或少接觸過部分監控工具的構建,開發和完善。結合自己的一些看法,簡單地談下一個完整的監控系統所包含的組件,歡迎大家補充。
從監控的層面來看,一個比較完整的監控系統應該包含如下的層次:
1.網路層面主要包含各個機房間網路狀況,機房內機器網路狀況,通過開源的工具smokeping可以做到
2.主機層面對於網路裝置來說,包括cpu,記憶體,連接埠速率,流量等
對於伺服器來說,從硬體到系統層面都要進行完善的監控,底層的比如raid卡狀態,磁碟容量使用狀態,inode使用狀況,是否唯讀,是否有壞道,記憶體使用量,網卡是否百M,網卡流量等。再上面比如負載,cpu使用,磁碟io,作業系統參數,檔案描述符,網路連接數,隊列,系統日誌等等,現在用的比較多的工具是zabbix,nagios和cacti。
3.應用程式層面可用性監控包括進程的狀態,連接埠的狀況,存活的檢查等,比如監控nginx,需要監控nginx的連接埠狀態,進程是否存活,監控dns,需要監控連接埠,進程,還可以監控記錄是否正常解析。這些可以簡單地通過zabbix實現。
4.應用程式層面效能監控在應用程式層僅僅做可用性的監控是不夠的,還要對應用的效能做監控,這就需要使用者對應用的效能影響點有深入的瞭解。比如監控redis,需要監控redis的cpu使用方式,cache的效率等。監控tomcat這種jvm容器,需要監控java heap,gc,java thread等相關資訊。這類監控資料也可以整合搭配zabbix裡面來做
5.服務的可用性簡單地來說就是業務正不正常,這個可以在業務上線的時候統一提供一個監控url來做檢測,判斷url的返回碼或者是內容來判斷服務是否正常。提供的檢測url要做一些可用性方面的簡單地判斷,比如如果應用用到了redis就要去操作一下redis。這一層的監控可以通過自己開發一個小的監控程式來實現目前我們是通過pycurl+nagios+django+bootstrap來做的)。
6.服務的qos監控服務的可用性監控有了,服務的品質狀況也需要監控。這個又包括伺服器端的和面向使用者的。1)伺服器端的資料一般是通過分析訪問日誌來實現,比如網域名稱的nginx的回應時間分布,平均回應時間,服務的狀態2xx,3xx,4xx,5xx占的比例),平均body size大小狀況,各個pool的調用狀況,具體到省市的qos等等。伺服器端的資料也分為即時的和離線的,即時的可以藉助flume+hadoop+impala或者storm的流式計算架構來實現各個網域名稱的nginx日誌),離線的資料可以通過hadoop + hive來實現商業cdn qos資料)
2)面向使用者的資料是通過在頁面埋點來實現的,通過在頁面中埋入js代碼,可以在使用者訪問頁面時,將所需要的資料通過url的形式記錄在訪問日誌上,然後交由後端處理。
通過分析伺服器端的和面向使用者的qos資料相結合,可以很清楚的瞭解到網站的qos狀況。
7.安全方面的監控又包括主機層和服務層,比如webshell檢測,主機入侵檢測,後門檢測,檔案校正等等。
8.最後就是業務上的監控了,這個沒怎麼接觸過,就不寫了
監控的資料有了之後就是警示的問題了,這裡我們傾向於:
1.通過一個中心化的事件處理平台來處理警示資訊,整合cmdb的資訊,把警示資訊分組,定義層級並發送至相關責任人處理
2.警示郵件要包含足夠多的資訊,比如具體到一個網域名稱的http code不正常,需要在警示郵件中有breakdown到http code,server,url等的相關資訊,這樣,警示處理人就可以快速的定位到問題。
最後附一個之前畫的一個基於zabbix的一個監控的流程圖:1)使用者提交監控配置和指令碼至puppet server,並關聯cmdb的業務和puppet的module,由puppet 實現zabbix agent的部署,更新,reload。2)使用者通過zabbix api一鍵式添加模板,伺服器根據主機名稱,運行應用自動link到對應的模板,主機群組等。3)使用zabbix的server-proxy結構,zabbix agent使用passive的模式,proxy使用active的模式,由proxy負責收集資料,sync到server。4)server的db做ms高可用,並將slave中zabbix的曆史資料history*表,trends表)通過sqoop匯入hadoop叢集,load至hive中歸檔。5)使用者可以基於hive中的曆史資料做效能分析和容量規劃報表。6)zabbix server負責警示產生,並通過訊息機制發送至事件處理中心,事件處理中心關聯cmdb,發送至對應業務的對應負責人。
650) this.width=650;" src="/e/u/themes/default/images/spacer.gif" style="background:url("/e/u/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/140120/2243593W1-0.png" title="clipboard.png" alt="174507765.png" />
本文出自 “菜光光的部落格” 部落格,請務必保留此出處http://caiguangguang.blog.51cto.com/1652935/1344826