天天看點

MySQL&MongoDB監控利器PMM

一、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架構如下圖所示

MySQL&MongoDB監控利器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,則應該可以通路以下内容:

MySQL&MongoDB監控利器PMM

四、安裝運作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、系統相關名額:

MySQL&MongoDB監控利器PMM

5.4、MySQL名額監控

MySQL&MongoDB監控利器PMM

5.5、慢查詢分析,以下圖檔顯示了Query Analytics:

MySQL&MongoDB監控利器PMM

六、添加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名額監控:

MySQL&MongoDB監控利器PMM

七、設定grafana登入使用者

7.1、進入容器

MySQL&MongoDB監控利器PMM

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

來源:簡書

簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。