Percona Monitoring and Management是一個用于管理和監視MySQL、MongoDB、PostgreSQL和MariaDB性能的開源平臺,我們可以在自己的環境中運行該插件,以實現最大的安全性和可靠性。它為數據庫服務器提供了基于時間的全面分析,以確保您的數據盡可能高效地工作。
PMM可以說是同類最佳的開源數據庫監視解決方案。它可以幫助您降低關鍵業務數據庫環境的復雜性,優化性能并提高其安全性,無論它們位于何處或部署在何處。
C/S架構
PMM平臺基于可擴展的客戶端-服務器模型。 它包括以下模塊:
- PMM客戶端安裝在要監視的每個數據庫主機上。 它收集服務器指標,常規系統指標和Query Analytics數據,以獲取完整的性能概述。
- PMM Server是PMM的核心部分,它聚合收集的數據并在Web界面中以表格,儀表板和圖形的形式顯示。
- Percona平臺為PMM提供增值服務。
1.PMM Client
每個PMM客戶端收集有關常規系統和數據庫性能的各種數據,并將該數據發送到相應的PMM服務器。
PMM客戶端軟件包包括以下內容:
- pmm-admin是用于管理PMM客戶端的命令行工具,例如,添加和刪除要監視的數據庫實例。
- pmm-agent是客戶端組件,是最小的命令行界面,它是帶來客戶端功能的中央入口點:它進行客戶端的身份驗證,將客戶端配置存儲在PMM服務器上,管理導出器和其他代理商。
- node_exporter是一個Prometheus導出器,用于收集常規系統指標。
- mysqld_exporter是Prometheus導出器,用于收集MySQL服務器指標。
- mongodb_exporter是一個Prometheus導出器,用于收集MongoDB服務器指標。
- postgres_exporter是Prometheus導出器,用于收集PostgreSQL性能指標。
- proxysql_exporter是一個Prometheus導出器,用于收集ProxySQL性能指標。
為了確保從PMM客戶端到PMM服務器的數據傳輸安全,所有導出器都可以使用SSL / TLS加密連接,并且它們與PMM服務器的通信受到HTTP基本身份驗證的保護。
2.PMM Server
PMM服務器包括以下工具:
使用查詢分析(QAN),您可以分析一段時間內的MySQL查詢性能。除客戶端QAN代理外,它還包括以下內容:
- QAN API是用于存儲和訪問由PMM客戶端上運行的QAN代理收集的查詢數據的后端。
- QAN Web App是用于可視化收集的查詢分析數據的Web應用程序。
指標監視器提供了對MySQL或MongoDB服務器實例至關重要的指標的歷史視圖。它包括以下內容:
- Prometheus是第三方時間序列數據庫,它連接到在PMM客戶端上運行的出口商,并匯總由出口商收集的指標。
- ClickHouse是第三方的面向列的數據庫,可促進Query Analytics功能。
- Grafana是第三方儀表板和圖形構建器,用于在直觀的Web界面中可視化Prometheus聚合的數據。
我們可以從PMM Server Web界面(登錄頁面)訪問所有工具。
部署
1.PMM Server
# 拉取鏡像
Docker pull percona/pmm-server:2.9.1
# 建立持久化數據卷
docker create --volume /srv --name pmm-data percona/pmm-server:2.9.1 /bin/true
# 啟動server
docker run --detach --restart always --publish 80:80 --publish 443:443 --volumes-from pmm-data --name pmm-server percona/pmm-server:2.9.1
2.PMM Client
(1)添加基礎監控
# 1.安裝client
# pmm-client 和 pmm-server版本一定要匹配,都為2 或 都為1。
# percona/pmm-server:latest 的版本為1.X
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install pmm2-client
# 2.配置并連接server
# pmm-admin config --server-insecure-tls --server-url=https://admin:admin@192.168.3.101:443
Checking local pmm-agent status...
pmm-agent is running.
Registering pmm-agent on PMM Server...
Registered.
Configuration file /usr/local/percona/pmm2/config/pmm-agent.yaml updated.
Reloading pmm-agent configuration...
Configuration reloaded.
Checking local pmm-agent status...
pmm-agent is running.
# 3. 查看監控列表
# pmm-admin list
Service type Service name Address and port Service ID
Agent type Status Agent ID Service ID
pmm_agent Connected /agent_id/83d7c918-099f-4f62-aab8-c2024b0f1227
node_exporter Running /agent_id/83e09526-d877-4019-a574-a8da90e6dcbc
pmm client 與server 建立連接后,默認使用node_exporter收集服務器CPU、Memory、Disk等基本狀態信息。
通過Grafana展示如下:
此時是沒有數據庫監控信息的,我們需要再手動添加。
(2)添加mysql監控
# 1.添加監控賬戶
grant all on *.* to grafana@'%' identified by 'grafana';
# 2.添加mysql監控
pmm-admin add mysql --username=grafana --password=grafana --query-source=perfschema --service-name=perfschema-mysql --host=127.0.0.1 --port=3306 --disable-tablestats-limit=50000
# 3.查看監控
# pmm-admin list
Service type Service name Address and port Service ID
MySQL perfschema-mysql 127.0.0.1:3306 /service_id/ea7032c2-1000-47b3-84e7-f2d41c58a065
Agent type Status Agent ID Service ID
pmm_agent Connected /agent_id/83d7c918-099f-4f62-aab8-c2024b0f1227
node_exporter Running /agent_id/83e09526-d877-4019-a574-a8da90e6dcbc
mysqld_exporter Running /agent_id/cb95c179-58e7-46d1-a43e-76874df07889 /service_id/ea7032c2-1000-47b3-84e7-f2d41c58a065
mysql_perfschema_agent Running /agent_id/f920ffe3-2f79-4be9-ad65-93ef5fbe19a3 /service_id/ea7032c2-1000-47b3-84e7-f2d41c58a065
# 4. 刪除監控
pmm-admin remove mysql perfschema-mysql
其他數據監控請自行添加。
圖形化監控
1.Mysql實例狀態監控
2. 查詢分析
查詢分析儀表板顯示查詢的執行方式以及花費時間。它可以幫助您分析一段時間內的數據庫查詢,優化數據庫性能以及查找和糾正問題的根源。
查詢分析僅支持MySQL和MongoDB。 MySQL的最低要求是:
- MySQL 5.1或更高版本(如果使用慢查詢日志)
- MySQL 5.6.9或更高版本(如果使用性能架構)
查詢分析數據的檢索不是即時的,并且可能由于網絡條件而延遲。 在這種情況下,不會報告任何數據,并且迷你圖中會出現間隙。
總結
通過PMM我們可以更加直觀的查看數據庫服務器及各種數據庫的狀態,利用其Query Analytics特性可以更好的分析指定時間段的數據庫查詢,這對于優化數據庫性能、查找問題十分有效。