今回は、Percona Monitoring and Management 2(PMM) を使用した外部監視についてご紹介します。
PMM の基本的な構成では、監視対象となるサーバに pmm2-client をインストールし、エージェントを起動し、エージェントがパフォーマンスデータを収集して PMM Serverへ集約します。
なお PMM 2.11.0以前はパフォーマンスデータのリポジトリとしてPrometheus及びPrometheus Exporterを使用していたため、PMM Serverが監視サーバ上で動作するExporterへデータをPullする動作でしたが、PMM 2.12.0以降 Prometheus互換の時系列DBである Victria Metrics にリプレイスメントされたことで エージェントからPMM Serverに対してデータをPushすることができるようになっています。
このことにより、PMM Server側で各監視サーバのデータ収集のために巡回したり、監視サーバ側のHTTPポートを開放する必要性がなくなり利便性が高まりました。
このようにエージェント型の監視では対象サーバにソフトウェアをインストールする必要が発生しますが、エージェントがインストールできない環境であったり、もっと気軽に対象サーバを監視したい、すでに他の監視ソフトウェアで基本的な監視はできているけれど特定のパフォーマンス情報の収集を強化したい等のニーズはあるものと思います。
上記のニーズに答えられる機能が、外部監視機能として提供されています。
Amazon RDS MySQL、Aurora MySQL、またはリモートインスタンスの追加
監視ユーザの追加(MySQL)
MySQLのリモートインスタンスを監視する場合、対象ホストで行うことは以下の2つです。
監視ユーザの作成
PMM ServerからMySQLへ接続するためのユーザを作成します。
ユーザには以下の権限が必要です。
ユーザ名、パスワードは任意です。
1 2 |
mysql> GRANT SELECT, PROCESS, REPLICATION CLIENT ON *.* TO 'pmm'@'%' IDENTIFIED BY 'pass' WITH MAX_USER_CONNECTIONS 10; mysql> GRANT SELECT, UPDATE, DELETE, DROP ON performance_schema.* TO 'pmm'@'%'; |
Performance Schemaの有効化(オプショナル)
PMMでは Query Analyticsダッシュボードで個別のクエリのパフォーマンス監視が可能です。
この機能は、スロークエリログ
、performance_schema(statement_digest consumer)
のいずれかを使用してクエリに関するデータを収集します。
スロークエリログ
を収集するためにはホストのファイルシステムへのアクセスが必要であるため、リモートインスタンス監視でQuery Analyticsを使用する場合は performance_schema
を有効化する必要があります。
リモートインスタンスの追加
リモートインスタンスの追加は以下のリンクから実施します。
追加対象ソフトウェアとしてはMySQLの他にMongoDB、 PostgreSQL、 HAProxy、 ProxySQL、Amazon RDS/Aurora、及び任意の外部Exporterから提供されるメトリックを利用することが可能です。
ここではMySQLを選択します。
最低限入力する項目は、Hostname(監視ホストのFQDN/IP)、Username(監視DBユーザ名)、Password(監視DBユーザパスワード)のみです。
Portはデフォルトでは3306、Instance nameはHostnameと同一となります。
ダッシュボードの条件として利用可能なラベル値を設定することも可能です。
入力しておけばグルーピングして画面に表示できるため便利です。
最後にAdd Serviceボタンを押すとで監視が開始します。
Query Analyticsを使用したい場合は、Use performance schema
にチェックが入っていることを確認してください。
しばらくすると監視データが収集され、ダッシュボードに追加したノードの情報が表示されます。
リモートインスタンス監視の仕組みについて
リモートインスタンス監視では、PMM ServerのローカルにExporterを追加し、Exporterからリモートで対象ホストのデータを収集するという仕組みになっています。
PMM Serverにログインし、pmm-adminコマンドで起動しているエージェントを確認すると mysqld_exporter
、mysql_perfschema_agent
が新たに起動していることがわかります。
1 2 3 4 5 6 7 8 9 |
[root@6f6087623c09 opt]# pmm-admin --server-url=http://admin:admin@localhost/ list Service type Service name Address and port Service ID PostgreSQL pmm-server-postgresql 127.0.0.1:5432 /service_id/cb29392e-2027-498a-a5b7-dafee7089aff Agent type Status : mysqld_exporter Running mysql_perfschema_agent Running : |
どのノードが追加されているかは、 Inventory Dashboard
から確認可能です。
また、エージェント監視への切り替えを行うなどの理由により監視を停止する際も同ダッシュボードから削除が可能です。
監視されない情報について
MySQLインスタンスからコマンドで収集できない情報については監視できませんでした。
Node Overviewに表示されるCPU/DiskIO/Memory等のメトリックが該当します。
OSのメトリック収集については優れたソフトウェアが多くありますので、困る事はないでしょう。
アラート機能の利用について
MySQLから収集するデータにはmysqldのUptimeやスロークエリ数などがあり、これらを使用して死活監視や過度なリソース利用に対する監視を設定することが可能です。
まとめ
監視のためのエージェントインストールは台数が多くなると非常に手間になりますが、このリモートインスタンスの監視機能を使用することで簡単に監視を始めることができます。
PMMをお楽しみください!