MySQL監控軟體MEM及PMM介紹
MySQL監控軟體:
- PMP(Percona Monitoring Plugin):Percona之前的監控是以Plugin或Template的方式加載到其他的監控軟體上,他有支援Zabbix、Nagios和Cacti等3個常用的監控軟體,詳細的介紹可以參考官網:Percona Monitoring Plugins
- MEM(MySQL Enterprise Monitor):官方提供的監控軟體,需購企業版才能使用此功能,可以監控DB內的狀況和InnoDB、NDB、Replication等的內容,另外還可以監控作業系統上的部份內容,例如硬碟、CPU、RAM、網路…等使用狀況,除了監控之外,還有Query Analyzer及發送告警功能,詳細的介紹參考官網:MySQL Enterprise Monitor
- 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架構
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架構
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的資訊
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首頁)直接連結
- 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
- 建立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資料容器 - 建立及執行PMM Server容器
docker run -d -p 80:80 --volumes-from pmm-data --name pmm-server --restart always percona/pmm-server:1.0.4
- 驗證安裝
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的頁面就可以看到資料了
P.S. PMM這功能剛發佈沒多久,我也還在研究中沒在實際工作環境中架過,若有哪個部份說明不正確的請留言指正。
留言
張貼留言