Apache Tomcat

Apache Tomcat の統合により、アクティブなセッション数やネットワーク スループットなど、トラフィック関連の指標が収集されます。この統合により、アクセスログと Catalina ログも収集されます。アクセスログは、リクエストの詳細に重点を置いた JSON ペイロードに解析されます。Catalina ログは、一般的な詳細の解析に使用されます。tomcat レシーバは、JMX を介して Tomcat サーバーの Java 仮想マシン(JVM)からテレメトリーを収集します。

Apache Tomcat の詳細については、tomcat.apache.org をご覧ください。

前提条件

Tomcat のログと指標を収集して取り込むには、バージョン 2.9.0 以降の Ops エージェントをインストールする必要があります。

このレシーバは、Apache Tomcat バージョン 9.0.x および 10.x をサポートしています。

Tomcat インスタンスを構成する

JMX エンドポイントを公開するには、JVM の起動時に com.sun.management.jmxremote.port システム プロパティを設定する必要があります。また、com.sun.management.jmxremote.rmi.port システム プロパティも同じポートに設定することをおすすめします。JMX エンドポイントをリモートで公開するには、java.rmi.server.hostname システム プロパティも設定する必要があります。

デフォルトでは、これらのプロパティは Tomcat デプロイの tomcat-env.sh ファイルで設定されています。

コマンドライン引数を使用してシステム プロパティを設定するには、JVM の起動時にプロパティ名の前に -D を付けます。たとえば、com.sun.management.jmxremote.port をポート 8050 に設定するには、JVM の起動時に次のように指定します。

-Dcom.sun.management.jmxremote.port=8050

Tomcat 用に Ops エージェントを構成する

Ops エージェントの構成のガイドに従って、Tomcat インスタンスからログと指標を収集するために必要な要素を追加して、エージェントを再起動します。

構成の例

次のコマンドは、Apache Tomcat のログと指標を収集して取り込み、Linux で Ops エージェントを再起動するための構成ファイルを作成します。

sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
logging:
  receivers:
    tomcat_system:
      type: tomcat_system
    tomcat_access:
      type: tomcat_access
  service:
    pipelines:
      tomcat:
        receivers:
          - tomcat_system
          - tomcat_access
metrics:
  receivers:
    tomcat:
      type: tomcat
  service:
    pipelines:
      tomcat_pipeline:
        receivers:
          - tomcat
EOF
sudo service google-cloud-ops-agent restart

ログの収集を構成する

Tomcat からログを取り込むには、Tomcat が生成するログのレシーバを作成してから、新しいレシーバ用のパイプラインを作成する必要があります。

tomcat_system ログのレシーバを構成するには、次のフィールドを指定します。

フィールド デフォルト 説明
type 値は tomcat_system を指定してください。
include_paths [/opt/tomcat/logs/catalina.out] 読み込むログファイル。パスにはワイルドカードを使用できます(例: /var/log/apache*/*.log)。
exclude_paths 除外するログファイル(include_paths に glob またはディレクトリが含まれている場合)。


tomcat_access ログのレシーバを構成するには、次のフィールドを指定します。

フィールド デフォルト 説明
type 値は tomcat_access を指定してください。
include_paths [/opt/tomcat/logs/localhost_access_log.*.txt] 読み込むログファイル。
exclude_paths [] 除外するログファイル(include_paths に glob またはディレクトリが含まれている場合)。

ログの内容

tomcat_system ログと tomcat_access ログの logName は、構成で指定されたレシーバ ID から取得されます。LogEntry 内の詳細なフィールドは、次のとおりです。

tomcat_system
ログでは、LogEntry に次のフィールドが含まれます。

フィールド タイプ 説明
timestamp 文字列(Timestamp リクエストを受信した時刻
jsonPayload.module 文字列 ログが発生した Tomcat のモジュール
jsonPayload.source 文字列 ログの取得元
jsonPayload.message 文字列 詳細なスタック トレースを含むログ メッセージ(提供した場合)
severity 文字列(LogSeverity ログエントリ レベル(翻訳済み)

tomcat_access
ログでは、LogEntry に次のフィールドが含まれます。

フィールド タイプ 説明
httpRequest.protocol 文字列 リクエストに使用されるプロトコル
httpRequest.referer 文字列 Referer ヘッダーの内容
httpRequest.requestMethod 文字列 HTTP メソッド
httpRequest.requestUrl 文字列 リクエスト URL(通常は URL のパス部分のみ)
httpRequest.responseSize 文字列(int64 レスポンス サイズ
httpRequest.status 数値 HTTP ステータス コード
httpRequest.userAgent 文字列 User-Agent ヘッダーの内容
jsonPayload.host 文字列 Host ヘッダーの内容
jsonPayload.user 文字列 リクエストの認証済みユーザー名
timestamp 文字列(Timestamp リクエストを受信した時刻

指標の収集を構成する

Tomcat から指標を収集するには、Tomcat 指標を表示するレシーバを作成し、新しいレシーバ用のパイプラインを作成する必要があります。Tomcat 指標のレシーバを構成するには、次のフィールドを指定します。

フィールド デフォルト 説明
type 値は tomcat を指定してください。
endpoint localhost:8050 サービス URL の作成に使用される JMX サービス URL またはホストとポート。この値は、service:jmx:<protocol>:<sap> または host:port の形式にする必要があります。host:port フォームの値は、service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi というサービス URL を作成するために使用されます。
collect_jvm_metrics true サポートされている JVM 指標も収集するようにレシーバーを構成します。
username JMX が認証を要求するように構成されている場合、構成されたユーザー名。
password JMX が認証を要求するように構成されている場合、構成されたパスワード。
collection_interval 60s time.Duration 値(例: 30s5m)。

モニタリング対象

次の表に、Ops エージェントが Tomcat インスタンスから収集する指標の一覧を示します。

指標タイプ
種類、タイプ
モニタリング対象リソース
ラベル
workload.googleapis.com/tomcat.errors
CUMULATIVEINT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.max_time
GAUGEINT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.processing_time
CUMULATIVEINT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.request_count
CUMULATIVEINT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.sessions
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/tomcat.threads
GAUGEINT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.traffic
CUMULATIVEINT64
gce_instance
proto_handler
direction

ダッシュボードの例

サンプルの Cloud Monitoring ダッシュボードを使用して、この統合からの指標を表示できます。サンプル ダッシュボードのインストールの手順を行い、サンプル ライブラリから Tomcat GCE の概要ダッシュボードをインポートして、Apache Tomcat の指標を表示するチャートを表示します。

構成を確認する

ログ エクスプローラと Metrics Explorer を使用して、Tomcat レシーバが正しく構成されていることを確認できます。Ops エージェントがログと指標の収集を開始するまでに 1~2 分かかる場合があります。

ログが取り込まれていることを確認するには、ログ エクスプローラに移動し、次のクエリを実行して Tomcat のログを表示します。

resource.type="gce_instance"
logName=("projects/PROJECT_ID/logs/tomcast_system" OR "projects/PROJECT_ID/logs/tomcat_access")


指標が取り込まれていることを確認するには、Metrics Explorer に移動し、[MQL] タブで次のクエリを実行します。

fetch gce_instance
| metric 'workload.googleapis.com/tomcat.sessions'
| align rate(1m)
| every 1m

次のステップ

Ansible を使用して Ops エージェントをインストールし、サードパーティ アプリケーションを構成してサンプル ダッシュボードをインストールする方法については、Ops エージェントをインストールして、サードパーティ アプリケーションのトラブルシューティングを行うの動画をご覧ください。