Percona監(jiān)控和管理概述
Percona監(jiān)控和管理(PMM)是一個用于管理和監(jiān)控MySQL和MongoDB性能的開源平臺饰及。 它由Percona與托管數(shù)據(jù)庫服務(wù),支持和咨詢領(lǐng)域的專家合作開發(fā)。 PMM是一個免費的開源解決方案贮乳,您可以在自己的環(huán)境中運行霜幼,以實現(xiàn)最大的安全性和可靠性。 它為MySQL和MongoDB服務(wù)器提供全面的基于時間的分析潮改,以確保您的數(shù)據(jù)盡可能高效地工作狭郑。
Percona監(jiān)控和管理架構(gòu)
PMM平臺基于簡單的客戶端 - 服務(wù)器模型,可實現(xiàn)高效的可擴展性汇在。它包括以下模塊:
- PMM Client安裝在您要監(jiān)視的每個數(shù)據(jù)庫主機上翰萨。它收集服務(wù)器指標,一般系統(tǒng)指標和查詢分析數(shù)據(jù)糕殉,以獲得完整的性能概述亩鬼。收集的數(shù)據(jù)發(fā)送到PMM服務(wù)器殖告。
- PMM Server是PMM的核心部分,它聚合收集的數(shù)據(jù)雳锋,并以Web界面的表格黄绩,儀表板和圖形的形式呈現(xiàn)。
PMM是旨在無縫協(xié)同工作的工具集合玷过。一些是由Percona開發(fā)的爽丹,一些是第三方開源工具。
- 下圖說明了PMM當前的結(jié)構(gòu):
PMM Client
PMM客戶端軟件包適用于大多數(shù)流行的Linux發(fā)行版:
- Red Hat Enterprise Linux衍生產(chǎn)品的RPM(包括CentOS辛蚊,Oracle Linux粤蝎,Amazon Linux等)
- DEB用于基于Debian的發(fā)行版(包括Ubuntu等)
PMM客戶端軟件包包含以下內(nèi)容:
- pmm-admin是用于管理PMM客戶端的命令行工具,例如袋马,添加和刪除要監(jiān)視的數(shù)據(jù)庫實例初澎。
- percona-qan-agent是一種在收集查詢性能數(shù)據(jù)時管理查詢分析(QAN)代理的服務(wù)。它還與PMM服務(wù)器中的QAN API連接飞蛹,并發(fā)送收集的數(shù)據(jù)谤狡。
- node_exporter是收集一般系統(tǒng)指標的Prometheus exporter。有關(guān)詳細信息卧檐,請參閱https://github.com/prometheus/node_exporter墓懂。
- mysqld_exporter是收集MySQL服務(wù)器指標的Prometheus exporter。有關(guān)詳細信息霉囚,請參閱https://github.com/percona/mysqld_exporter捕仔。
- mongodb_exporter是收集MongoDB服務(wù)器指標的Prometheus exporter。有關(guān)詳細信息盈罐,請參閱https://github.com/percona/mongodb_exporter榜跌。
- proxysql_exporter是收集ProxySQL性能指標的Prometheus exporter。有關(guān)詳細信息盅粪,請參閱https://github.com/percona/proxysql_exporter钓葫。
PMM Server
PMM服務(wù)器將作為您的中央監(jiān)控主機的機器運行。它通過以下方式作為設(shè)備分發(fā):
- 可以用于運行容器的Docker映像
- 可以在VirtualBox或其他管理程序中運行
- 可以通過Amazon Web Services(AWS)運行的Amazon Machine Image(AMI)
PMM服務(wù)器由以下工具組成:
-
查詢分析(QAN)使您能夠在一段時間內(nèi)分析MySQL查詢性能票顾。除客戶端QAN代理外础浮,還包括以下內(nèi)容:
- QAN API是用于存儲和訪問在PMM客戶端上運行的percona-qan-agent收集的查詢數(shù)據(jù)的后端
- QAN Web App是用于可視化收集的Query Analytics數(shù)據(jù)的Web應(yīng)用程序。
-
度量監(jiān)視器(MM)提供對MySQL或MongoDB服務(wù)器實例至關(guān)重要的度量的歷史視圖奠骄。它包括以下內(nèi)容:
- Prometheus是一個第三方時間序列數(shù)據(jù)庫豆同,連接到在PMM客戶端上運行的出口商,并匯總了收集的指標.
- Consul提供一個PMM客戶端可以遠程列出含鳞,添加和刪除Prometheus主機的API影锈。
- Grafana是一個第三方儀表板和圖形構(gòu)建器,用于在直觀的Web界面中可視化由Prometheus匯總的數(shù)據(jù).
- Percona儀表板是由Percona開發(fā)的Grafana儀表板
Orchestrator是MySQL復(fù)制拓撲管理和可視化工具。
部署方案(https://www.percona.com/doc/percona-monitoring-and-management/architecture.html#id13)
參考:
[1] https://prometheus.io/docs/introduction/overview/
[2] https://www.consul.io/docs/
[3] https://www.consul.io/docs/
[4] https://github.com/outbrain/orchestrator/wiki/Orchestrator-Manual
部署Percona監(jiān)控和管理
以下過程介紹如何正確部署PMM:
-
在主機上運行PMM Server鸭廷,用于訪問收集的數(shù)據(jù)枣抱,查看基于時間的圖表,并執(zhí)行性能分析靴姿。
以下選項可用:
- 使用Docker運行PMM服務(wù)器
- 使用VirtualBox運行PMM服務(wù)器
- 使用Amazon Machine Image(AMI)運行PMM服務(wù)器
安裝運行PMM Server(使用Docker運行PMM服務(wù)器)
- 使用docker運行PMM Server
PMM服務(wù)器的Docker映像公開托管在https://hub.docker.com/r/percona/pmm-server/沃但。 如果要從Docker映像運行PMM Server,則主機必須能夠運行Docker 1.13或更高版本佛吓,并具有網(wǎng)絡(luò)訪問權(quán)限。 有關(guān)使用Docker的更多信息垂攘,請參閱Docker文檔(https://docs.docker.com/)维雇。
- CentOS 6 安裝Docker
yum --enablerepo=epel -y install docker-io
/etc/rc.d/init.d/docker start
chkconfig docker on
注:使用pmm-server映像時,請使用特定的版本標簽晒他,而不是最新的標簽吱型。目前的穩(wěn)定版本是1.1.3。
第一步. 創(chuàng)建一個PMM數(shù)據(jù)容器
- 要創(chuàng)建持久PMM數(shù)據(jù)的容器陨仅,請運行以下命令:
docker create \
-v /opt/prometheus/data \
-v /opt/consul-data \
-v /var/lib/mysql \
-v /var/lib/grafana \
--name pmm-data \
percona/pmm-server:1.1.3 /bin/true
- 此容器不運行津滞,只需升級到較新的pmm服務(wù)器映像時,確保您保留所有PMM數(shù)據(jù)灼伤。不要刪除或重新創(chuàng)建此容器触徐,除非您打算清除所有PMM數(shù)據(jù)并重新開始。
第二步狐赡、創(chuàng)建并運行PMM服務(wù)器容器
- 要運行PMM服務(wù)器撞鹉,請使用以下命令:
docker run -d \
-p 666:80 \
--volumes-from pmm-data \
--name pmm-server \
--restart always \
percona/pmm-server:1.1.3
注意:這里666端口是自定義的,因為筆者實驗機80已被占用
確認PMM 安裝運行是否正確
通過使用運行容器的主機的IP地址連接到PMM Web界面來驗證PMM服務(wù)器是否正在運行颖侄,然后在要監(jiān)視的所有數(shù)據(jù)庫主機上安裝PMM Client
|Component|URL|
|------- |---|
|PMM landing page|http://192.168.0.99:port|
|Query Analytics (QAN web app)|http://192.168.0.99/qan/|
|Metrics Monitor (Grafana)|http://192.168.0.99/graph/User name: admin Password: admin|
|Orchestrator|http://192.168.0.99/orchestrator|
刪除PMM服務(wù)器
在停止和刪除PMM服務(wù)器之前鸟雏,請確保相關(guān)的PMM客戶端不通過刪除所有監(jiān)視的實例來收集任何數(shù)據(jù),如刪除監(jiān)控服務(wù)中所述览祖。
docker stop pmm-server && docker rm pmm-server
docker rm pmm-data # 刪除pmm數(shù)據(jù)容器
升級PMM服務(wù)器
docker stop pmm-server # 先停
docker rm pmm-server # 再刪孝鹊,如果如要保留收集數(shù)據(jù),不要執(zhí)行此操作
docker run -d \
-p 999:80 \
--volumes-from pmm-data \
--name pmm-server \
--restart always \
--init \
percona/pmm-server:1.1.3
在Red Hat和CentOS上安裝PMM客戶端
PMM客戶端是安裝在您要監(jiān)視的MySQL或MongoDB主機上的一組代理和出口商展蒂。 組件收集關(guān)于一般系統(tǒng)和數(shù)據(jù)庫性能的各種數(shù)據(jù)又活,并將該數(shù)據(jù)發(fā)送到相應(yīng)的PMM服務(wù)器組件。
注:不應(yīng)該在具有相同主機名的數(shù)據(jù)庫服務(wù)器上安裝代理玄货,因為PMM服務(wù)器使用主機名來標識收集的數(shù)據(jù)皇钞。
安裝PMM客戶端
PMM客戶端應(yīng)該運行在任何現(xiàn)代的Linux發(fā)行版上,但是Percona提供的PMM客戶端軟件包只能從最受歡迎的Linux發(fā)行版的軟件倉庫進行自動安裝:
- 系統(tǒng)事先無percona的yum源松捉,需要新增
sudo yum install https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-4.noarch.rpm
- 安裝pmm-client軟件包
sudo yum install pmm-client -y
將PMM客戶端連接到PMM服務(wù)器
使用pmm-admin config --help夹界,查看幫助
[root@backup-server ~]# sudo pmm-admin config --server 192.168.0.99:666
OK, PMM server is alive.
PMM Server | 192.168.0.99:666
Client Name | backup-server
Client Address | 192.168.0.47
開始數(shù)據(jù)收集
將客戶端連接到PMM服務(wù)器后,通過添加監(jiān)控服務(wù),從數(shù)據(jù)庫實例啟用數(shù)據(jù)收集可柿。
要啟用一般系統(tǒng)度量鸠踪,MySQL指標和查詢分析,請運行:
管理PMM客戶端
# 添加監(jiān)控服務(wù)
pmm-admin add
# 檢查PMM客戶端和PMM服務(wù)器之間的網(wǎng)絡(luò)連接复斥。
pmm-admin check-network
# 配置PMM Client如何與PMM服務(wù)器通信营密。
pmm-admin config
# 打印任何命令和退出的幫助
pmm-admin help
# 打印有關(guān)PMM客戶端的信息
pmm-admin info
# 出為此PMM客戶端添加的所有監(jiān)控服務(wù)
pmm-admin list
# 檢查PMM服務(wù)器是否存活
pmm-admin ping
# 檢查PMM服務(wù)器是否存活。
pmm-admin purge
# 清除PMM服務(wù)器上的度量數(shù)據(jù)
pmm-admin remove, pmm-admin rm
# 刪除監(jiān)控服務(wù)
pmm-admin repair
# 重啟pmm
pmm-admin restart
# 打印PMM Client使用的密碼
pmm-admin show-passwords
# 開啟監(jiān)控服務(wù)
pmm-admin start
# 停止監(jiān)控服務(wù)
pmm-admin stop
# 在卸載之前清理PMM Client
pmm-admin uninstall
- 添加MySQL查詢分析服務(wù)
默認情況下不存在初始的被pmm-client使用的mysql用戶目锭,需要自己創(chuàng)建评汰,筆者是登錄到mysql中創(chuàng)建的用戶,感興趣的同學(xué)可以使用pmm-admin提供的參數(shù)創(chuàng)建默認用戶
GRANT ALL PRIVILEGES ON *.* TO 'pmm'@'192.168.0.47' IDENTIFIED BY 'pmmpassword';
# 創(chuàng)建用戶成功
[root@backup-server ~]# sudo pmm-admin add mysql:metrics --user pmm --password pmmpassword --host 192.168.0.47
# 使用創(chuàng)建的用戶添加監(jiān)控mysql服務(wù)
OK, now monitoring MySQL metrics using DSN pmm:***@tcp(192.168.0.47:3306)
[root@backup-server ~]# sudo pmm-admin add mysql:queries --user pmm --password pmmpassword --host 192.168.0.47
- 查看當前服務(wù)器監(jiān)控的服務(wù)
[root@backup-server ~]# pmm-admin list
pmm-admin 1.1.3
PMM Server | 192.168.0.99:666
Client Name | backup-server
Client Address | 192.168.0.47
Service Manager | unix-systemv
-------------- -------------- ----------- -------- ------------------------------- ------------------------------------------
SERVICE TYPE NAME LOCAL PORT RUNNING DATA SOURCE OPTIONS
-------------- -------------- ----------- -------- ------------------------------- ------------------------------------------
mysql:queries backup-server - YES pmm:***@tcp(192.168.0.47:3306) query_source=slowlog, query_examples=true
linux:metrics backup-server 42000 YES -
mysql:metrics backup-server 42002 YES pmm:***@tcp(192.168.0.47:3306) tablestats=OFF
報錯排查
QAN API error: "qh.Profile: No query classes for selected instance and time range. Please check whether your MySQL settings match the recommended.".Check the /var/log/qan-api.log file in docker container for more information
# mysql 開啟慢日志查詢
yum install percona-toolkit -y # 建議安裝
#
slow_query_log = 1
long_query_time = 2
# 重啟mysql(mysql5.6)
/etc/init.d/mysql restart
繼續(xù)訪問http://192.168.0.99:666痢虹,查看監(jiān)控mysql的狀態(tài)
后續(xù)補充監(jiān)控MongoDB的教程被去。。奖唯。