Payara の Notification Service (2017 年版) (ja)

この記事は、Java EE Advent Calendar 2017 の 5 日目です。昨日分は「Payara のセキュア管理における JMX 監視」です。

前回に引き続き昨年の Payara Advent Calendar 2016 で取り上げた内容をアップデートします。今回は Payara には現在、以下の 3 種類の監視機能が備わっています。これらは GlassFish には存在しない商用向けともいえる機能ですが、OSS 版でも全機能をお試しいただけます。

  • Health Check Service
  • Nortification Service
  • Request Tracing Service

今回は Nortification Service について取り上げます。

1. Nortification Service とは

Notification Service は、汎用目的の通知サービスです。Payara 4.1.1.163 から導入されています。何からの通知すべきイベントが発生したときに、その内容を設定した通知先へ送信します。2017 年に入って通知先が大幅に追加され、Payara 4.1.2.174 (本稿執筆時点での最新版) では下表のようになっています。

Notifier 一覧 (4.1.2.174)
通知先補足説明
HipChat Atrassian 製のチャットシステム HipChat へ通知
Slack 最近シェアを伸ばしている多機能チャット Slack へ通知
NewRelic アプリケーションのリアルタイム監視サービス NewRelic へ通知
SNMP SNMP へ通知
XMPP オープンソースのメッセージングである XMPP へ通知
Datadog アプリケーションのリアルタイム監視サービス Datadog へ通知
JMS JMS 経由で通知 (要 JMS 設定)
Email Email で通知 (要メール設定)
Log server.log へ出力、通知だけ別ファイル (notification.log) に分離可能
Event Bus CDI Event Bus を用いた通知

2. Notification Service の有効化/無効化

Notification Service は既定で有効となっています。明示的に有効化するには管理コンソールまたは asadmin コマンドを使用します。

管理コンソールによる有効化は、左ペインから、構成 > 構成名 (server-config 等) > Notification を選択し、Notification Service Enabled にチェックを入れます。同時に Dynamic にもチェックを入れておくと、再起動することなく機能を有効化できます。既定では Log Notifier Enabled にもチェックが入っており、server.log への通知があらかじめ有効化されています。

notification-service-enabled.png

asadmin コマンドでも有効化できます。

$ asadmin notification-configure --enable=true --dynamic=true

3. Notification Service の用途

Notification Service は、主に HealthCheck Service や Request Tracing Service 等でメトリクスが閾値を超えた時、それをサーバー管理者に通知するために利用します。Notification Service がない場合は、server.log や JMX 監視を頼りにアラートを発する仕組みを別途用意しなければなりませんでしたが、Notification Service を利用することで Payara の標準機能だけでそうした通知を行えるようになります。

HelthCheck Service 等は既定で無効となっています。これらを有効にして閾値を設定することで、Notification Service による通知が実際に使えるようになります。

4. Notifier の設定例

4.1. Log Notifier

Notification Service の既定の通知先で、server.log へ通知を出力します。server.log には様々な情報が出力されるため、Notification Service の通知だけを別ファイルに出力するオプションが用意されています。Notification Service 全般の設定で Use Separate Log File にチェックを入れると、server.log と同じディレクトリの notification.log というファイルに通知が書き込まれます。現時点では server.log と異なり、notification.log の出力にはローテーション等の機能は備わっておらず、あくまで簡易的なファイル出力にとどまっています。

4.2. Email Notifier

メールによる通知を行います。既定では無効です。通知が発生するたびに設定したメールアドレスに通知内容が送信されます。通知が多発するとかなりのメール受信量になりますが、仕組みがチャット等への出力と共通しているための制約です。

以下は Email Notifier の設定例 (管理コンソール) です。

email-notifier.png

Email Notifier を使用するには、事前に Payara の JavaMail セッションを作成しておく必要があります。

4.3. その他の Notifier

Log Notifier 以外は既定で無効となっています。また、一部の Notifier が利用するサービスは有償であるため (例: HipChat)、その点に注意してください。

5. まとめ

Payara の Notification Service は、登場から 1 年で十分な機能を持つまでに進化しました。特に最近ではデータベース・アクセスに関連する監視機能が追加されており、その結果も通知可能になっています (確かそのはず)。運用向けの機能ではありますが、性能要件の厳しいシステムの構築においては、システムテストの段階から積極的に利用することで問題発見の早期化につながると考えられます。ぜひご活用ください。