[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