Oracle Cloud Infrastructureロギング・サービス

VerrazzanoログをOracle Cloud Infrastructureロギング・サービスに送信する方法

Oracle Cloud Infrastructureロギング・サービスは、テナンシ内のすべてのログに対応した、スケーラブルでフルマネージド型の一元管理ペインです。OpenSearchではなくOracle Cloud Infrastructureロギングにログを送信するようにVerrazzanoを構成できます。一般的な情報は、Oracle Cloud Infrastructureのロギングの概要に関する項を参照してください。

カスタム・ログの設定

Verrazzanoのログは、Oracle Cloud Infrastructureのカスタム・ログに送信できます。Verrazzanoインストール・リソースには2つのOracle Cloud Infrastructureログ識別子(1つはVerrazzanoシステム・ログ用で、もう1つはアプリケーション・ログ用)を指定する必要があります。「カスタム・ログの作成」のステップに従って、2つのカスタム・ログを作成します。カスタム・ログの作成時にエージェント構成を作成しないでください。ログ・レコードが複製されてしまいます。

資格証明の構成

Verrazzanoに付属のFluentdプラグインでは、デフォルトでOracle Cloud Infrastructureのインスタンス・プリンシパル認証が使用されます。オプションで、ユーザーAPI署名キーを使用してVerrazzanoを構成できます。クラスタがOracle Cloud Infrastructureの外部で実行されている場合、Oracle Cloud Infrastructureロギングにログを送信するにはAPI署名キー認証が必要です。

Verrazzanoのインストール

Verrazzanoのインストール中に、クラスタでOracle Cloud Infrastructureロギングが有効になります。Verrazzanoインストール・カスタム・リソースには、2つのカスタム・ログを指定するためのフィールドがあります。1つはシステム・ログ用で、もう1つはアプリケーション・ログ用です。次に、資格証明のタイプごとのVerrazzanoインストールYAMLファイルの例を示します。APIはKibanaを参照しますが、今後のリリースではパブリックAPIでOpenSearchダッシュボードが使用されます。

デフォルトのログ・オブジェクトのオーバーライド

個々のネームスペースでOracle Cloud Infrastructureログ・オブジェクトをオーバーライドできます。ネームスペースにログ識別子を指定するには、verrazzano.io/oci-log-idという名前の注釈をネームスペースに追加します。注釈の値は、Oracle Cloud Infrastructureログ・オブジェクト識別子です。

次に、ネームスペースの例を示します。

apiVersion: v1
kind: Namespace
metadata:
  annotations:
    verrazzano.io/oci-log-id: ocid1.log.oc1.iad.ns.app.example
  creationTimestamp: "2022-01-14T15:09:19Z"
  labels:
    istio-injection: enabled
    verrazzano-managed: "true"
  name: example
spec:
  finalizers:
  - kubernetes
status:
  phase: Active

注釈を追加してから削除すると、ログはVerrazzanoカスタム・リソースで指定されているデフォルトのOracle Cloud Infrastructureログ・オブジェクトに戻ります。

ログの検索

Verrazzanoログの検索には、Oracle Cloud Infrastructureコンソール、Oracle Cloud Infrastructure CLIまたはOracle Cloud Infrastructure SDKを使用できます。

たとえば、Oracle Cloud Infrastructure CLIを使用して、システム・ログ内のverrazzano-application-operatorコンテナによって生成されたレコードを検索します。

$ oci logging-search search-logs --search-query=\
     "search \"ocid1.compartment.oc1..example/ocid1.loggroup.oc1.iad.example/ocid1.log.oc1.iad.example\" | \
     where \"data\".\"kubernetes.container_name\" = 'verrazzano-application-operator' | sort by datetime desc" \
     --time-start 2021-12-07 --time-end 2021-12-17

springbootネームスペース内のすべてのアプリケーション・ログ・レコードを検索します。

$ oci logging-search search-logs --search-query=\
     "search \"ocid1.compartment.oc1..example/ocid1.loggroup.oc1.iad.example/ocid1.log.oc1.iad.example\" | \
     where \"data\".\"kubernetes.namespace_name\" = 'springboot' | sort by datetime desc" \
     --time-start 2021-12-07 --time-end 2021-12-17

ログの検索の詳細は、「ロギング問合せ言語仕様」を参照してください。

トラブルシューティング

Oracle Cloud InfrastructureロギングでVerrazzanoログを確認できない場合は、クラスタ内のFluentdコンテナ・ログを確認して、エラーがあるかどうか調べます。

$ kubectl logs -n verrazzano-system -l app=fluentd --tail=-1

not authorizedエラー・メッセージが表示された場合は、Oracle Cloud Infrastructure動的グループまたはIAMポリシーに問題があり、FluentdプラグインとOracle Cloud Infrastructure APIとの通信が阻害されている可能性があります。

適切な権限が設定されていることを確認するには、Oracle Cloud Infrastructureロギングの必要な権限に関するドキュメントを確認してください。