概要
このドキュメントは、Apache Tomcatをプロダクションで安定稼働させるための監視と管理の基本フローを解説します。対象はTomcatを稼働させるサーバ上にVerax NMSなどの監視システムを導入している運用担当者です。
用語(1行定義):
- JMX: Java Management Extensions。Tomcatの内部情報を外部から取得する標準的な仕組み。
- センサー: 監視システムが定期的に問い合わせる監視ポイント。
重要: 本稿ではVerax NMSの画面例を用いて解説しますが、概念は他の監視ツール(Prometheus + JMX Exporter、Datadog、New Relicなど)にも応用できます。
目的と関連キーワード
主目的: Apache Tomcatの可用性・性能を継続監視すること。関連の検索語句例: Tomcat 監視、Tomcat JMX、Tomcat センサー、Tomcat アラート設定。
事前準備
- Tomcatサーバーの管理権限を持つこと。JMX接続に必要なポートを開放できること。
- Verax NMSなどの監視サーバが対象ホストに接続できるネットワーク経路を確認すること。
- TomcatのJMXが有効であること。JMX未設定の場合は後述の起動オプションを参考に設定してください。
注意: 複数インスタンスが同一ホストで稼働する場合、各インスタンスごとに別のJMXポートを割り当てることを推奨します。
インベントリにApache Tomcatを追加する(手順)
この章は、Tomcatインスタンスを監視対象としてVerax NMSに登録する実務手順です。
- Verax NMSにログインし、メインメニューから「Home」を選択します。
- 左側のアスペクトツリーで、Tomcatを稼働させているデバイス(ホスト)を選びます。
- Summaryタブで、Actionsセクションから「Manage applications」を選択します。
- ポップアップダイアログが表示されます。
- コンテキストメニューから「Add application」を選び、Goをクリックします。ダイアログが表示されます。
Application typesから「Apache Tomcat」を選択します。
以下のアプリケーション固有パラメータを入力します(ツールによって若干のフィールド名差異あり)。
- Instance name: インスタンスを識別する任意名。
- Host: 多くの場合、インスタンスが稼働するデバイスのIPアドレス。
- Port: Tomcatの接続ポート(例:HTTPポート、JMXポートなど)。
- User / Password: Tomcat管理用の認証情報(必要な場合)。
- JMX Connection: JMX接続URL(例:service:jmx:rmi:///jndi/rmi://
: /jmxrmi)。 - JMX User / JMX Password: JMX接続に認証が必要な場合の資格情報。
注意: 選択したアプリケーションタイプにより入力フィールドが異なります。不要なフィールドは空欄にしてください。
- 情報を入力して「Save changes」をクリックします。
- デフォルトセンサーとカウンタを追加するか確認されます。手動で設定する場合は「No」を選択します(このガイドでは手動追加を前提とします)。
- 正常に追加されると、Managed Applicationsカテゴリのホストノード配下に新しいApache Tomcatエントリが表示されます。
Tomcatインスタンスの監視方法(概要)
Tomcatは以下の方法で監視できます。
- Show advanced view(概要・詳細ビュー)でオンデマンドの情報確認。
- JMXベースのパフォーマンスカウンタを使った時系列データ収集。
- JMXベースの可用性チェック(特定のMBean/属性が応答するか)。
- HTTPセンサーでWebアプリケーションの可用性やユーザー体験を検証。
JMXによるセンサー追加(手順と例)
Tomcat監視ではJMXが中心です。Tomcat起動オプションでJMXを有効化してください。起動スクリプトに次のようなパラメータを追加します。
set CATALINA_OPTS=-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=%my.jmx.port% \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false
上記は最小限の例です。プロダクションではSSLや認証を有効化し、アクセス制御(ファイアウォール、ネットワークACL)を必ず行ってください。詳しくはTomcatドキュメントを参照してください: http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html
センサーの基本動作:
- センサーは監視対象サービスに定期的にクエリを投げ、期待する応答があれば「利用可能」と判断します。タイムアウトや期待外の応答は「利用不可」と見なします。
デフォルトで用意されているTomcat用センサータイプ:
- JMX Operation: 指定したMBeanの操作呼び出しが結果を返すかをチェックします。
- JMX Attribute: 指定したMBeanの属性から値を取得できるかをチェックします。
- HTTP: 指定URLに対して期待するHTTPレスポンスコードや、レスポンスボディの正規表現マッチを確認します。
センサー追加の手順(Verax NMS例)
- Homeビューのアスペクトツリーで対象デバイスを選択します。
- Monitorsタブを選び、右上の「Sensor list」リンクをクリックしてセンサー一覧に切り替えます。
- グローバルアクションメニューから「Add」を選び、Goを押してウィザードを起動します。
- 追加したいセンサーを選択して「Next」をクリックします。
- 各センサーのパラメータ画面で詳細を入力し、「Finish」を押します。
- 追加が完了すると、Monitorsタブのセンサー一覧に表示されます。
センサー設計のヒント(実務上の判断基準)
- 監視頻度: 可用性チェックは30〜60秒、パフォーマンスカウンタは1〜5分程度が一般的。過度な頻度は監視対象と監視ネットワークに負荷を与えます。
- 重要度で分離: ビジネスクリティカルなアプリはより細かく、非重要なアプリは軽めに。
- ベースライン: 初期段階では閾値を広めに設定し、運用データを収集してから閾値を調整してください。
アラームと通知ポリシー設定(要点)
- クリティカル、警告、情報のレベルを定義する。
- 再通知(repeat)とエスカレーションポリシーを決める。
- メンテナンス時間帯を設定し、意図しない通知を抑止する。
- 通知先は役割ベース(オンコール、DB管理者、アプリ担当)に分ける。
重要: ノイズが多いと重要なアラートを見落とします。最初の閾値調整は保守的に行い、運用で改善してください。
トラブルシューティングと運用ケース
よくある障害パターンと対応例:
- JMX接続エラー: ファイアウォール設定、JMXポート、JMX認証情報を確認する。
- 応答遅延(HTTPタイムアウト): コネクションプール、GC、スレッドプールの状態を確認する。
- メモリ増大: ヒープ使用率を監視し、必要ならヒープダンプを取得して解析する。
受け入れ基準(簡潔):
- 監視エージェントがTomcat JMXに対して正常に接続できること。
- 主要なMBean(コネクション数、スレッド数、ヒープ使用率など)が30日分保存されること。
- 重要な障害でオンコールに通知が行くこと。
代替アプローチと比較
- Prometheus + JMX Exporter: 時系列データに強く、Grafanaで可視化する場合に有効。セルフホスティング時に柔軟。
- APM(Datadog/New Relic): アプリのトレースや分散トレーシングが必要な場合に適する。
- SNMPベースの監視: システムレベルのメトリクス中心なら検討可。ただしTomcat固有の詳細情報取得は難しい。
短所の例(いつ使わないか):
- JMXが無効で、かつ変更を加えられない管理対象の場合はJMX監視は使えません。
- 監視対象が短命(短時間で再作成されるコンテナ)であれば、軽量なHTTPヘルスチェックを優先してください。
役割別チェックリスト
運用(NOC):
- 主要な可用性センサーが正常に稼働していることを確認。
- アラートの閾値とエスカレーションルールを監視。
SRE / プラットフォームエンジニア:
- JMXポートとアクセス制御を設定。
- メトリクスの保存期間と集計ルールを管理。
アプリケーションオーナー:
- ビジネスKPIに基づいたSLA/SLOを定義。
- 重要なエンドポイントに対するHTTPセンサーの要件を提示。
ミニ手順(セットアップのSOP)
- TomcatでJMXを有効化し、ポートと認証を設定する。
- 監視サーバからJMX接続を試行し、ネットワーク疎通を確認する。
- Verax NMSでアプリケーションインスタンスを追加する。
- 重要なJMX属性・操作を選定し、センサーを追加する。
- パフォーマンスカウンタを収集してダッシュボードを作成する。
- 閾値を設定し、通知ポリシーを構成する。
- 運用テスト(フェイルオーバー、再起動)を実施し、アラート動作を検証する。
テストケースと受け入れ基準
- 正常系: JMXでHeapMemoryUsageが取得できる(Expected: 値が返る)。
- 障害系: Tomcat停止時にHTTPセンサーがタイムアウトし、アラートが発生する。
- 回復系: Tomcat起動後、30秒以内にセンサーが復旧すること。
セキュリティと運用上の注意点
- JMXを公開する際は必ず認証と通信暗号化(SSL/TLS)を設定してください。
- JMXポートはインターネットに直接公開しないこと。監視サーバからの到達のみ許可するファイアウォールルールを適用します。
- ログとメトリクスの保持には個人データが含まれていないか確認し、必要なら匿名化や保持期間を短くしてください(GDPR等の規制への配慮)。
トラブル対応のフローチャート
以下は、センサーがDOWNになった場合の簡易決定木です。
flowchart TD
A[センサーDOWN検知] --> B{センサー種別}
B -->|HTTP| C[HTTPレスポンス確認]
B -->|JMX| D[JMX接続確認]
C --> E{タイムアウトか応答コードか}
E -->|タイムアウト| F[ネットワーク/プロセス確認]
E -->|異常コード| G[アプリログ確認]
D --> H{接続成立?}
H -->|Yes| I[MBean属性の値確認]
H -->|No| J[ポート・認証・ファイアウォール確認]
まとめ
- Tomcatの監視はJMXが中心です。JMXを安全に有効化し、必要なMBean・属性を把握してからセンサーを設定してください。
- 監視頻度、閾値、通知ポリシーは運用を始めてから最適化します。最初は保守的な設定を推奨します。
- 代替手段としてPrometheusやAPMの採用も検討できます。運用体制と求める可視化機能に応じて選んでください。
重要: 本ガイドは一般的な手順を示したものです。実環境では組織のセキュリティポリシーと運用ルールに従って調整してください。