Anthos Service Mesh のアクセスログはデフォルトでは Service への Inbound しか出力されません。 エラーが発生した場合は Outbound のログも出力されます。 出力先は Cloud Logging で HTTP の情報は Load Balancer などと同様に httpRequest という Object にセットされています。
Outbound のアクセスログを常に出力する方法
asmcli の --custom_overlay
で指定する YAML で次の様に outboundAccessLogging
を FULL
にすることで Outbound のログも出力されるようになります。
spec:
values:
telemetry:
v2:
stackdriver:
outboundAccessLogging: FULL
Inbound と Outbound でログの resource.type が異なる
Inbound は k8s_container
(コンテナログ) だが、Outbound は k8s_pod
(Pod のログ) となっているので注意。
STDOUT 経由で出力する方法
GKE 以外の環境で実行する時のように次のようにして標準出力に JSON で書き出すことも可能だが、Cloud Logging に送る場合は上記の方法の方が他のログとの統一感があって便利。
spec:
meshConfig:
accessLogEncoding: JSON
accessLogFile: /dev/stdout