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 値(例: 30s 、5m )。 |
モニタリング対象
次の表に、Ops エージェントが Tomcat インスタンスから収集する指標の一覧を示します。
指標タイプ | |
---|---|
種類、タイプ モニタリング対象リソース |
ラベル |
workload.googleapis.com/tomcat.errors
|
|
CUMULATIVE 、INT64 gce_instance |
proto_handler
|
workload.googleapis.com/tomcat.max_time
|
|
GAUGE 、INT64 gce_instance |
proto_handler
|
workload.googleapis.com/tomcat.processing_time
|
|
CUMULATIVE 、INT64 gce_instance |
proto_handler
|
workload.googleapis.com/tomcat.request_count
|
|
CUMULATIVE 、INT64 gce_instance |
proto_handler
|
workload.googleapis.com/tomcat.sessions
|
|
GAUGE 、DOUBLE gce_instance |
|
workload.googleapis.com/tomcat.threads
|
|
GAUGE 、INT64 gce_instance |
proto_handler
|
workload.googleapis.com/tomcat.traffic
|
|
CUMULATIVE 、INT64 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