スマートスタイル TECH BLOG

データベース&クラウド技術情報

Percona Monitoring and Management 2のインストールとご紹介

はじめに

Percona Monitoring and Management (PMM)とは、Percona社が開発したモニタリングツールです。
その最新リリースであるPMM2のGA(2.0.1)が2019年の10月9日にリリースされました。
この記事では最新バージョンの2.2.2をインストールしてみます。

PMMとは

PMMはMySQLやPostgreSQL,MongoDBなどを監視できるモニタリングツールです。
データベースホストにインストールされたPMM Clientがデータベースやホストのデータを収集します。
PMM ServerはPMM Clientが集めたデータを集約し、グラフで表示します。

PMM2では画面UIが使いやすくなるように変更されたほか、クエリ分析(QAN)にMySQLとMongoDBに加えPostgreSQLがサポートされるようになりました。
また、インストール手順も含め、コマンドなどにも変更があったため本記事でPMM2のインストール手順を紹介します。

環境

ホスト名 IPアドレス 用途
pmm-1 192.168.2.5 Dockerホスト(PMM Serverをインストール)
pmm-2 192.168.2.4 MySQLホスト( PMM Clientをインストール)
  • サーバOSは全て CentOS7.6

各ソフトウェアのバージョン

  • Docker 19.03.5
  • MySQL 8.0.19
  • PMM 2.2.2

データを収集するためにPMM Server(pmm-1)とPMM Client(pmm-2)は通信可能とする必要があります。
通信を有効化するには、以下のportを解放します。

  • pmm-1はpmm-2に対してport80または443を解放
  • pmm-2はpmm-1に対してport42000と42001を解放

PMMの要件について詳しくはPMM ServerPMM Clientの要件を参照してください。

インストール手順

MySQLのインストール

PMMはMariaDB、Percona Server for MySQL、Amazon RDSを含むMySQLをサポートしています。
詳しい要件はこちらのマニュアルをご確認ください。
本記事ではMySQLの最新バージョンであるMySQL8.0.19をpmm-2にインストールします。

PMMはクエリのデータをスロークエリログまたはパフォーマンススキーマから収集します。

今回はデフォルトであるスロークエリログからデータを収集するため、スロークエリログに関する設定を行います。
また、検証のため、long_query_timeを0に設定し全てのクエリを取得するようにしました。
0に設定すると負荷が大きくなるため注意してください。

次に、PMMの接続時にrootユーザーを使用しない場合はマニュアルを参考にPMM用のユーザーを作成します。
PMM1と異なり、自動で接続用ユーザーを作成するオプション(–create-user)は廃止されています。
また、MySQL8.0の場合は、default_authentication_pluginがデフォルトでcaching_sha2_passwordに設定されています。

The MySQL driver used with PMM does not yet support the SHA-256 authentication.

引用元 : Percona
上記の通りPMMではSHA-256 authenticationをサポートしていません。
そのため、接続用ユーザーはmysql_native_passwordを使用する必要があります。

PMM Serverのインストール

PMM Serverをpmm-1にインストールします。
PMM Serverをインストールして、セットアップするには以下の方法があります。

・Dockerを介したPMM Serverの実行
・仮想アプライアンスとしてのPMM Server
・AWS Marketplaceを使用したPMM Serverの実行

本記事ではマニュアルをもとにDockerを介した方法でインストールを行います。
なおDockerはインストール済みとします。

PMM Dataのコンテナを作成します。

PMM Serverのコンテナを作成して起動します。

-pオプションはホスト・インターフェース上に指定したポートを公開します。
PMM ServerのDocker imageには自己証明書が含まれているため、443ポートを公開することでSSL/TLS通信が可能となります。
バージョンの指定には以下のDockerのタグが使用可能です。
今回はPMM2.2.2をインストールするため、:2.2.2を使用します。
:latest はPMM2ではなくPMM1をインストールしてしまうため、注意して下さい。

タグ 内容
:latest PMM1の最新のリリースを意味します。
:2 PMM2の最新のリリースを意味します。
:2.X パッチリリースを除くPMM2のマイナーリリースを意味します。
:2.X.Y PMM2の特定のパッチリリースを意味します。

PMM Clientのインストール

監視対象のMySQL8.0のサーバー(pmm-2)にPMM Clientをこちらのマニュアルをもとにインストールします。

リポジトリのインストール

pmm2-client のパッケージをインストールします

yum install -y pmm-clientとするとPMM1をインストールしてしまうため、注意してください。

PMM Serverに接続します

pmm-admin configコマンドでPMM ClientとPMM Serverの通信設定をします。

  • PMMのイメージに含まれている自己証明書を使用する場合は–server-insecure-tlsコマンドが必要です。
  • –server-urlでPMM ServerのIPアドレスを指定します。フォーマットはhttps://username:password@<PMM Sever IP アドレス>:443です。username:passwordは初期設定ではadmin:adminとなっています。変更はモニタリング画面から可能です。

モニタリング対象の追加

pmm-admin add mysql コマンドを使用してモニタリングサービスにMySQLを追加します。MySQLへの接続情報が必要です。
コマンドの最後にサービス名を自由に指定することもできます。サービス名はモニタリング画面の表示名にも使用されます。指定しない場合は<ノード名>-mysqlとなります。
今回は前項で作ったpmmユーザーを使用し、サービス名を「mysql-8.0」と指定して追加します。

確認

pmm-admin listコマンドを使ってサービスが追加されていることを確認します。
下記のように4つのAgentのStatusがconnectedとrunningになっていたら、データは収集されています。

モニターの確認

ブラウザから、IPアドレスでPMM Serverにアクセスします。
例)https://192.168.2.5:443

パソコンやブラウザの設定などによっては自己証明書を使用しているため、アクセスができない場合があります。その場合は、http通信によるアクセスを試してください。
例)http://192.168.2.5:80


アクセスするとまずログイン画面が表示されます。
初期ユーザー名とパスワードはadmin/adminです。


ログインに成功するとモニタリング画面を確認できます。

確認できるグラフの種類は様々で、MySQLに関するダッシュボードだけでも約15種類あります。

例えば、MySQL Instance Summaryダッシュボードの左上に配置されたMySQL Connectionsグラフでは、接続ユーザーに関するデータが確認できます。このグラフでは、ステータス変数Threads_connectedMax_used_connectionsとシステム変数max_connectionsの値が時系列で表示されます。

MySQL Replication Summaryダッシュボードではレプリケーションのモニタリングができます。

わざとデータ不整合を起こすとこのようにSQL Thread Runningの値がNoとなりレプリケーションが停止していること一目でわかります。

モニタリング画面の変更点

PMM2はPMM1から画面UIも変更が加えられています。

特に大きな変更点としてクエリ分析(QAN)でフィルタリング機能が追加されました。
これにより対象のデータベースだけではなくスキーマごとやユーザーごとにフィルタリングできるようになり、クエリの分析がしやすくなりました。


グラフの左側にフィルタリングが追加されています。

また、メニューの下にパンくずリストが表示され前回見ていたグラフの履歴が辿れるようになりました。

その他にもダッシュボードのレイアウトが変更されていたり、細かい改修が多くあります。

まとめ

PMMは簡単に構築ができて、様々なデータをグラフで表示することができとても便利です。
今後のアップデートにも注目していきたいと思います。


Percona

 

Return Top