MySQL監控、性能分析——工具篇


 

MySQL越來越被更多企業接受,隨着企業發展,MySQL存儲數據日益膨脹,MySQL的性能分析、監控預警、容量擴展議題越來越多。“工欲善其 事,必先利其器”,那么我們如何在進行MySQL性能分析、監控預警、容量擴展問題上得到更好的解決方案,就要利用各種工具來對MySQL各種指標進行分 析。本文是讀書筆記,下面提及的工具,讀者可能都用過,或打算准備是使用。
MySQL服務器的發布包沒有包含那些能完成許多常見任務的工具,例如監控服務器的工具、比較服務器間數據的工具。我們把這些工具分成以下幾類:界面、監控、分析和輔助工具。

  • 帶界面的工具
    1、MySQL可視化工具
    這些工具都可以免費使用: 

     

    a、MySQL查詢瀏覽器(MySQL Query Browser):這個不用說了…
    b、MySQL管理員(MySQL Administrator):功能集中在服務器管理上,所以它最適合DBA使用,而不是開發人員和分析人員。它可以幫助DBA把創建備份 、創建用戶並分配權限、顯示服務器日志和狀態信息等過程進行自動化處理。它還包括了一些基本的監控功能,例如圖形化的狀態變量顯示,但是它沒有下文里會提 到的交互式監控工具那么靈活。
    c、MySQL遷移工具箱(MySQL Migration Tookit):可以幫你把數據從別的數據庫系統遷移到MySQL里。
    d、MySQL工作台(MySQL Workbench):MySQL的建模工具。

    2、SQLyog
    SQLyog是最常用的MySQL可視化工具,只能用於win下。

    3、phpMyAdmin
    phpMyAdmin是一款很流行的管理工具,它基於Web界面來管理MySQL服務器。有很多支持者,但反對者也不少。

  • 監控工具
    MySQL監控是一個很大復雜的任務,不同的應用有着不同的需求。“監控”是大家濫用的術語 之一,承載了幾重意思。我們講到的監控工具被分為非互動的和互動的兩類。非互動監控常常就是一個自動化系統,它接收系統的測量值,如果有超出安全范圍的, 就通過發出警告提醒管理員。互動監控工具可以讓你實時地觀測服務器。 

     

    你可能對監控工具在其他方面的差別也很感興趣,例如被動監控和主動監控,后者會發送報警信息並作出初步反應(就像Nagios一樣);或者你可能正 在尋找這樣一工具:它可以創建一個信息倉庫,而不僅僅是顯示當前的統計信息。有許多監控系統不是專為監控MySQL而設計的,它們就是一個通用系統,里面 設計了一個周期性的任務,定時去檢查各類資源的狀態,例如像服務器、路由器、以及各種軟件(包括MySQL)。它們常常會提供一個插件架構,同時有一個預 訂的MySQL插件可供使用。這樣的一些系統能夠記錄監控對象的狀態,並通過web界面用圖形化的形式表示出來。當監控對象出現問題,或者狀態值超過安全 范圍時,它們還能發送報警信息,或者執行一個初始化的動作。

    a、非交互性工具

    1、Nagios
    監控界流行一句話:只要用順了Nagios,你就永遠不會再想到其它監控系統。
    對於Nagios本blog會持續推出相關文章,現在只是引用Nagios官方的介紹:
    Nagios是一款用於系統和網絡監控的應用程序。它可以在你設定的條件下對主機和服務進行監控,在狀態變差和變好的時候給出告警信息。
    Nagios最初被設計為在Linux系統之上運行,然而它同樣可以在類Unix的系統之上運行。
    Nagios更進一步的特征包括:監控網絡服務(SMTP、POP3、HTTP、NNTP、PING等);
    監控主機資源(處理器負荷、磁盤利用率等);
    簡單地插件設計使得用戶可以方便地擴展自己服務的檢測方法;
    並行服務檢查機制;
    具備定義網絡分層結構的能力,用”parent”主機定義來表達網絡主機間的關系,這種關系可被用來發現和明晰主機宕機或不可達狀態;
    當服務或主機問題產生與解決時將告警發送給聯系人(通過EMail、短信、用戶定義方式);
    具備定義事件句柄功能,它可以在主機或服務的事件發生時獲取更多問題定位;
    自動的日志回滾;可以支持並實現對主機的冗余監控;可選的WEB界面用於查看當前的網絡狀態、通知和故障歷史、日志文件等;

    下面是可代替Nagios的工具:

    i、Zenoss
    Zenoss是用Python編寫的,擁有基於瀏覽器的用戶界面,並使用了Ajax使操作更加快捷而富有效率。它將監控、 報警、趨勢顯示、圖表顯示和記錄歷史數據等功能合成在一個統一的工具里,它還能在網上自動發現資源,在默認情況下,Zenoss使用SNMP從遠程機器上 收集數據,但它也可以使用SSH,並且支持Nagios插件。
    ii、Hyperic HQ
    Hyperic HQ是一款基於Java的監控系統,它的目標跟其他同類別的軟件不太一樣,它要成為企業級的監控系統。跟Zenoss一樣,它也能自動發現資源,支持 Nagios插件,但是它的邏輯組織和架構很不一樣,顯得有點龐大。至於它是不是合適你的需求,那要看你的參數設置和監控的方式了。
    iii、OpenNMS
    OpenNMS 是由Java編寫的,擁有一個活躍的開發者社區。它具備了常規的功能,例如監控和報警,也加入了圖表和趨勢顯示的功能。它的目標是高性能、伸縮性、自動化 以及良好的兼容性。跟Hyperic一樣,它也企圖成為一款企業級的監控軟件,可以用於大型的關鍵系統上。
    iv、Groundwork Open Source
    Groundwork Open Source實際上是基於Nagios的,它把Nagios和其他幾個工具集成為一個系統,並安上一個統一的門戶界面。描述它的最好方法可能就是:如果你 對Nagios、Cacti及其他工具很熟悉,並且能夠花大量的時間把它們無縫地集成在一起的話,你也能在家庭作坊里做一個出來。
    v、Zabbix
    Zabbix 是一個開源監控系統,在許多方面跟Nagios很相像,但是也有一些關鍵的不同點。例如:它把所有配置信息和其他數據都存放在一個數據庫里,而不是放在配 置文件里;它比Nagios存儲了更多類型的數據,這樣可以生成更好的趨勢圖和歷史報告。它的網絡圖表和可視化功能也優於Nagios。很多使用它的人發 現它更易配置,更具有兼容性。說起來它也能比Nagios少,它的報警功能也不夠高級。

    2、MySQL監控和建議服務
    MySQL自己的監控方案就是設計用來監控MySQL實例的,但也能夠監控主機的一些關鍵方面。這個工具不是開源的,需要MySQL企業訂閱費。

    3、MONyog
    MONyog是一個輕量級的無代理的監控系統,它跟以上那些工具有着不同實現方法:它的底層是一個JavaScript引 擎,所有配置都是通過JavaScrpt對象模型來完成的。它被設計為在桌面系統上運行,運行時它會在一個閑置的端口上打開一個HTTP監聽器。這樣,你 就可以把你的瀏覽器指向這個端口,查看MySQL服務器的信息了,這信息都是結合了Javascript和Flash來表示的。MONyog實際上有交互 式和非交互式兩種類型,因此,你可以把兩種類型的監控功能都嘗試着用用看。

    4、基於RRDTool的系統
    嚴格地說,RRDTool不算是一個監控系統,但是,它很重要,有必要在此提到一下。很多組織里都是使用幾種 腳本或程序–這些一般都是自制的–從服務器那里讀取信息,然后再保存到循環數據庫(Round-robin database,RRD)文件里。在許多要獲取記錄生成圖表的環境下,RRD文件是一個很合適的解決方案。它們能聚合輸入的數據,如果輸入數據值沒有按 期在隨后提交進行時,還能在隨后插入這些丟失的數據。它們還都帶有強大的圖表工具,能夠生成漂亮的與眾不同的圖表。現在已經有一些基於RRDTOOL的系 統可供使用了。

    a、Muti Router Traffic Grapher,或者叫MRTG就是一款典型的基於RRDTOOL的系統。它真正的設計初衷是記錄網絡數據流,但是它也被擴展用來記錄和圖表化表示其他一些東西。
    b、Munin是一個能為你采集數據的系統,將它放入RRDTool后,就會根據數據生成不同粒度的圖表。它能從配置信息里生成靜態的HTML文件,這樣你就可以輕松地瀏覽,查看趨勢情況。
    c、 Cacti是另外一個常用的圖表和趨勢顯示系統。它的工作方式是:從系統里獲取數據,然后保存在RRD文件里,然后用PHP Web界面的形式,使用RRDTool把數據以圖表的形式展示出來。這個顯示界面也是配置和管理界面(配置信息存儲在一個MySQL服務器里)。它是模板 驅動的,因此,你可以自己定義模板,並放到你的系統里使用。

    d、Cricket是一個用Perl編寫的跟Cacti類似的系統,使用的是基於文件的配置系統。Ganglia也跟Cacti類似,但它的設計初 衷是永遠監控群集和系統網絡,因此,你可以查看到由許多服務器信息聚合得到的結果,也可以按照你的意願,查看單獨某台服務器的信息。(Cacti和 Cricket無法顯示聚合數據。)

    以上這些系統都可以被用作MySQL系統信息的收集、記錄、圖表化數據和報告,它們在用途方面差異較小,都具備了不同程度的兼容性。但是,它們缺乏真正意義上的兼容性,比如當某些東西出錯時,它要能夠有針對性地發送報警信息給某些人。它們中的一些甚至沒有“錯誤”的概念。所 以,有些人把這一點看作是此類系統的一大缺點,覺得最好還是把記錄、圖表化表示、報警這幾項功能都獨立開來。事實上,Munin特地設計了使用 Nagios來作為它的報警系統。然而,對於其他幾個來說,這的確是缺點。另外還有一個缺點就是安裝和配置這樣一個系統,使其能完全滿足你需求,須投入很 多時間和努力,不過,這一點也並不是這樣。
    最后,RRD文件無法讓你使用SQL或其他標准方法來查詢它里面的數據。而且,在默認情況下,它永遠會以一種恰好的粒度來存儲數據,許多MySQL管理員就不願意接受這種限制,轉而選擇一個關系數據庫來存儲這些歷史數據。

     

    b、交互性工具
    交互性工具就是那些在你需要時就可以啟動起來,並以視圖顯示的形式不斷獲取最新服務器狀態的軟件。

    innotop
    innotop是一個通過文本模式顯示MySQL和InnoDB的監測工具。它有很多特點,快速的配置的,易於使用等。它吸 取了MYTOP的精華這使它變得更加強大。innotop是用PERL語言寫成的,這是它能更加靈活的使用在各種操作平台之上,它能詳細的的監控出當前 MYSQL和INNODB運行的狀態,以便維護人員根據結果合理的優化MYSQL,讓MYSQL更穩定更高效的運行。安裝INNOTOP工具非常的簡單, 既然是由PERL寫的,當然需要PERL環境和相關的工具包。在安裝之前先要確定你的系統安裝了 Time::HiRes,Term::ReadKey,DBI,DBD::mysql這四個包。安裝可以把包下載下來通過編譯安裝完成也可以用PERL模 塊安裝方式來完成。
    mtop
    是一個顯示MySQL服務器查詢狀態的監視器。功能包括顯示完成的查詢進程,顯示查詢優化的信息及殺死一個查詢。附加功能包括服務器性能統計,配置信息和調整技巧提示。
    mytop
    mytop就是類似top的MySQL監察工具。執行mytop後,它會每隔幾秒更新一次,而且也可以針對性地監察某一個資料庫。

  • 分析工具
    分析工具可以幫你自動化那些單調乏味的工作,如監測服務器,找出還可以優化和調優的功能區域。這些工具可以作為解決性能問題的良好開端。
    a、HackMySQL 工具(這個很出名,可惜已停止更新) 

     

    1、Mysqlreport
    2、Mysqlsla

    b、Maatkit分析工具
    一系列命令行工具的集合。

  • MySQL的輔助工具
    MySQL里有幾個工具是為了消除MySQL提供的功能與它自帶的命令行工具之間的隔閡。
    a、MySQL Proxy
    b、Dormando的MySQL代理

*****************************************************************************************************************************************

 

Mysql監控工具小集合

 

Cacti

  • Cacti是 一套基於PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。它通過snmpget來獲取數據,使用 RRDtool繪畫圖形,而且你完全可以不需要了解RRDtool復雜的參數。它提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結 構、host以及任何一張圖,還可以與LDAP結合進行用戶驗證,同時也能自己增加模板,功能非常強大完善,界面友好。


 

 

MysqlReport

  • MysqlReport 實際上只是一個Perl腳本,不過監控數據非常直觀:


  • 各監控指標,官網有詳細說明

  • Cacti監控上的Mysql數據就是參考它,搭建Apache+perl環境即可訪問。缺點是只能進行時時監控,無圖表和歷史數據功能。

 

phpMyAdmin

  • phpMyAdmin與 其說是Mysql的監控工具,不如說是Mysql的管理工具。相比一些Mysql客戶端的GUI管理工具(如“MySQL Administrator”),phpMyAdmin是Web模式的。phpMyAdmin 是以PHP為基礎,以Web-Base方式架構在網站主機上的MySQL的資料庫管理工具。

  • phpMyAdmin的管理頁面中包含了一個“狀態”頁面,列出了Mysql的詳細狀態信息,官網上有對應指標的詳細說明


 

MySQL Administartor

  • MySQL官方管理工具;
  • 有簡單的監控功能。

zabbix

  • zabbix是一個CS結構的監控系統,server端偵聽在10051端口,agent偵聽在10050端口。用戶界面使用php開發的Web程序,數據存儲在MySQL數據庫中。

  • zabbix使用了客戶端監控模式,與金山Cacti相似,zabbix也支持net-snmp的監控。
  • zabbix功能繁多,未進行詳細研究。附上一張用zabbix監控CPU負載的監控圖:


 

MONyog

  • MONyog是一套客戶端主動收集Mysql運行數據的服務程序。

  • 起初關注MONyog是因為它發現了一個項目上的問題:創建連接數過多。
    它默認監控的connections是指創建連接數的總量,而通常情況下我們只關注即時連接數。對於頻繁創建和關閉連接的應該程序,關注總量則一眼可以看出問題。
    監控圖預覽:


  • 非常遺憾的是!MONyog是收費軟件,從試用版的情況來看,沒有找到定制功能。

 

mytop

  • 類似Linux系統的top命令,專門監控Mysql的運行狀態
  • 監控命令:

     1 mytop --host=10.20.192.109 --dbuser=root --password=123456


    運行結果:

     1 MySQL on 10.20.192.109 (5.0.81) up 0+00:15:03 [11:51:51]  2 Queries: 35.0 qps: 0 Slow: 0.0 Se/In/Up/De(%): 00/00/00/00 qps now: 0 Slow qps: 0.0 Threads: 52  3 Key Efficiency: 96.4% Bps in/out: 0.9/114.1 Now in/out: 8.4/ 1.2k  4 Id User Host/IP DB Time Cmd Query or State  5 -- ---- ------- -- ---- --- ----------  6 67 root vmvistcn261sp1u 0 Query show full processlist  7 6 root vmxpcn270sp2 36 Sleep  8 ……

 

mtop

  • 類似Linux系統的top命令,專門監控Mysql的運行狀態
  • 監控命令:

     1 mtop --host=10.20.192.109 --dbuser=root --password=123456


    運行結果:

     1 10.20.192.109 mysqld 5.0.81 up 0 day(s), 0:05 hrs  2 52 threads: 1 running, 0 cached. Queries/slow: 5/0 Cache Hit: 100.00%  3 Opened tables: 0 RRN: 459 TLW: 0 SFJ: 0 SMP: 0 QPS: 0  4 ID USER HOST DB TIME COMMAND STATE INFO  5 28 root 10.20.212.39:522 Query show full processlist  6 ……

 

其它

  • 相關工具還有:
  • kontrollbase,始終沒裝起來;
  • mycat,裝上去居然不知怎樣用。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM