隨間互聯網、雲計算的飛速發展,愈來愈多的企業系統架構愈來愈複雜,且迭代的速度也爲之迅速。隨着業務量、流量的增加,龐大的業務系統架構即將面臨一系列的問題,同時也是企業飛速發展所需解決的痛點。mysql
複雜龐大的業務系統架構,給運行維護增長必定的難度與複雜度。ios
大量服務應用、模塊的API接口的狀態運行狀況須要監測。web
各種監控數據的收集、分析、整理耗時、費力,統一展現(可視化)需求迫切。redis
業務系統運行狀態週報、月報數據難以統計、導出。算法
故障點的快速發現與定位,減小業務中斷率勢在必行。sql
不只企業管理者面臨的問題,同時也給企業的技術人員帶來必定維護壓力,一個行之有效監控體系迫在眉睫。
畫外音:這也就解釋了爲何愈來愈多的企業都在使用監控系統。shell
簡單來講,監控系統就是一套解決應用、服務或系統故障發現、故障預警、故障定位,運行狀態展現等多種功能融合一體的一個解決文案。也能夠稱之爲一套系統。
監控系統是整個運維環節,乃至整個產品生命週期中最重要的一環,事前及時預警發現故障,過後提供翔實的數據用於追查定位問題。監控系統做爲一個成熟的運維產品,業界有不少開源的實現可供選擇。數據庫
對於使用監控來講,首先,得確立目標是什麼,須要達到什麼的效果,這纔是重點。筆者根據實際工做經驗總結以下:安全
對系統、服務或平臺的運行狀態實行實時不間斷監控服務器
不間斷實時反應系統、服務或平臺的運行狀態信息
提早預知可能存在的故障風險
實現故障預警報警功能
經過監控數據快速定位故障緣由
最終保證系統持續、穩定、安全運行
狀態數據可視化與統計、導出、歸檔(歷史數據可追溯)
首先須要瞭解被監控對象的運行、工做原理與過程
確立須要監控被監控對象的哪些指標,如:服務的可用性、端口狀態,網卡的內外流量等
定義監控閥值報警範圍、報警等級,如:內存可用剩餘多少須要報警?磁盤空間使用率達到多少須要報警?
創建完善的故障處理流程體系,如:緊急故障、非緊急故障、通常故障等處理方法與流程
經過什麼方式收集數據?
收集哪些數據?
存儲數據的介質,如:MySQL數據庫
存儲數據的時限,如:歷史數據的保留時長
以何種方式展現,如:web界面?開發APP?
展現哪些數據
電話報警
郵件報警(目前流行)
微信報警(目前流行)
短信報警
釘釘報警(目前流行)
根據故障等級處理:緊急、非緊急
設定的故障處理預案
瞭解完監控的目標、流程以後,還須要瞭解到底監控哪些內容?也就是被監控的對象是哪些。通常實際環境中基本監控能夠分爲如下幾種,以下。
CPU總體使用狀況:用戶態與內核態,空閒率等
單個CPU的使用狀況
磁盤容量:分區使用量(已用與可用容量)
磁盤IO
磁盤的數據讀寫效率
內存使用量:已用、可用
內網卡出入流量
外網卡出入流量
TCP狀態
系統進程狀態
系統服務進程開銷
應用的進程狀態
應用端口狀態
一些個性化的需求
路由器狀態
交換機狀態
服務器狀態
安全監控通常使用第三方接收較多,我的開發或開源產品很少。
攻擊
漏洞
複雜的、大型系統中API監控很是重要,主是針對監控API接口GET、POST、PUT等請求。
圖片來源於網絡
接口可用性
接口的正確性
接口的響應時間
下面介紹下,目前平常實際環境中經常使用的一些監控工具。每一個工具的功能、特性都各有千秋,也因如此,都有着不一樣的應用場景。目前,實際環境應用最多的無非兩大類:開源產品、商用產品。
官方網站:http://www.cacti.net
發佈於2001年, Cacti 是一款開源的基於PHP、MySQL、SNMP及RRDTool開發的網絡流量監測圖形分析工具。它經過snmpget來獲取數據,使用 RRDtool繪畫圖形,它的界面很是漂亮,能讓你根本無需明白rrdtool的參數能輕易的繪出漂亮的圖形。並且你徹底能夠不須要了解RRDtool複雜的參數。它提供了很是強大的數據和用戶管理功能,能夠指定每個用戶能查看樹狀結 構、host以及任何一張圖,還能夠與LDAP結合進行用戶驗證,同時也能本身增長模板,讓你添加本身的snmp_query和script!功能很是強大完善,界面友好。
注:目前使用很少。
官方網站:https://www.nagios.org/
Nagios是一款開源的企業級監控系統,可以實現對系統CPU、磁盤、網絡等方面參數的基本系統監控,以及 SMTP,POP3,HTTP,NNTP等各類基本的服務類型。另外經過安裝插件和編寫監控腳本,用戶能夠實現應用監控,並針對大量的監控主機和多個對象 部署層次化監控架構。
注:Nagios配置靈活,能夠自定義shell腳本,但配置複雜,學習時間、精力和成本比較大。
官方網站:http://grafana.org/
Grafana目前使用比較普遍,它的數據可視化的展現功能很是強大,咱們能夠經過influxdb監控,Prometheus採集的主機信息,並且還不須要安裝任何繪圖插件,只須要將須要的數據加入到它的數據源中便可,而後經過內置的插件來展現你所須要的數據。
注:圖形化界面很是酷炫,配置稍複雜,須要瞭解其內部算法。
官方網站:https://www.zabbix.com/
Zabbix是一個基於WEB界面的提供分佈式系統監控以及網絡監控功能的企業級開源運維平臺,也是目前國內互聯網用戶中使用最廣的監控軟件,雲智慧遇到的85%以上用戶在使用Zabbix作監控解決方案。
Zabbix易於管理和配置,能生成比較漂亮的數據圖,其自動發現功能大大減輕平常管理的工做量,豐富的數據採集方式和API接口可讓用戶靈活進行數據採集,而分佈式系統架構能夠支持監控更多的設備。理論上,經過 Zabbix提供的插件式架構,能夠知足企業的任何需求。
注:入門容易、上手簡單、功能強大而且開源免費,特別是其自動發現功能很是強大。數據統計功能須要二次開發。
官方網站:http://open-falcon.org/
Open-falcon是小米運維團隊從互聯網公司的需求出發,根據多年的運維經驗,結合SRE、SA、DEVS的使用經驗和反饋,開發的一套面向互聯網的企業級開源監控產品。
自動發現,支持falcon-agent、snmp、支持用戶主動push、用戶自定義插件支持
支持每一個週期上億次的數據採集、告警斷定、歷史數據存儲和查詢
高效的portal、支持策略模板、模板繼承和覆蓋、多種告警方式、支持callback調用
單機支撐200萬metric的上報、歸檔、存儲
採用rrdtool的數據歸檔策略,秒級返回上百個metric一年的歷史數據
多維度的數據展現,用戶自定義Screen
經過各類插件目前支持Linux、Windows、Mysql、Redis、Memache、RabbitMQ和交換機監控。
官方網站:http://www.lepus.cc/
簡潔、直觀、強大的開源數據庫監控系統。
Lepus監控系統部署配置:強大的開源企業級數據庫監控利器Lepus
MySQL/Oracle/MongoDB/Redis一站式性能監控,企業級數據庫監控工具首選。
注:中文開源軟件,監控mysql和redis能夠精確到sql語句,由於只有監控數據庫和非關係數據庫,監控項不能統一,不能結合其餘監控平臺,適用範圍較小。
官方網站:http://www.tingyun.com
聽雲是幫助客戶實時監控定位從崩潰報錯、慢交互到網絡環境出錯等多維度複雜的性能問題。聽雲致力於用戶視角的IT管理創新服務,爲不一樣行業提供最終用戶端到端的完整應用鏈的性能管理解決方案,幫助客戶不斷優化系統性能及用戶體驗,提升用戶滿意度和企業競爭力。
官方網站:http://www.jiankongbao.com
監控寶是雲智慧爲用戶提供IT性能監控(IT Performance Monitoring)的SaaS產品,包含網站監控、服務器監控、中間件監控、數據庫監控、應用監控、API監控和頁面性能監控等功能。包含免費版、暢 享版和企業版,目前用戶約40萬,監控寶app也是國內惟一提供移動監控服務的產品。
注:監控寶經過遍及全球的300多個分佈式監測節點,對網絡進行穩定性和可用性的主動監控和實時分析,支持http(https)、ftp、ping、udp、tcp、smtp、traceroute等多種協議,測量CDN效果及DNS狀態,全網全地域性能趨勢分析。最大的缺點就是收費!
官方網站:https://aliyun.com
阿里雲監控是一款免費網站監控產品,可監控站點和服務器,並提供多種告警方式:短信,旺旺,郵件。
注:只限阿里產品。
最終使用何種監控產品,監控方法,監控流程等,一切都須要以實際生產環境需求爲主。
架構也是不斷在演變的過程,隨着業務系統的迭代而迭代。此文章不必定適合全部的企業架構,好比說:大數據量、大規模業務流量、對預警有較高要求的場景。
本文只是對監控體系作一個初步的宏觀的基礎介紹與認識,讓你們知道一個監控體系或監控平臺如何從0到1的一個演變過程。建設監控告警是一條持續且漫長的路,坑也不少,本文介紹的一些基本的方法和規律仍然是能夠遵循的。
同時,也歡迎小夥伴們留言分享你的運維監控體系構建之路上的點點滴滴!
注:須要此圖原版文件的可聯繫民工哥。