はじめに
Percona Monitoring and Management(以下PMM)ではGrafanaのアラート機能かAlertmanagerを使用することでアラートを通知することができます。さらに現在、Integrated Alertingというアラート機能が開発中となっています。
これまではPMMとしてのアラート機能はなく、アラートを設定するには必要に応じて自身でGrafanaの設定ファイルを編集したり、別途Alertmanagerをセットアップする必要がありました。
Integrated AlertingはPMMに統合されたアラート機能で、アラートの作成や管理、通知設定などをすべてPMMの機能として使用することができるようになりました。また、一連の設定作業を全てGUIから可能となっています。
今回はこのIntegrated Alertingの紹介をします。
なお、Integrated AlertingはTechnical Previewであるため、本番環境では利用しないようにご注意ください。
また、Integrated Alertingは、Grafanaのアラート機能とAlertmanagerに代わるアラート機能として導入されました。Technical PreviewからGeneral Availabilityになるまでは引き続きこれらのアラート機能を使用することができますが、GA後はIntegrated Alertingを使用することが推奨されます。
事前準備
PMM ServerとPMM Clientの設定
PMMは最新リリース2.28.0を使用します。
1 2 3 4 5 6 7 8 |
# docker create --volume /srv \ --name pmm-data percona/pmm-server:2.28.0 /bin/true # docker run --detach --restart always \ --publish 443:443 \ --volumes-from pmm-data \ --name pmm-server \ percona/pmm-server:2.28.0 |
PMMが監視するMySQLのservice_nameはdb-1
とします。
1 2 |
# pmm-admin config --server-insecure-tls --server-url=https://admin:admin@127.0.0.1:443 # pmm-admin add mysql --username=pmm --password=Password1! db-1 |
有効化
Integrated Alertingはデフォルトでは無効となっています。そのため、まずはPMM SettingsからIntegrated Alertingを有効化します。
左側のメニューからSettingsを開きます。
Advanced Settingsタブを開き、下部のIntegrated Alertingを有効化し、Apply changesを押します。
アラートの通知方法の設定
Integrated Alertingはemail, Slack, PagerDuty, Webhookによる通知がサポートされています。今回はGmailを介してメール通知を設定する方法について説明します。
まずはGoogleアカウントでアプリ パスワードを生成します。なお、これには2段階認証プロセスを有効にしておく必要があります。
Googleアカウントの左側のメニューからセキュリティを選択し、[Googleへのログイン]のアプリ パスワードを選択します。
[アプリを選択]でメール、[デバイスを選択]でWindowsパソコンとし、生成を選択します。
するとアプリパスワードが表示されるので、これをメモしておきます。
アプリパスワード作成の詳しい手順はこちらのヘルプをご参照ください。
続いてPMM SettingsのCommunication tab から必要設定を行います。
今回の設定は以下の通りです。
- Server Address: サーバーアドレスを入力する。今回はsmtp.gmail.com:465とします。
- Hello: SMTP サーバーと SMTP 通信を行うホスト名。今回はpmmとします。
- From: 送信者のメールアドレス。今回はGoogleアカウントのメールアドレスとします。
- Auth Type: 認証タイプ。今回はLoginを選択し、以下の認証情報を入力します。
- Username: Googleアカウントのメールアドレス
- Password: 上で作成したアプリパスワードを入力します
Test Emailに任意のメールアドレスを入力してTestボタンを押すと、そのアドレスにテストメールを送ることができます。
設定が完了したら、Apply changesを押します。
アラートの作成
Integrated Alertingを有効化するとメニューバーにIntegrated Alertingが追加されます。
Notification Channels
Notification Channelsタブから通知設定を行います。
Alert Rule Templates
続いて、Alert Rule Templatesタブからアラートのテンプレートを確認します。PMMには予めアラート用のテンプレートがいくつか用意されています。今回はこのテンプレートを使用してアラートを設定します。なお、右上のaddボタンから、自分で作成したアラートテンプレートを追加することもできます。
MySQL用には以下のテンプレートが準備されています。
- MySQL down
- MySQL replication running IO
- MySQL replication running SQL
- MySQL restarted
- MySQL connections in use
また、OS用のテンプレートも用意されています。
- Node high CPU load
- Memory available less than a threshold
- Node high swap filling up
Alert Rules
Alert Rulesタブには作成したアラートの一覧が表示されます。右上のaddボタンからアラートの追加ができます。
以下のようなアラートの編集画面が表示されます。
最初の項目のTemplateから使用するテンプレートを選択します。今回はMySQL connections in useを使用します。テンプレートを選択すると一番下のAdvanced detailsにこのテンプレートの詳細が表示されます。
Template Expressionには以下が記載されています。
1 2 3 4 |
max_over_time(mysql_global_status_threads_connected[5m]) / ignoring (job) mysql_global_variables_max_connections * 100 > [[ .threshold ]] |
簡単にこの式について説明すると、
max_over_time(mysql_global_status_threads_connected[5m])
がMySQLステータス変数であるthreads_connectedの5分間の最大値を意味します。
それをMySQLシステム変数であるmax_connectionsで割って100を掛けた値が閾値(threshold)を上回るかを評価しています。
ignoring(job) については、異なるlabelを持つメトリックの計算を行うための記載です。詳しくはOne-to-one vector matchesをご確認ください。
これを念頭に各項目を記載していきます。
- Nameにはこのアラートの任意の名前を設定できます。今回はDB1 Connectionsとします。
- Thresholdには閾値を設定します。今回は80%に達したらアラートを通知するようにします。
- Durationは継続時間を設定します。今回は60秒アラートの状態が継続した場合アラートを通知します。
- Severityは重大度のレベルです。Critical,High,Warning,Noticeが選択可能です。
- Filtersはnode_nameやservice_nameのラベルを使用してアラートの対象を設定できます。ここではservice_name=db1とします。
ADDを押すと設定は完了です。
Alerts
Alertsタブにはアラート状態となっているアラートが一覧表示されます。作成したアラートをアラート状態にしてみます。
本来このアラートは、接続数の上限(max_connections)に現在の接続数(threads_connected)が到達しそうな際に通知するためのアラートです。しかし、今回は検証のため、接続数の上限(max_connections)を10に変更しています。つまり、接続数(threads_connected)が8を超えるとアラートとなります。
1 |
mysql> SET GLOBAL max_connections = 10; |
接続数を9まで増やして、アラート状態とします。アラート状態になると、Alertsタブで表示されます。
まとめ
PMMのIntegrated Alerting機能の紹介をしました。これまでのGrafanaのアラート機能かAlertmanagerとは異なり、全ての設定をGUIから行えるため、設定の難易度が下がっている気がします。
また、今回は触れませんでしたが、アラートのテンプレートは自分で追加することも可能なため、柔軟にアラートを設定することができます。
今後もIntegrated AlertingはGAに向けて機能の追加などが行われると思うので、注目していきたいと思います。