一、PMM介紹
Percona Monitoring and Management (PMM)是一款開源的用于管理和監控MySQL和MongoDB性能的開源平台,通過PMM用戶端收集到的DB監控資料用第三方軟體Grafana畫圖展示出來。
PMM提供了對MyISAM、InnoDB、TokuDB和PXC/Glarera的監控,另外也提供了Query Analytics的功能,可以檢視執行了哪些SQL指令,并對執行效能較差的文法進行優化。另外在新版本還支援了MySQL複制拓撲圖結構構造。Demo官網:http://pmmdemo.percona.com
PMM針對作業系統的部份也提供了硬碟、網絡、CPU和RAM的監控,特别的是它提供了Context switches、Processes和interrupts的監控,Context Switches可以看到CPU上下切換文的狀況,Processes可以友善了解系統有多少程式在等待I/O。
二、PMM架構解析
PMM架構如下圖所示

PMM Server是作為Docker鏡像distributed,而PMM Client就是一般的RPM,它需要安裝Server端和Client端軟體。
Server元件
Query Analytics(QAN)是用來搜集指令并作性能分析的,其元件分别說明如下:
QAN API:作為percona-qan-agent後端儲存和讀取Query資料用。
QAN APP:提供圖形化分析介面。
Metrics Monitor(MM)元件提供了MySQL和MongoDB曆史監控資訊,其元件分别說明如下:
Prometheus:一個開源的服務監控系統和時間序列資料庫,它連接配接到PMM Client上的exporter聚集DB的監控資料。
– Consul:提供API讓PMM Client可以遠端替Prometheus新增、移除hosts,同時它也儲存了監控的metadata。
Grafana:這是一個第三方Dashboard和圖形建構器,用于可視化Prometheus中聚合的資料,以Web呈現。
– Percona Dashboards:是由Percona開發的一組用于Grafana的儀表闆。
上述的2個Web頁面都能從PMM Landing Page(就是PMM首頁)直接連結。
Client元件
ppm-admin:指令行的PMM Client管理工具,用來新增、移除監控的資料Instance。
percona-qan-agent:是一種管理QAN代理的服務,收集查詢性能資料并将其發送到PMM伺服器上的QAN API。
node_exporter:Prometheus exporter用于搜集一般系統資訊(https://github.com/prometheus/node_exporter)。
mysqld_exporter:Prometheus exporter用于搜集MySQL Server的資訊(https://github.com/percona/mysqld_exporter)。
mongodb_exporter:Prometheus exporter用于搜集MongoDB server的資訊(https://github.com/percona/mongodb_exporter)。
三、安裝運作PMM Server
3.1、安裝docker
yum -y install docker
3.2、運作docker
systemctl start docker
systemctl enable docker
3.3、下載下傳容器鏡像
docker pull percona/pmm-server:latest
3.4、建立資料卷容器
docker create -v /opt/prometheus/data -v /opt/consul-data -v /var/lib/mysql -v /var/lib/grafana --name pmm-data percona/pmm-server:latest /bin/true
3.5、運作PMM Server
docker run -d -p80:80 --volumes-from pmm-data --name pmm-server {-e METRICS_RETENTION=48h 可選,資料隻留48小時} --restart always percona/pmm-server:latest
注意:如果執行上面這條指令出現如下錯誤:
/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint pmm-server (1263128b75956bbdc024ab564e717e33bfa929c7cff60e2524d45c921879e46f): exec: "docker-proxy": executable file not found in $PATH.
則要建立軟連接配接:
cd /usr/libexec/docker
ln -s docker-init-current docker-init
ln -s docker-proxy-current docker-proxy
ln -s docker-runc-current docker-runc
3.6、檢視Docker運作狀态
docker ps -a
通過使用運作容器的主機的IP位址連接配接到PMM Web界面來驗證PMM伺服器是否正在運作,然後在要監視的所有資料庫主機上安裝PMM Client。
3.7、驗證PMM伺服器
運作PMM Server之後,你應該可以使用運作容器的主機的IP位址通路PMM Web界面。例如,如果在預設端口80上運作10.1.83.175,則應該可以通路以下内容:
四、安裝運作PMM Client
PMM Client是安裝在你要監視的MySQL或MongoDB主機上的一組代理元件。元件收集關于一般系統和資料庫性能的各種資料,并将該資料發送到相應的PMM伺服器元件。
在資料庫主機上安裝PMM Client軟體包之前,請確定你的PMM Server主機可通路。
你将需要在資料庫主機上使用root使用者通路安裝PMM Client(以具有root權限的使用者身份登入或能夠運作指令的sudo權限)。
查詢分析(QAN)的最低要求是:
MySQL 5.1或更高版本(如果使用慢查詢日志)
MySQL 5.6.9或更高版本(如果使用性能模式)
PMM Client可以運作在任何Linux發行版上,但是Percona提供的PMM Client軟體包隻能從Ubuntu或CentOS發行版的軟體倉庫進行自動安裝:
下面我們以在Red Hat或CentOS上安裝PMM Client。
4.1 安裝PMM Client
yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum -y install pmm-client
安裝PMM Client之後,它不會自動連接配接到PMM Server。要将用戶端連接配接到PMM伺服器,請使用該指令指定IP位址。
pmm-admin config --server 10.1.83.175
注意,如果在運作PMM Server時更改了預設端口80 ,請在伺服器的IP位址之後指定。
五、添加MySQL監控
5.1、添加MySQL監控和主機監控
pmm-admin add mysql --query-source perfschema --user root --password 91160
5.2、檢視配置後的結果
pmm-admin list
5.3、系統相關名額:
5.4、MySQL名額監控
5.5、慢查詢分析,以下圖檔顯示了Query Analytics:
六、添加MongoDB監控
6.1 安裝PMM Client
yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum -y install pmm-client
安裝PMM Client之後,它不會自動連接配接到PMM Server。要将用戶端連接配接到PMM伺服器,請使用該指令指定IP位址。
pmm-admin config --server 10.1.83.175
注意,如果在運作PMM Server時更改了預設端口80 ,請在伺服器的IP位址之後指定。
6.2、添加MongoDB監控
pmm-admin add mongodb --cluster rep --uri mongodb://username:password@localhost:27017
6.3、檢視配置後的結果
pmm-admin list
6.4、名額監控
MongoDB名額監控:
七、設定grafana登入使用者
7.1、進入容器
7.2、修改grafana.ini,禁止匿名登入
[root@c74f5be8ed88 opt]# vi /etc/grafana/grafana.ini
#################################### Anonymous Auth ##########################
[auth.anonymous]
# enable anonymous access
#enabled = True
把enabled = Ture注釋掉,這樣既禁止匿名使用者登陸了
現在如果重新開機容器(systemctl restart docker),再打開頁面,你會發現自己進不去了
7.3、修改登入賬号admin的密碼
登入資料庫:
sqlite3 /var/lib/grafana/grafana.db
修改user表,把admin密碼改成admin:
update user set password=\'59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6\', salt =\'F3FAxVm33R\' where login =\'admin\';
安全起見,也可以把admin密碼改成TdPXP4sg:
update user set password=\'11cf3a1ee21b046b939b5f0cdc9d92ab70ba66e4e53f301fb2456ee7b6a665d8abf0d5b387ae0ec53f5f5fc8e477bfbe073e\',salt=\'AHxOW2Fn34\',name=\'admin\',is_admin=1 where login=\'admin\';
7.4、開啟使用者注冊
我們可以通過開啟使用者注冊,自己建立使用者,然後再檢視user表的資料來自己定義密碼(不要忘記salt列也要更新)
####################################Users####################################
[users]
# disable user signup / registration
allow_sign_up =true
取消allow_sign_up =true注釋
-------------------------------------------------------------
pmm-admin 常用指令介紹
# 添加監控服務
pmm-admin add
# 檢查PMM用戶端和PMM伺服器之間的網絡連接配接。
pmm-admin check-network
# 配置PMM Client如何與PMM伺服器通信。
pmm-admin config
# 列印任何指令和退出的幫助
pmm-admin help
# 列印有關PMM用戶端的資訊
pmm-admin info
# 出為此PMM用戶端添加的所有監控服務
pmm-admin list
# 檢查PMM伺服器是否存活
pmm-admin ping
# 檢查PMM伺服器是否存活。
pmm-admin purge
# 清除PMM伺服器上的度量資料
pmm-admin remove, pmm-admin rm
# 删除監控服務
pmm-admin repair
# 重新開機pmm
pmm-admin restart
# 列印PMM Client使用的密碼
pmm-admin show-passwords
# 開啟監控服務
pmm-admin start
# 停止監控服務
pmm-admin stop
# 在解除安裝之前清理PMM Client
pmm-admin uninstall
作者:張偉科
連結:https://www.jianshu.com/p/ed2bf649a43f
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。