Percona Monitoring and Management Architecture



2.Mykola Marzhan Release Engineer, Percona I have been developing monitoring systems since 2004. I have been working as Release Engineer/Release Manager/ DevOps for 10 years. a free and open-source database troubleshooting and performance optimization platform for MySQL and MongoDB

4.WHY YOU NEED PMM? ➤ You’re looking to Have your MySQL Queries Run Faster ➤ You want to troubleshoot sudden MySQL Performance Problem ➤ You want to find way to run more efficiently (use less Resources)

5.WHY PMM THE BEST SOLUTION FOR YOU? ➤ simple to install (15 minutes or less) ➤ free, open source ➤ self-hosted ➤ communication via TLS/SSL


7.HOW TO SETUP PMM SERVER ➤ curl -sSL | sh ➤ sudo usermod -aG docker your-user ➤ sudo systemctl start docker ➤ docker create \ ➤ docker run -d \ -v /opt/prometheus/data \ -p 80:80 \ -v /opt/consul-data \ --volumes-from pmm-data \ -v /var/lib/mysql \ --name pmm-server \ -v /var/lib/grafana \ --restart always \ --name pmm-data \ percona/pmm-server:1.4.0 percona/pmm-server:1.4.0 \ /bin/true

8.PMM CLIENT ➤ TAR ➤ RPM ➤ RedHat/CentOS 6 ➤ RedHat/CentOS 7 ➤ DEB ➤ Debian 7 (Wheezy) ➤ Debian 8 (Jessie) ➤ Debian 9 (Stretch) (coming soon) ➤ Ubuntu 12.04 LTS (Precise Pangolin) ➤ Ubuntu 14.04 LTS (Trusty Tahr) ➤ Ubuntu 16.04 LTS (Xenial Xerus) ➤ Ubuntu 16.10 (Yakkety Yak)

9.HOW TO SETUP PMM-CLIENT ➤ sudo yum -y install \ release/redhat/0.1-4/percona- release-0.1-4.noarch.rpm ➤ sudo yum -y install pmm-client ➤ sudo pmm-admin config --server ➤ sudo pmm-admin add mysql ➤ sudo pmm-admin check-network


11.QUERY ANALYTICS Query Analytics enables database administrators and application developers to analyze MySQL queries over periods of time and find performance problems.





16.QUERY ANALYTICS MySQL/ Percona MongoDB/ QAN-Agent QAN-API Server QAN-APP RDS for MySQL fetch push Database PMM Client PMM Server Icons:

17.QAN AGENT Daemon (golang): ➤ connects to MySQL or MongoDB database ➤ reads queries from performance schema or slow log ➤ collects query performance data ➤ push data to QAN API ➤ developed by Percona

18.QAN API Daemon, REST API service (golang): ➤ receive data from QAN Agent ➤ save data to Percona Server for MySQL database ➤ return data to QAN APP ➤ developed by Percona

19.QAN APP Web Interface (AngularJS): ➤ show data from QAN API ➤ developed by Percona

20.METRICS MONITOR provides a historical view of metrics that are critical to a database server. Time-based graphs are separated into dashboards by themes: some are related to MySQL or MongoDB, others provide general system metrics.

21.METRICS MONITOR DASHBOARDS ➤ Advanced Data Exploration ➤ MariaDB ➤ Amazon RDS OS Metrics ➤ PXC/Galera Cluster Overview ➤ Cross Server Graphs ➤ PXC/Galera Graphs ➤ Disk Performance ➤ ProxySQL Overview ➤ Disk Space ➤ MySQL InnoDB Metrics ➤ Summary Dashboard ➤ MySQL InnoDB Metrics Advanced ➤ System Overview ➤ MySQL MyISAM Metrics ➤ Trends Dashboard ➤ MySQL MyRocks Metrics ➤ MongoDB Cluster Summary ➤ MySQL Overview ➤ MongoDB InMemory ➤ MySQL Performance Schema ➤ MongoDB MMAPv1 ➤ MySQL Query Response Time ➤ MongoDB Overview ➤ MySQL Replication ➤ MongoDB ReplSet ➤ MySQL Table Statistics ➤ MongoDB RocksDB ➤ MySQL TokuDB Metrics ➤ MongoDB WiredTiger ➤ MySQL User Statistics

22.METRICS MONITOR MySQL/ MongoDB/ Exporter Prometheus Consul Grafana RDS fetch fetch Database PMM Client PMM Server Icons:

23.MYSQLD_EXPORTER/MONGODB_EXPORTER Daemon, REST API service (golang): ➤ connects to database ➤ reads database metadata ➤ return data to Prometheus on API call ➤ forked by Percona

24.MYSQLD_EXPORTER/MONGODB_EXPORTER % curl -k https://<PMM-CLIENT-IP>:42002/metrics-mr # HELP mysql_global_status_commands_total Total number of executed MySQL commands. # TYPE mysql_global_status_commands_total counter mysql_global_status_commands_total{command="admin_commands"} 22146 mysql_global_status_commands_total{command="alter_db"} 0 # HELP mysql_info_schema_threads The number of threads split by current state. # TYPE mysql_info_schema_threads gauge mysql_info_schema_threads{state="other"} 6 mysql_info_schema_threads{state="altering table"} 0

25.CONSUL The tool for service discovery and configuration. REST API service, Database (golang): ➤ receive configuration from pmm-admin tool ➤ save configuration to own database ➤ return configuration to Prometheus


27.PROMETHEUS The monitoring system and time series database. Metrics collector, Database, REST API service (golang): ➤ find targets in Consul ➤ pull metrics from exporters ➤ save metrics on the disk ➤ return metrics to Grafana


29.GRAFANA The tool for beautiful monitoring and metric analytics & dashboards. Web Interface, REST API service (AngularJS, golang): ➤ show nice graphs ➤ fetches data from Prometheus ➤ fetches data from AWS CloudWatch ➤ dashboards developed by Percona