MySQL監控軟體MEM及PMM介紹


MySQL監控軟體:

  1. PMP(Percona Monitoring Plugin):Percona之前的監控是以Plugin或Template的方式加載到其他的監控軟體上,他有支援Zabbix、Nagios和Cacti等3個常用的監控軟體,詳細的介紹可以參考官網:Percona Monitoring Plugins
  2. MEM(MySQL Enterprise Monitor):官方提供的監控軟體,需購企業版才能使用此功能,可以監控DB內的狀況和InnoDB、NDB、Replication等的內容,另外還可以監控作業系統上的部份內容,例如硬碟、CPU、RAM、網路…等使用狀況,除了監控之外,還有Query Analyzer及發送告警功能,詳細的介紹參考官網:MySQL Enterprise Monitor
  3. PMM(Percona Monitoring and Management):它是一個用於管理及監控MySQL及MongoDB效能的開源平台,它提供了對MyISAM、InnoDB、TokuDB和PXC/Glarera的監控,另外也提供了與MEM類似的Query Analytics的功能,可以檢視執行了哪些SQL指令,並對執行效能較差的語法進行優化;針對作業系統的部份也提供了硬碟、網路、CPU和RAM的監控,特別的是它提供了Context switches、Processes和interrupts的監控,Context Switches可以看到CPU上下切換文的狀況,Processes可以方便了解系統有多少程序在等待I/O,這3個是MEM沒有提供的。詳細內容參考官方:Percona Monitoring and Management

架構說明:

  • MEM架構

MySQL Enterprise Monitor Architecture
MEM是由Java+Apache Tomcat+MySQL組成的監控軟體
主要安裝Service Manager(也可稱Monitor Server)它有內建一個Agent可以讓你遠端監控
或者是另外在MySQL Server上安裝Agent軟體,其差別在於能否搜集作業系統上的資訊,裝了Agent才能在作業系統上搜集資訊
而DB端的資訊會透過本機或Service Manager的Agent,連到DB裡的Performance Schema中搜集資訊,再儲存到Service Manager所屬的MySQL資料庫中。

  • PMM架構

_images/pmm-diagram.png
PMM Server是作為Docker鏡像distributed,而PMM Client就是一般的RPM
與MEM相同,它須要安裝Server端和Client端軟體,但與MEM不同的是它目前未支援遠端監控,必須安裝Client端軟體才能搜集監控所需的數據。

  • Server元件:
    Query Analytics(QAN)是用來搜集指令並作效能分析的,其元件分別說明如下:
    - QAN API:作為percona-qan-agent後端儲存和讀取Query資料用。
    - QAN APP:提供圖形化分析介面

    Metrics Monitor(MM)提供了MySQL和MongoDB歷史監控資訊其元件分別說明如下:
    - Prometheus:這是個第三方時間序列資料庫,它連接到PMM Client上的exporter搜集並聚集資訊
     -- Consul:提供API讓PMM Client可以遠端替Prometheus新增、移除hosts,同時它也儲存了監控的metadata
    - Grafana:這是一個第三方Dashboard和圖形構建器,用於可視化Prometheus中聚合的數據,以Web介面呈現
     -- Percona Dashboards:是由Percona開發的一組用於Grafana的儀表板
    上述的2個介面都能從PMM Landing Page(就是PMM首頁)直接連結
  • Client元件:
    - ppm-admin:指令列的PMM Client管理工具,用來新增、移除監控的資料instance
    - percona-qan-agent:用於搜集QAN查詢效能資料,同時連結和傳送資料給PMM Server中的QAN API
    - node_exporter:Prometheus exporter,用於搜集一般系統資訊
    -mysqld_exporter:Prometheus exporter,用於搜集MySQL server的資訊
    -mongodb_exporter:Prometheus exporter,用於搜集MongoDB server的資訊

PMM安裝:

  • 安裝Docker
    記得先確定套件是否需要更新
    yum update
    
    新增yum repository
    vim /etc/yum.repos.d/docker.repo
    [dockerrepo]
    name=Docker Repository
    baseurl=https://yum.dockerproject.org/repo/main/centos/7/
    enabled=1
    gpgcheck=1
    gpgkey=https://yum.dockerproject.org/gpg
    
    安裝Docker套件
    yum install docker-engine
    
    設定開機自動啟動
    systemctl enable docker.service
    
    啟動Docker
    systemctl start docker
    
    驗證Docker
    docker run --rm hello-world
    
    驗證Docker
  • 安裝pmm-server
  1. 建立PMM資料容器
    docker create 
    -v /opt/prometheus/data 
    -v /opt/consul-data 
    -v /opt/percona57/mysql 
    --name pmm-data 
    percona/pmm-server:1.0.4 /bin/true
    
    建立PMM資料容器

  2. 建立及執行PMM Server容器
    docker run -d -p 80:80 
    --volumes-from pmm-data 
    --name pmm-server 
    --restart always 
    percona/pmm-server:1.0.4
    


  3. 驗證安裝
    http://192.168.56.102/

    預設的帳號、密碼為:admin/admin


    可以看到這個頁面就代表安裝正確了
  • 安裝pmm-client
    rpm -ivh pmm-client-1.0.4-1.x86_64.rpm

  • 連接PMM server
    pmm-admin config --server 192.168.56.102



  • 開始搜集數據
    pmm-admin add mysql

  • 列出已監控的清單
    pmm-admin list

  • 設定Query Analytics
    在我的環境中一開始安裝完進到Query Analytics會發現都沒有任何資料,因為query source沒特別設定時預設是auto,會擷取slowlog和perfschema的資料,但我看它似乎是先找slowlog的資料,因為我沒有開slowlog所以頁面一直會是空白的,可以透過下列方式來設定:



    另外一個方式是用pmm-admin工具來設定:


    更多的設定內容可以用下列指令查詢:
    pmm-admin add mysql --help


    設定之後,再進到Query Analytics的頁面就可以看到資料了
因為本篇想專注在講PMM的安裝,MEM的安裝就略過了(但其實也很簡單,就按要求的內容輸入後下一步下一步就可以裝完了),其他使用說明的內容下次再介紹了~
P.S. PMM這功能剛發佈沒多久,我也還在研究中沒在實際工作環境中架過,若有哪個部份說明不正確的請留言指正。


留言

這個網誌中的熱門文章

【工作筆記】SQL Timeout追蹤

MySQL Router 設定檔說明