[TOC]html
這裏貼一個官方示例網址node
在docker環境下,單機單實例,實例名和主機名保持一致,比較方便,可是不對外展現IP和端口仍是蹩腳。也有多是個人視野比較窄,或許根本不須要。可是在咱們這邊沒有數據庫微服務的狀況下,IP和端口仍是比較關鍵的信息點,並且單物理機多數據庫實例下的使用效果並很差。主要體如今沒法使用IP對實例進行彙總python
在某些權限管理比較嚴格的狀況下,dba沒有sudo權限,沒法運行pmm-clientmysql
官方採用單節點Prometheus來存儲監控Metric,小環境還能夠,數千數萬臺的狀況下ova或者docker化的服務端容易爆盤。這個時候易於部署的ova或者docker分發方式反而變成了缺點。nginx
修改Ova的虛擬機的Linux密碼後,訪問監控頁面也須要輸入密碼,agent端註冊也須要密碼。固然若是你不去修改Ova的密碼也沒問題web
這裏簡單說下PMM的架構sql
這裏顯然能夠得出,在監控數據量增大,監控節點增多的狀況下,整個docker或者ova都會被qan的分析和prometheus的讀寫拖慢docker
這裏主要是使用了prometheus配置文件中的relabel功能將__meta_consul_tags
從新打標籤爲IP和PORT。shell
# 截取IP和PORT zrz 20181112 - source_labels: [__meta_consul_tags] separator: ; regex: .*,alias_([-\w:\.]+):.* target_label: IP replacement: $1 action: replace - source_labels: [__meta_consul_tags] separator: ; regex: .*:([-\w:\.]+),.* target_label: PORT replacement: $1 action: replace
爲了找到這個功能,我花費了很長時間,須要使用正則的分段匹配和替換的方式進行截取。\數據庫
突破點在於Prometheus的管理web上,這裏貼出來,相信你們會立刻明白
只要在添加數據實例監控時指定ip加端口,固然最好自定義生成下客戶端的pmm.yml
配置文件
vim /usr/local/percona/pmm-client/pmm.yml server_address: 250.250.250.250 # 服務端的地址,若變動了端口,請加上端口 client_address: 1.1.1.1 # 本機IP bind_address: 1.1.1.1 # 本機IP client_name: 1.1.1.1 # 這裏一般會是主機名,可是建議改爲IP,方便生成IP端口 # agent在本地添加數據庫監控實例時: pmm-admin add mysql --socket /home/dba/heart/break1/mysqld.sock --user flattery --password dog 1.1.1.1:4306 pmm-admin add mysql --socket /home/dba/heart/break2/mysqld.sock --user at --password last 1.1.1.1:5306 pmm-admin add mysql --socket /home/dba/heart/break2/mysqld.sock --user have --password nothing 1.1.1.1:6306
配置好以後,就會生成上圖中IP
和PORT
兩個標籤 \
而後對granfana的variable
進行自定義
label_values(mysql_up,IP) label_values(mysql_up,PORT)
在對圖形的query
進行修改,如圖:
到這裏,剩下的想必聰明的你就知道該怎麼作剩下的了。
須要注意的是在cross頁面,須要使用sum函數(能夠省略by),能夠對整個實例的QPS進行彙總求和。這裏的sum函數能夠對實例級別的QPS進行彙總,而不是對時段內單實例進行彙總
tags功能須要使用查詢CMDB來實現,也就是根據業務對機器和實例進行彙總,而後查詢業務名傳給tags,而後查詢IP端口給tags,
須要sudo權限的緣由是某些Os級別的監控須要權限,並且pmm-client使用了supervisord
對監控進程進行了照顧。這兩方面其實能夠省略。那麼就須要修改代碼去掉這兩個方面就能夠了。
官方使用了pmm-managed包對node_exporter,mysqld_exporter等的的添加進行了包裝,其中比較重要的是,監控的部分元數據採集到MySQL(鏈接方式,監控類型等),接收鏈接方式的配置並餵食給exporter,調用consul包對監控服務的發現進行了add,update,delete,對應了pmm-admin的purge,uninstall,repair等等命令
能夠從docker分發的/opt/entry.sh腳本入手,天不早了。這裏留給聰明的你 本身探索
服務端拆分能夠(也是必須)解決以下問題:
如若解決了Pmm-client的IP和端口採集問題,pmm-server的拆分的難度,我相信Pmm的易用性會大大提高
https://prometheus.io/docs/prometheus/latest/querying/basics/
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#%3Cconsul_sd_config%3E
https://www.ctolib.com/docs/sfile/prometheus-book/sd/service-discovery-with-relabel.html
https://www.shellhacks.com/prometheus-delete-time-series-metrics/
http://dockone.io/article/3065