PMM监控-数据库监控

安装pmm客户端

下载安装客户端DownLoad

1
$ rpm -ivh pmm2-client-2.10.1-6.el7.x86_64.rpm

客户端连接到server

1
$ pmm-admin config --server-insecure-tls --server-url=https://admin:Abcd123@10.0.139.163:443

查看客户端

1
2
3
4
5
6
$ pmm-admin list
Service type  Service name         Address and port  Service ID

Agent type                  Status     Agent ID                                        Service ID
pmm_agent                   Connected  /agent_id/4e8b2fc2-63f7-4b16-a916-5aa2ec05f641
node_exporter               Running    /agent_id/09382ac0-756a-4397-8d6b-ef944b339e34

添加MySQL监控

创建pmm用户

1
2
mysql> Grant SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD on *.* to 'pmm'@'localhost' identified by 'Abcd123#' with grant option;
mysql> flush privileges;

注册MySQL监控

1
$ pmm-admin add mysql --username=pmm --password=Abcd123# --query-source=perfschema test-mysql 127.0.0.1:3306

MySQL提供了两个查询指标来源:slowlog和perfschema

查看客户端服务

1
2
3
4
5
6
7
8
9
$ pmm-admin list
Service type  Service name         Address and port  Service ID
MySQL         t-luhx02-v-szzb-mysql 127.0.0.1:33006   /service_id/1dc85561-e23e-46a1-8f24-056ffa51137e

Agent type                  Status     Agent ID                                        Service ID
pmm_agent                   Connected  /agent_id/4e8b2fc2-63f7-4b16-a916-5aa2ec05f641
node_exporter               Running    /agent_id/09382ac0-756a-4397-8d6b-ef944b339e34
mysqld_exporter             Running    /agent_id/efc4b59f-4136-4526-9b6e-b253c88b1116  /service_id/1dc85561-e23e-46a1-8f24-056ffa51137e
mysql_perfschema_agent      Running    /agent_id/ede09a9a-d68c-4b98-b461-0e5bd70608b9  /service_id/1dc85561-e23e-46a1-8f24-056ffa51137e

查看MySQL监控面板 pmm-mysql

最佳实践:

  • 如果是使用percona mysql,query source可以使用slowlog,并设置log_slow_rate_limit和slow_query_log_always_write_time,其它情况下建议使用Performance
  • query source采用performance时,应确定所需的setup_consumers已经开启,否则dashboard中无法看到对应视图
  • 当MySQL有多个schema和table时,添加监控时设置–disable-tablestats和–disable-tablestats-limit有助于提高pmm的性能
  • 可以选择开启innodb_monitor_enable=all

添加MongoDB监控

查询分析器要求MongoDB版本在3.2或更高,并且需要创建监控用户

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
db.createRole({
    role: "explainRole",
    privileges: [{
        resource: {
            db: "",
            collection: ""
            },
        actions: [
            "listIndexes",
            "listCollections",
            "dbStats",
            "dbHash",
            "collStats",
            "find"
            ]
        }],
    roles:[]
})

db.getSiblingDB("admin").createUser({
   user: "pmm",
   pwd: "Abcd123",
   roles: [
      { role: "explainRole", db: "admin" },
      { role: "clusterMonitor", db: "admin" },
      { role: "read", db: "local" }
   ]
})

另外,查询分析器还要求MongoDB启用性能分析,可以在参数文件中开启

1
2
3
operationProfiling:
   slowOpThresholdMs: 200
   mode: slowOp

注册MongoDB监控

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$ pmm-admin add mongodb --help
usage: pmm-admin add mongodb [<flags>] [<name>] [<address>]

Add MongoDB to monitoring

Flags:
  -h, --help                     Show context-sensitive help (also try --help-long and --help-man)
      --version                  Show application version
      --server-url=SERVER-URL    PMM Server URL in `https://username:password@pmm-server-host/` format
      --server-insecure-tls      Skip PMM Server TLS certificate validation
      --debug                    Enable debug logging
      --trace                    Enable trace logging (implies debug)
      --json                     Enable JSON output
      --node-id=NODE-ID          Node ID (default is autodetected)
      --pmm-agent-id=PMM-AGENT-ID  
                                 The pmm-agent identifier which runs this instance (default is autodetected)
      --username=USERNAME        MongoDB username
      --password=PASSWORD        MongoDB password
      --query-source=profiler    Source of queries, one of: profiler, none (default: profiler)
      --environment=ENVIRONMENT  Environment name
      --cluster=CLUSTER          Cluster name
      --replication-set=REPLICATION-SET  
                                 Replication set name
      --custom-labels=CUSTOM-LABELS  
                                 Custom user-assigned labels
      --skip-connection-check    Skip connection check
      --tls                      Use TLS to connect to the database
      --tls-skip-verify          Skip TLS certificates validation
      --service-name=NAME        Service name (overrides positional argument)
      --host=HOST                Service hostname or IP address (overrides positional argument)
      --port=PORT                Service port number (overrides positional argument)
      --socket=SOCKET            Path to socket

Positional arguments:
  [<name>]     Service name (autodetected default: t-luhx02-v-szzb-mongodb)
  [<address>]  MongoDB address and port (default: 127.0.0.1:27017)

添加单节点

1
$ pmm-admin add mongodb  --service-name="test-mongodb" --username=pmm --password=Abcd123  --host=10.0.139.162 --port=20000

添加副本集

1
$ pmm-admin add mongodb --cluster test --replication-set="shard1" --service-name="shard1-162" --username=pmm --password=Abcd123  --host=10.0.139.162 --port=20000

添加mongos

1
$ pmm-admin add mongodb --cluster test --service-name="mongos-162" --username=pmm --password=Abcd123  --host=10.0.139.162 --port=24000
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus