一、PMM介绍
二、PMM架构解析
三、安装运行PMM Server
四、安装运行PMM Client
五、添加MySQL监控
六、查看监控和管理平台
七、添加MongoDB监控
八、仪表盘设置
九、经常问的问题?
一、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 Server中的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
概览:用一台A服务器运行监控程序,监控程序是基于Docker构建的。然后在需要被统计的服务器上安装pm-admin,这个工具会将数据实时的发送到A服务器。A服务器会分析统计数据,然后将数据展示在web端。
Percona发布了PMM Docker镜像,用户只需要下载镜像运行就全部搞定,开箱即用相当easy!
PMM服务器的Docker映像公开托管在https://hub.docker.com/r/percona/pmm-server。如果要从Docker映像运行PMM Server,则主机必须能够运行Docker 1.13或更高版本,并具有网络访问权限。有关使用Docker的更多信息,请参阅Docker文档。
你可以通过执行下面的命令,高速安装Docker。
1
|
$
curl
-
sSL
https
:
/
/
get
.daocloud
.io
/
docker
|
sh
|
适用于Ubuntu,Debian,Centos等大部分Linux,会3小时同步一次Docker官方资源。
3.1 创建PMM数据容器
1
2
3
4
5
6
7
|
$
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-server时保留所有PMM数据。不要删除或重新创建此容器,除非您打算清除所有PMM数据并重新开始。
以前的命令执行以下操作:
docker create
:该命令指示Docker守护程序从映像创建容器。-v
:该选项初始化数据卷的容器。--name
:该选项为你可以用于引用Docker网络中的容器的容器分配一个自定义名称。percona/pmm-server:1.1.3
:是导出容器的镜像名称和版本标签。/bin/true
:是容器运行的命令。
3.2 运行PMM容器
1
2
3
4
5
6
7
|
$
docker
run
-
d
\
-
p
80
:
80
\
--
volumes
-
from
pmm
-
data
\
--
name
pmm
-
server
\
--
restart
always
\
--
init
\
percona
/
pmm
-
server
:
1.1.3
|
以前的命令执行以下操作:
docker run
:该命令指示守护程序从镜像运行容器。-d
:该选项在分离模式(即后台)中启动容器。-p
:该选项映射用于访问PMM服务器 Web UI的端口。例如-p 8080:80,如果端口80不可用,则可以使用登陆页面映射到端口8080 。--volumes-from
:该选项从pmm-date容器中装入卷。--name
:该选项为你可以用于引用Docker网络中的容器分配一个自定义名称。--restart
:该选项定义容器的重新启动策略,设置它以always确保Docker守护程序在启动时启动容器,并在容器退出时重新启动它。--init
:该选项在容器内运行带有PID 1的init进程,它转发信号并收集进程。percona/pmm-server:1.1.3
:是导出容器的镜像名称和版本标签。
3.3 查看Docker运行状态
1
2
3
|
$
docker
ps
CONTAINER
ID
IMAGE
COMMAND
CREATED
STATUS
PORTS
NAMES
1295960891e1
percona
/
pmm
-
server
:
1.1.3
"/opt/entrypoint.sh"
About
a
minute
ago
Up
About
a
minute
0.0.0.0
:
80
->
80
/
tcp
,
443
/
tcp
pmm
-
server
|
通过使用运行容器的主机的IP地址连接到PMM Web界面来验证PMM服务器是否正在运行,然后在要监视的所有数据库主机上安装PMM Client。
3.4 验证PMM服务器
运行PMM Server之后,你应该可以使用运行容器的主机的IP地址访问PMM Web界面。例如,如果在默认端口80上运行10.10.0.188,则应该可以访问以下内容:
四、安装运行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 安装RMM Client
1
2
|
$
sudo
yum
install
http
:
/
/
www
.percona
.com
/
downloads
/
percona
-
release
/
redhat
/
0.1
-
4
/
percona
-
release
-
0.1
-
4.noarch.rpm
$
sudo
yum
install
pmm
-
client
|
安装PMM Client之后,它不会自动连接到PMM Server。要将客户端连接到PMM服务器,请使用该命令指定IP地址。
1
2
3
4
5
6
|
$
pmm
-
admin
config
--
server
10.10.0.188
OK
,
PMM
server
is
alive
.
PMM
Server
|
10.10.0.188
Client
Name
|
tosa1
-
tcjf
-
db1
Client
Address
|
10.100.172.240
|
注意,如果在运行PMM Server时更改了默认端口80 ,请在服务器的IP地址之后指定。
4.2 PMM客户端管理
使用pmm-admin工具来管理PMM客户端。该pmm-admin工具需要root访问权限(你应该以具有root用户权限的用户身份登录或者可以使用命令进行登录sudo)。
用法:
1
|
pmm
-
admin
[
OPTIONS
]
[
COMMAND
]
|
OPTIONS
以下选项可用于任何命令:
- 指定PMM配置文件的位置(默认/usr/local/percona/pmm-client/pmm.yml)。
- 打印任何命令和退出的帮助。
- 打印 PMM客户端版本。
- 打印详细输出。
-c
,
--config-file
-h
,
--help
-v
,
--version
--verbose
COMMANDS
- 添加监控服务。
- 检查 PMM客户端和 PMM服务器之间的网络连接。
- 配置 PMM Client如何与 PMM服务器通信。
- 打印任何命令和退出的帮助。
- 打印有关 PMM客户端的信息。
- 列出为此 PMM客户端添加的所有监控服务。
- 检查 PMM服务器是否存活。
- 清除 PMM服务器上的度量数据。
- 删除监控服务。
- 删除丢失连接的服务(如服务器端宕机了)。
- 重新启动监控服务。
- 打印 PMM Client使用的密码(存储在配置文件中)。
- 开启监控服务。
- 停止监控服务。
- 在卸载之前清理 PMM Client。
pmm-admin add
pmm-admin check-network
pmm-admin config
pmm-admin help
pmm-admin info
pmm-admin list
pmm-admin ping
pmm-admin purge
pmm-admin remove
,
pmm-admin rm
pmm-admin repair
pmm-admin restart
pmm-admin show-passwords
pmm-admin start
pmm-admin stop
pmm-admin uninstall
五、添加MySQL监控
5.1 连接PMM服务器
安装PMM Client之后,它不会自动连接到PMM Server。要将客户端连接到PMM服务器,请使用该命令指定IP地址。
1
2
3
4
5
6
|
$
pmm
-
admin
config
--
server
10.10.0.188
OK
,
PMM
server
is
alive
.
PMM
Server
|
10.10.0.188
Client
Name
|
tosa1
-
tcjf
-
db1
Client
Address
|
10.100.172.240
|
5.2 需要先创建一个监控账号(最好使用高权限用户)
1
2
|
mysql
>
GRANT
ALL
on
*
.
*
to
'root'
@
'localhost'
identified
by
'123456'
;
mysql
>
flush
privileges
;
|
5.3 添加MySQL监控和主机监控
这里将用linux:metrics
和mysql-metrics
和mysql:queries
收集MySQL主机指标和实例指标和慢查询的信息。
1
2
3
4
|
$
pmm
-
admin
add
mysql
--
user
root
--
password
'123456'
--
host
127.0.0.1
--
port
3306
[
linux
:
metrics
]
OK
,
now
monitoring
this
system
.
[
mysql
:
metrics
]
OK
,
now
monitoring
MySQL
metrics
using
DSN
root
:
*
*
*
@
tcp
(
127.0.0.1
:
3306
)
[
mysql
:
queries
]
OK
,
now
monitoring
MySQL
queries
from
slowlog
using
DSN
root
:
*
*
*
@
tcp
(
127.0.0.1
:
3306
)
|
监控单主机多实例时如下配置即可:
1
2
|
$
pmm
-
admin
add
mysql
--
user
root
--
password
'123456'
--
host
127.0.0.1
--
port
3306
instance
-
01
$
pmm
-
admin
add
mysql
--
user
root
--
password
'123456'
--
host
127.0.0.1
--
port
3307
instance
-
02
|
查看exproter监听端口
1
2
3
|
$
netstat
-
nplt
|
grep
export
tcp
0
0
10.100.172.240
:
42000
0.0.0.0
:
*
LISTEN
16477
/
node_exporter
tcp
0
0
10.100.172.240
:
42002
0.0.0.0
:
*
LISTEN
16856
/
mysqld_export
|
pmm-client可以按host和port进行配置,pmm-client是否无须部署到MySQL对应的机器上呢?
pmm-client收的监控数据来源有这么几方面:
a. MySQL所在机器的系统指标(linux:metrics).
b. MySQL的performance_schema(mysql:metrics).
c. MySQL慢查询日志(mysql:queries).
5.4 查看配置后的结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
$
pmm
-
admin
list
pmm
-
admin
1.1.3
PMM
Server
|
10.10.0.188
Client
Name
|
tosa1
-
tcjf
-
db1
Client
Address
|
10.100.172.240
Service
Manager
|
unix
-
systemv
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-
--
--
--
--
--
-
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
SERVICE
TYPE
NAME
LOCAL
PORT
RUNNING
DATA
SOURCE
OPTIONS
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-
--
--
--
--
--
-
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
mysql
:
queries
tosa1
-
tcjf
-
db1
-
YES
mysql_monitor
:
*
*
*
@
tcp
(
127.0.0.1
:
3306
)
query_source
=
slowlog
,
query_examples
=
true
linux
:
metrics
tosa1
-
tcjf
-
db1
42000
YES
-
mysql
:
metrics
tosa1
-
tcjf
-
db1
42002
YES
mysql_monitor
:
*
*
*
@
tcp
(
127.0.0.1
:
3306
)
|
如果我们想收集a和c中的指标的话,最好还是将pmm-client部署在MySQL所在机器。
5.5 帮助信息
更多的设定內容可以用下列指令查询:
1
2
3
4
|
$
pmm
-
admin
add
mysql
:
metrics
--
help
Usage
:
pmm
-
admin
add
mysql
[
name
]
[
flags
]
.
.
.
.
.
|
以下选项可以与mysql:metrics
别名一起使用:
- 为 PMM客户端(命名pmm)创建一个专用的MySQL用户。
- 指定专用MySQL用户的最大连接数(默认值为10)。
- 指定专用MySQL用户的密码。
- 指定路径my.cnf。
- 禁用二进制日志统计的收集。
- 禁用进程状态指标的收集。
- 禁用表统计信息的收集。
- 指定启用表统计信息集合的最大表数(默认情况下,限制为1000表)。
- 禁用用户统计信息的收集。
- 强制创建或更新专用的MySQL用户。
- 指定MySQL主机名。
- 指定具有管理员权限的MySQL用户的密码。
- 指定MySQL实例端口
- 指定MySQL实例套接字文件。
- 指定具有管理员权限的MySQL用户的名称。
--create-user
--create-user-maxconn
--create-user-password
--defaults-file
--disable-binlogstats
--disable-processlist
--disable-tablestats
--disable-tablestats-limit
--disable-userstats
--force
--host
--password
--port
--socket
--user
六、查看监控和管理平台
使用运行PMM Server的主机的IP地址访问PMM Web界面。目标网页链接到相应的PMM工具:
Component | URL | 备注 |
---|---|---|
PMM landing page | http://10.10.0.188 | PMM跳转页 |
Query Analytics (QAN web app) | http://10.10.0.188/qan | SQL慢日志分析 |
Metrics Monitor (Grafana) | http://10.10.0.188/graph | user name: admin password: admin监控指标图表 |
Orchestrator | http://10.10.0.188/orchestrator | MySQL集群拓扑结构 |
这些工具可以全面了解MySQL主机的性能。
6.1 指标监控
该监控工具提供对数据库服务器的关键指标的历史指标,基于时间的图表通过主题分为仪表板:一些与MySQL或MongoDB相关,其他则提供了一般的系统指标。
要访问仪表板,请提供默认用户凭据:
用户: admin
密码: admin
在主屏幕上,从可用的Dashboards列表中选择一个仪表板。例如,以下图片显示了系统相关指标:
MySQL指标监控
6.2 慢查询分析
该查询分析工具,使数据库管理员和应用程序开发人员分析一段时间内的MySQL查询和发现性能问题,查询分析可以帮助你优化数据库性能。
PMM使用slow log作为查询源(还可以以performance schema作为数据源),记得要需要开启慢日志。
1
2
|
slow_query_log
=
1
#开启慢查询日志;
long_query_time
=
0
#超过多少秒的查询就写入日志;
|
不然打开PMM Query Analytics会报 “QAN API error: “qh.Profile: No query classes for selected instance and time range.错误。
以下图片显示了Query Analytics:
汇总表包含以%GTT (总计时间的百分比)排名的前十名查询,这是MySQL服务器执行特定查询所花费的时间百分比,与在所选期间执行所有查询的总时间相比时间。
你可以通过选择预定义的间隔(最后一小时,3小时,6小时,12小时,最后一天或5天)来选择顶部的时间段,或者使用日历图标选择特定的间隔。如果你有多个安装了PMM Client的MySQL主机,则可以使用顶部的下拉列表在这些主机之间切换。
如果要配置使用PMM Client在MySQL主机上运行的QAN代理,请单击顶部的齿轮图标。
6.2.1 查询详情
如果你在汇总表中单击查询,你可以获得查询的详细信息。详细信息包含特定于该特定查询的所有指标,例如发送的字节数,锁定时间,发送的行数等。你可以查看查询的第一次和最后一次查看,获取查询的示例以及其指纹。
详细信息部分使您可以EXPLAIN直接从PMM Web界面(仅指定数据库)在所选查询上运行。
你可以在底部为所选查询运行“表信息”,这使你能够获得,以及通过直接从PMM Web界面查询使用的每个表:SHOWCREATE TABLE
SHOW INDEX
SHOW TABLE STATUS
如果你的MySQL严格区分大小写,查看表信息可能会有问题。这个时候你可以在点击”Add db.table to list”把你要查看的表添加进去。
6.2.2 Performance Schema
PMM的查询数据的默认源是慢查询日志,它在MySQL 5.1及更高版本中可用。从MySQL 5.6(包括Percona Server 5.6及更高版本)开始,你可以选择从Performance Schema中解析查询数据。从MySQL 5.6.6开始,性能模式默认启用(MariaDB 10.0&10.1默认关闭)。
Performance Schema不像慢查询日志那样具有数据丰富性,但它具有所有关键数据,并且通常更快地解析。如果你正在运行Percona Server,则正确配置的慢查询日志将以最低的开销提供最多的信息。否则,使用Performance Schema可能会提供更好的结果。
要使用性能模式:
1. 确保performance_schema变量设置为ON
1
2
3
4
5
6
7
|
mysql
>
SHOW
VARIABLES
LIKE
'performance_schema'
;
+
--
--
--
--
--
--
--
--
--
--
+
--
--
--
-
+
|
Variable_name
|
Value
|
+
--
--
--
--
--
--
--
--
--
--
+
--
--
--
-
+
|
performance_schema
|
ON
|
+
--
--
--
--
--
--
--
--
--
--
+
--
--
--
-
+
1
row
in
set
(
0.02
sec
)
|
如果没有,请添加以下行my.cnf并重新启动MySQL(不支持动态启动目前):
1
2
|
[
mysql
]
performance_schema
=
ON
|
注意:默认情况下,MySQL 5.6.6及更高版本中启用了Performance Schema检测,在5.6之前的MySQL版本中完全不可用。
2. 配置QAN代理从Performance Schema收集数据
如果实例已经运行:
- 在Query Analytics网络用户界面中,点击顶部的齿轮按钮。
- 在“ 查询分析”下,从 “Collect from”下拉列表中选择“Performance Schema ”。
- 单击Apply以保存更改。
如果要使用pmm-admin工具添加新的监控实例,请使用该选项,例如:--query-source perfschema
1
|
$
pmm
-
admin
add
mysql
--
user
root
--
password
root
--
create
-
user
--
query
-
source
perfschema
|
另外,打开Query Analytics,点击view database and server summary info按钮应该会显示如下信息:
解决方法:需要安装percona-toolkit包即可
1
|
$
yum
install
percona
-
toolkit
|
6.3 Orchestrator
Orchestrator是MySQL复制拓扑管理和可视化工具(它是一个独立的工具,不与PMM集成),你可以使用PMM服务器地址/orchestrator后的URL访问它。或者,你可以单击主PMM服务器着陆页上的MySQL复制拓扑管理器按钮。
要使用它,在所有管理实例上为Orchestrator创建一个MySQL用户:
1
|
GRANT
SUPER,
PROCESS,
REPLICATION
SLAVE,
RELOAD
ON
*。
*
TO
'orc_client_user'
@
'%'
IDENTIFIED
BY
'orc_client_password'
;
|
注意:示例中的凭据是默认值,如果使用不同的用户名或密码,则必须使用以下选项在运行PMM Server时传递它们 :
1
|
-
e
ORCHESTRATOR_USER
=
name
-
e
ORCHESTRATOR_PASSWORD
=
pass
|
然后,您可以使用Orchestrator Web界面中的Discover页将实例添加到拓扑。
七、添加MongoDB监控
7.1 连接PMM服务器
安装PMM Client之后,它不会自动连接到PMM Server。要将客户端连接到PMM服务器,请使用该命令指定IP地址。
1
2
3
4
5
6
|
$
pmm
-
admin
config
--
server
10.10.0.188
OK
,
PMM
server
is
alive
.
PMM
Server
|
10.10.0.188
Client
Name
|
tosa1
-
tcjf
-
db1
Client
Address
|
10.100.172.240
|
7.2 添加MongoDB监控
这将创建pmm-mongodb-metrics-42003
收集此特定MongoDB实例的本地MongoDB指标的服务。
1
|
$
pmm
-
admin
add
mongodb
--
cluster
rs1
--
uri
mongodb
:
/
/
admin
:
123456
@
localhost
:
27017
|
八、仪表盘设置
默认情况下,仪表盘中不是所有的dashboard都可以正确显示,有一些是专门为Percona或MariaDB提供的监控指标。或者有一些需要专门的插件支持才可以正确显示。
但是收集图表的指标和统计信息会增加性能开销,所以你可以一直不断收集和绘制低开销的指标,只有在排除问题时才去启用高开销指标。
MySQL InnoDB Metrics
InnoDB指标提供有关InnoDB操作的详细信息,虽然你可以选择仅捕获特定计数器,但即使所有这些计数器始终启用,它们的开销也很低。要启用所有InnoDB指标,请将全局innodb_monitor_enable变量设置为all:
1
|
mysql
>
SET
GLOBAL
innodb_monitor_enable
=
all
;
|
MySQL User Statistics
用户统计信息是Percona Server和MariaDB中可用的功能,它提供有关用户活动,单独表和索引访问的信息。在某些情况下,收集用户统计信息可能会导致高开销,因此请谨慎使用此功能。要启用用户统计信息,请将userstat变量设置为1即可。
MySQL Performance Schema
使用MySQL 5.6或更高版本,默认情况下启用性能模式检测。如果未启用某些仪器,则在“ MySQL Performance Schema”仪表板中将看不到相应的图形。要启用完整的仪器设置,请将–performance_schema_instrument选项设置’%=on’为启动时:
注意:此选项可能导致额外的开销,应谨慎使用。
MySQL Query Response Time
查询响应时间分配是Percona Server中可用的功能(MariaDB部分可用),它提供有关不同查询组的查询响应时间更改的信息,通常允许在导致严重问题之前发现性能问题。
注意:此功能导致非常高的开销,特别是在每秒处理超过10,000个查询的系统上,仅在故障排除问题时暂时使用它。
启用查询响应时间的收集:
1. 安装QUERY_RESPONSE_TIME插件
1
2
3
4
|
mysql
>
INSTALL
PLUGIN
QUERY_RESPONSE_TIME_AUDIT
SONAME
'query_response_time.so'
;
mysql
>
INSTALL
PLUGIN
QUERY_RESPONSE_TIME
SONAME
'query_response_time.so'
;
mysql
>
INSTALL
PLUGIN
QUERY_RESPONSE_TIME_READ
SONAME
'query_response_time.so'
;
mysql
>
INSTALL
PLUGIN
QUERY_RESPONSE_TIME_WRITE
SONAME
'query_response_time.so'
;
|
2. 将全局query_response_time_stats变量设置为ON
1
|
mysql
>
SETGLOBALquery_response_time_stats
=
ON
;
|
九、经常问的问题?
9.1 如何控制Prometheus的内存消耗?
默认情况下,PMM Server中的Prometheus最多可以使用256MB的内存来存储最近使用的数据块。根据进入普罗米修斯的数据量,你可能需要更高的限制才能避免限制数据吞吐,或者如果其他进程需要更少的内存消耗。
你可以通过METRICS_MEMORY在创建和运行PMM Server容器时传递环境变量来控制Prometheus允许的内存消耗。要设置环境变量,请使用该-e选项。该值必须以千字节为单位传递。例如,将限制设置为4GB内存:
1
|
-
e
METRICS_MEMORY
=
4194304
|
注意:限制仅影响为数据块保留的内存,普罗米修斯的实际RAM使用率更高,建议使用比数据块占用的预期内存至少三倍的内存。
9.2 如何控制Prometheus的数据保留?
默认情况下,PMM服务器中的Prometheus将时间序列数据存储30天,根据可用的磁盘空间和您的要求,您可能需要调整数据保留时间。
您可以通过METRICS_RETENTION在创建和运行PMM Server容器时传递环境变量来控制Prometheus的数据保留时间。要设置环境变量,请使用该-e选项。该值以小时,分钟和秒的组合传递。例如,默认值为30天720h0m0s。你可能不需要比数字小时更精确,所以你可以丢弃分钟和秒。例如,将保留期限减少到8天:
1
|
-
e
METRICS_RETENTION
=
192h
|
9.3 常见的性能考虑是什么?
如果MySQL服务器有很多模式或表,建议在添加实例时禁用每个表的指标:
1
|
$
sudo
pmm
-
admin
add
mysql
--
disable
-
tablestats
|
注意:如果有超过1000个表,表统计信息将自动禁用。
9.4 可以一次停止所有服务吗?
是的,你可以使用pmm-admin启动和停止与添加的监控实例相对应的单个服务,或者一次启动所有这些服务。
启动和停止所有服务:
1
2
|
$
sudo
pmm
-
admin
stop
--
all
$
sudo
pmm
-
admin
start
--
all
|
9.5 PMM客户端日志文件位于哪里?
pmm-admin添加监控实例时创建的每个服务都有一个单独的日志文件/var/log/。文件名具有以下语法:pmm-<type>-<port>.log。
例如,QAN监控服务的日志文件是/var/log/pmm-mysql-queries-0.log。所以有问题看日志即可。
9.6 PMM客户端创建的服务在哪里?
使用该pmm-admin工具添加监控实例时,会创建相应的服务。该服务的名称具有以下语法: pmm-<type>-<port>
例如:pmm-mysql-metrics-42002。
服务的位置取决于服务管理器:
systemd:/etc/systemd/system/
upstart:/etc/init/
systemv:/etc/init.d/
要查看系统上使用哪个服务管理器,请运行:pmm-admin info
9.7 PMM如何配置安全访问模式?
你可以使用以下安全功能来保护PMM免受未经授权的访问:
- HTTP密码保护在访问PMM服务器 Web界面时添加身份验证
- SSL加密保护PMM客户端和PMM服务器之间的流量
9.7.1 启用密码保护
你可以在创建和运行PMM Server容器时传递环境变量来设置访问PMM Server Web界面的密码。要设置环境变量,请使用该选项。例如,要设置密码为:
1
|
SERVER_PASSWORD
-
e
pass1234
|
默认情况下,用户名为pmm。你可以通过传递SERVER_USER变量来改变它。
例如:
1
2
3
4
5
6
7
8
|
docker
run
-
d
-
p
80
:
80
\
--
volumes
-
from
pmm
-
data
\
--
name
pmm
-
server
\
-
e
SERVER_USER
=
admin
\
-
e
SERVER_PASSWORD
=
admin
\
--
restart
always
\
--
init
\
percona
/
pmm
-
server
:
1.1.3
|
PMM客户端使用相同的凭据与PMM服务器进行通信,如果按照所述设置用户名和密码,请在将PMM Client连接到PMM服务器时指定它们:
1
|
$
pmm
-
admin
config
--
server
10.10.0.188
--
server
-
user
admin
--
server
-
password
admin
|
9.7.2 启用SSL保护