Percona Monitoring and Management (PMM) 2.0.0-alpha1 Is Now Available

Percona Monitoring and Management

We are pleased to announce the launch of PMM 2.0.0-alpha1, Percona’s first Alpha release of our long-awaited PMM 2 project! We focused exclusively on MySQL support in our first Alpha (because we wanted to show progress sooner rather than later), and you’ll find updated MySQL dashboards along with enhancements to Query Analytics. We’ve also added better visibility regarding which services are registered with PMM Server, the client-side addition of a new agent called pmm-agent, and finally PMM Server is now exposing an API!

  • Query Analytics
    • Support for large environments – default view all queries from all instances
    • Filtering – display only the results matching filters – MySQL schema name, MySQL server instance
    • Sorting and more columns – now sort by any visible column. Add a column for any field exposed by the data source, for example add rows_examined, lock_time to your Overview
    • Queries source – MySQL PERFORMANCE SCHEMA (slow log coming in our next alpha around May 1st, 2019)
  • Labels – Prometheus now supports auto-discovered and custom labels
  • Inventory Overview Dashboard – Displays the agents, services, and nodes which are registered with PMM Server
  • API – View versions and list hosts using the API
  • pmm-agent – Provides secure remote management of the exporter processes and data collectors on the client

PMM 2 is still a work in progress – expect to see bugs and other missing features! We are aware of a number of issues, but please report any and all that you find to Percona’s JIRA.

Query Analytics Dashboard

Query Analytics Dashboard now defaults to display all queries on each of the systems that are configured for MySQL PERFORMANCE_SCHEMA, Slow Log, and MongoDB Profiler (this release includes support for MySQL PERFORMANCE SCHEMA only), and includes comprehensive filtering capabilities.

Query Analytics Overview

You’ll recognize some of the common elements in PMM 2 Query Analytics such as the Load, Count, and Latency columns, however there are new elements such as the filter box and more arrows on the columns which will be described further down:

PMM 2.0 has new elements available for reporting

Query Detail

Query Analytics continues to deliver detailed information regarding individual query performance:

PMM provides detailed query analytics for MySQL and MongoDB

Filter and Search By

Filtering panel on the left, or use the search by bar to set filters using key:value syntax, for example, I’m interested in just the queries that are executed in MySQL schema db3, I could then type d_schema:db3:

filtering panel on Percona Monitoring and Management

Sort by any column

This is a much requested feature from PMM Query Analytics and we’re glad to announce that you can sort by any column! Just click the small arrow to the right of the column name and

You can now sort PMM reports by any column

Add extra columns

Now you can add a column for each additional field which is exposed by the data source. For example you can add Rows Examined by clicking the + sign and typing or selecting from the available list of fields:

Add custom columns to your PMM presentations


An important concept we’re introducing in PMM 2 is that when a label is assigned it is persisted in both the Metrics (Prometheus) and Query Analytics (Clickhouse) databases.  So when you browse a target in Prometheus you’ll notice many more labels appear – particularly the auto-discovered (replication_set, environment, node_name, etc.) and (soon to be released) custom labels via custom_label.

Labels are reused in both QAN and Metrics

Inventory Dashboard

We’ve introduced a new dashboard with several tabs so that users are better able to understand which nodes, agents, and services are registered against PMM Server.  We have an established hierarchy with Node at the top, then Service and Agents assigned to a Node.

  • Nodes – Where the service and agents will run. Assigned a node_id, associated with a machine_id (from /etc/machine-id)
    • Examples: bare metal, virtualized, container
  • Services – Individual service names and where they run, against which agents will be assigned. Each instance of a service gets a service_id value that is related to a node_id
    • Examples: MySQL, Amazon Aurora MySQL
    • You can also use this feature to support multiple mysqld instances on a single node, for example: mysql1-3306, mysql1-3307
  • Agents – Each binary (exporter, agent) running on a client will get an agent_id value
    • pmm-agent is the top of the tree, assigned to a node_id
    • node_exporter is assigned to pmm-agent agent_id
    • mysqld_exporter & QAN MySQL Perfschema are assigned to a service_id
    • Examples: pmm-agent, node_exporter, mysqld_exporter, QAN MySQL Perfschema

You can now see which services, agents, and nodes are registered with PMM Server.


In this example I have PMM Server (docker) running on the same virtualized compute instance as my Percona Server 5.7 instance, so PMM treats this as two different nodes.

Server treated as reporting node


This example has two MySQL services configured:

Multiple database services supported by PMM


For a monitored Percona Server instance, you’ll see an agent for each of:

  1. pmm-agent
  2. node_exporter
  3. mysqld_exporter
  4. QAN Perfschema

Showing monitoring of Percona Server with an agent for each in PMM


QAN agent for Percona Server

Query Analytics Filters

Query Analytics now provides you with the opportunity to filter based on labels. We’ are beginning with labels that are sourced from MySQL Performance Schema, but eventually will include all fields from MySQL Slow Log, MongoDB Profiler, and PostgreSQL views.  We’ll also be offering the ability to set custom key:value pairs which you’ll use when setting up a new service or instance with pmm-admin during the add ... routine.

Available Filters

We’re exposing four new filters in this release, and we show where we source them from and what they mean:

Filter nameSourceNotes
d_client_hostMySQL Slow LogMySQL PERFORMANCE_SCHEMA doesn’t include client host, so this field will be empty
d_usernameMySQL Slow LogMySQL PERFORMANCE_SCHEMA doesn’t include username, so this field will be empty
d_schemaMySQL Slow Log

MySQL Perfschema

MySQL Schema name
d_serverMySQL Slow Log

MySQL Perfschema

MySQL server instance



We are exposing an API for PMM Server! You can view versions, list hosts, and more!

The API is not guaranteed to work until we get to our GA release – so be prepared for breaking changes during our Alpha and Beta releases.

Browse the API using Swagger at /swagger


Installation and configuration

Install PMM Server with docker

The easiest way to install PMM Server is to deploy it with Docker. You can run a PMM 2 Docker container with PMM Server by using the following commands (note the version tag of 2.0.0-alpha1):

Install PMM Client

Since PMM 2 is still not GA, you’ll need to leverage our experimental release of the Percona repository. You’ll need to download and install the official percona-release package from Percona, and use it to enable the Percona experimental component of the original repository. Specific instructions for a Debian system are as follows:

Now enable the correct repo:

Now install the pmm2-client package:

See percona-release official documentation for details.

Here are the default login credentials:

username: admin
password: admin

Please note that having experimental packages enabled may affect further packages installation with versions which are not ready for production. To avoid this, disable this component with the following commands:

Configure PMM

Once PMM Client is installed, run the pmm-admin setup command with your PMM Server IP address to register your Node within the Server:

We will be moving this functionality back to pmm-admin config in a subsequent Alpha release.

You should see the following:

You then add MySQL services (Metrics and Query Analytics) with the following command:

where username and password are credentials for the monitored MySQL access, which will be used locally on the database host.

After this you can view MySQL metrics or examine the added node on the new PMM Inventory Dashboard:

You can then check your MySQL dashboards and Query Analytics in order to view your server’s performance information!

We hope you enjoy this release, and we welcome your comments on the blog!

About PMM

Percona Monitoring and Management (PMM) is a free and open-source platform for managing and monitoring MySQL®, MongoDB®, and PostgreSQL performance. You can run PMM in your own environment for maximum security and reliability. It provides thorough time-based analysis for MySQL®, MongoDB®, and PostgreSQL® servers to ensure that your data works as efficiently as possible.

Help us improve our software quality by reporting any Percona Monitoring and Management bugs you encounter using our bug tracking system.

Share this post

Comments (9)

  • Fernando Reply

    Hi guys, nice work. I’ll be waiting for GA release and the procedure for upgrade from my 1.17.1 version.

    April 24, 2019 at 2:18 pm
    • Michael Coburn Reply

      Thanks @fernando!

      April 24, 2019 at 4:05 pm
  • andrews2018 Reply

    Good job guys.
    What is the default login for the PMM (container based).
    I tried root / percona and root nothing – both didnt work.
    Kind Regards

    April 25, 2019 at 8:02 am
    • Alexey Palazhchenko Reply

      It is admin / admin.

      April 25, 2019 at 1:19 pm
  • andrews2018 Reply

    ok further problems
    pmm 2.0 alpha webinterface works fine

    when trying to add the agent following the above commands
    how can 443 work when container is initially configured to run on port 80??
    port 80 doesnt work either though nor does without any port
    how to proceed?

    pmm-agent setup –server-insecure-tls –server-address=
    Checking local pmm-agent status…
    pmm-agent is running.
    Registering pmm-agent on PMM Server…
    Failed to register pmm-agent on PMM Server: Post https://http:%2F%2F172.16.127.82:443/v1/management/Node/Register: invalid URL port “//”.
    root@ubu1804template:~# pmm-agent setup –server-insecure-tls –server-address=
    Checking local pmm-agent status…
    pmm-agent is running.
    Registering pmm-agent on PMM Server…
    Failed to register pmm-agent on PMM Server: Post https://http:%2F%2F172.16.127.82/v1/management/Node/Register: invalid URL port “//”.
    root@ubu1804template:~# pmm-agent setup –server-insecure-tls –server-address=
    Checking local pmm-agent status…
    pmm-agent is running.
    Registering pmm-agent on PMM Server…
    Failed to register pmm-agent on PMM Server: Post https://http:%2F%2F172.16.127.82:80/v1/management/Node/Register: invalid URL port “//”.

    this is how it looks on the dockerhost
    root@t-pmm-sv-01:~# netstat -tulpen
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
    tcp 0 0* LISTEN 0 727048 1959/docker-proxy
    tcp 0 0* LISTEN 0 725319 2251/docker-proxy
    tcp 0 0* LISTEN 101 19161 827/systemd-resolve
    tcp 0 0* LISTEN 0 22712 1191/sshd
    tcp 0 0* LISTEN 0 727296 2237/docker-proxy
    udp 0 0* 101 19160 827/systemd-resolve
    udp 0 0* 100 564878 782/systemd-network

    April 26, 2019 at 3:17 am
  • andrews2018 Reply

    so my comment about this not working was deleted?
    following the steps in the article agent cant connect / communicate with pmm server

    April 29, 2019 at 4:31 am
  • andrews2018 Reply

    ok posted it in the forums
    waiting for moderation again…

    April 29, 2019 at 10:14 am

Leave a Reply