監控多台伺服器

來源:互聯網
上載者:User

標籤:線上人數   分系統   

主要分系統監控和業務監控兩類

系統監控就是每台主機的CPU,記憶體網路頻寬等使用方式以及Mysql, Redis, Nginx等服務的核心指標等這是比較基本的監控必須得有如果這塊監控做的好生產環境可以提前發現很多問題防患於未然。

業務監控就是業務相關的指標如某API每秒調用次數每分鐘該API的平均回應時間服務的線上人數甚至一些運營相關的資料如七日留存率啦每日新增使用者每日流失使用者等。這些資料也很重要他是你整個業務的晴雨表為你做一些重要決策提供依據。

對於系統監控有很多開源軟體可以拿來用如比較出名的nagios,cacti,zabbix等部署都比較複雜用戶端要部agent還得裝一個center用來收集儲存展現資料還有好多外掛程式需要維護。通過隊列把資訊發送給主服務,如果是同機房當然還是寫nagios的外掛程式會比較好,這樣是統一管理,而只需要寫外掛程式如果是機房是分布的,可以考慮nagios之間的訊息傳遞寫一些指令碼完成,自己寫的話是時間問題和管理上不統一的麻煩。但有一個比較簡單的東西是collectd它內建了各種外掛程式如系統CPU磁碟利用率mysql,nginx,redix等常用服務都可以進行監控而且自動給你推薦了要監控哪些指標。安裝很方便基本上./configuration && make && make install就可以了。

對於業務監控肯定是需要自己寫代碼上報業務資料的現在比較流行的方案是statsd+graphite比較輕量級而且有很多語言的sdk可以很輕鬆把各種指標監控起來。

監控的選擇 一般要看你的伺服器分布:
如果是分布式的機房, 機房很多, 那麼對集中監控和處理要求比較高, ganglia本身就有分布式特性, 是第一選擇; nagios需要再做些外掛程式的最佳化和結構調整才能更好的支援分布式的需求. 因為分布式面臨的問題是集中管理和可靠性, 可靠性: 網路傳輸可能出現的問題都要避免監控才能讓監控準確; 集中管理: 才可以減少工作量
如果是集中的, 在量很大的情況下還是建議使用ganglia, 如果小其它的很多監控都可以選擇, 警示監控還是用nagios, 好像很少有他這樣靈活的工具, 但一定要將配置改成最適合自己環境的, 並且最簡單和快速的配置 需要自己制定一些規則會比較好。


大多監控體系都差不多如下

  1. 每台機器上安裝一個agent用來採集原生效能資料服務資料

  2. 每台機器部署的業務根據一個sdk向center提交本業務相關的資料

  3. 每個agent可以動態按需求載入一些外掛程式以便監控新的指標

  4. 一般一個機房內有一個center用來收集各agent和各業務上報的指標

  5. center要把採集到的指標資料進行儲存歸檔壓縮一般用rrd database

  6. center還得有一個web介面來查看各個指標的歷史圖甚至要有各種視圖和dashborad來顯示一組相關的指標。

  7. center還要每天把使用者自訂的幾個關鍵的指標生產報表發給營運或者相關人員。

  8. center還需要儲存各種警示規則如某個指標連續幾次超過某個閾值產生警示或者波動超過某個範圍產生警示或者某個指標超過多長時間沒有上報資料產生警示

  9. center還要進行各種警示的收斂如同類警示的合并臨時屏蔽某類警示防止因為網路抖動引起大量警示等沒有這些營運人員會淹沒在各種警示聲中。

  10. center要以各種方式將警示發送給營運人員如簡訊郵件語音等。

  11. center還要對每次警示進行回顧統計分析得出每個系統的薄弱點可用率線上時間穩定性等。

所以說自己搭建一套完善可靠的監控體系挺不容易的需要投入大量的人力和精力去開發和維護。

現在國外也有一些專門做營運外包的廠商center託管在給他們免去了很大的工作量剩下的agent和plugin還是得自己安裝但這就簡單了反正有很多可以做批量部署的營運工具。

比較出名的有NewRelic,StatHat,hostedgraphite可以去瞭解一下基本上就是安裝個agent就可以向它們的center上報資料了或者是利用他們的Sdk提交一些自訂資料他們負責儲存展現警示方面的事情節省很多人力。

國內的話也有人做類似的事情如DNSPod的D監控最近推出了自訂監控的功能相容graphite的上報介面你自己部署個collectd就可以把各種系統監控指標監控起來了如果要做業務監控graphite也有各種語言的sdk。graphite本身開源周邊工具和軟體也特別多能滿足很多的需求。

伺服器數量不太大時,比如小於200台,建議試試Nagios Nagios監控系統的CPU、記憶體、硬碟等各個基本面都很方便。監控自己的服務也很容易,組合些外掛程式、寫點簡單的指令碼啥的就能做到。

如果伺服器數量很多,超過1000台。高效採集這些資訊就是個複雜的事情,想想每秒鐘要有多少資料往你的監控伺服器傳送就有點頭疼了。這就需要自己精心設計下拓撲結構、寫不少代碼。當然,也能利用已有的開源架構做到這些資訊採集。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.