[デモ] ロギング設定

デモの概要

このモジュールでは、インストラクターがROSAクラスターのロギング設定方法をご紹介します。


本演習を自習している時以外、ROSAクラスターのロギング設定を実行しないで下さい。

ROSAのロギングについては、Amazon CloudWatchをベースとするログ転送ソリューションの利用を推奨しています。 転送設定の概要は次のとおりです。STSの利用有無に関わらず、以下の手順を実施することができます。

  1. Amazon CloudWatchのログ参照/書き込み権限を持つAWS IAMユーザーを作成して、 このユーザーのアクセスキーとシークレットアクセスキーを取得します。

  2. ROSAのOpenShiftコンソールから、OpenShift Logging Operatorをインストールして、 ロギングとログ転送用のインスタンスを作成します。 このとき、上記手順で作成したAWS IAMユーザーの認証情報(アクセスキー/シークレットアクセスキー)を利用するように設定します。

これらを順番に見ていきましょう。

CloudWatch用のAWS IAMユーザーの作成

AWSのコンソールまたはAWS CLIで、CloudWatchのログ参照/書き込み権限を持つAWS IAMユーザーを作成します。 IAMユーザー作成手順は、 AWS アカウントでの IAM ユーザーの作成を ご参照ください。

例として、下記画像のような権限を持つユーザーを作成します。この画像の例では、ログ参照/書き込み権限として 「CloudWatchLogsFullAccess」を「rosauser01」ユーザーに付与しています。

iam user create

この時に作成した、AWS IAMユーザーのアクセスキーとシークレットアクセスキーをメモします。

OpenShift Logging Operatorのインストール

OpenShiftには「Red Hat OpenShift Logging Operator」というOperatorがあり、 OpenShiftのロギングスタックを運用するために利用されます。 このOperatorによって、CloudWatchへのログ転送設定が可能になります。

OperatorHubから、「Red Hat OpenShift Logging Operator」をインストールします。 これは cluster-admin ユーザーで実行します。 インストールには、インストールモードで「クラスターの特定のnamespace」を選択すること以外、 全てデフォルトのパラメータを利用します。

logging operator install1
logging operator install2

ロギングの設定

vectorによるクラスターロギングを設定します。 「インストール済みのOperator」の「Red Hat OpenShift Logging」Operatorを選択して、 「Cluster Logging」の下にある「インスタンスの作成」から、次のYAMLを入力して「作成」をクリックします。

apiVersion: logging.openshift.io/v1
kind: ClusterLogging
metadata:
  name: instance
  namespace: openshift-logging
spec:
  collection:
    type: vector
  managementState: Managed
logging instance create1
logging instance create2
logging instance create3

この段階では、logstore or logforward destination(ログ保存先またはログ転送先)の設定が無いために、 ログ収集/転送に利用するvectorを実行するPodが起動されません。

ログ転送の設定

ログ転送設定を行います。 「CloudWatch用のAWS IAMユーザーの作成」で作成したアクセスキーとシークレットアクセスキーを、 AWS認証情報としてOpenShiftのシークレットリソースに保存します。

「OpenShift Logging Operator」をインストールした「openshift-logging」プロジェクトを選択して、 左サイドメニューの「管理者向け表示」→「Workloads」→「シークレット」に移動します。 そして、「作成」から「キーと値のシークレット」をクリックして、次の値を入力して作成します。

  • シークレット名: AWS認証情報として保存するOpenShiftリソースの任意の名前。この例では「cw-secret」を指定。

  • キー/値: 「CloudWatch用のAWS IAMユーザーの作成」で作成した、 AWSアクセスキー(aws_access_key_id)とシークレットアクセスキー(aws_secret_access_key)を入力。

secret create

作成したシークレットリソース「cw-secret」を利用した、ログ転送設定のためのインスタンスを作成します。 「OpenShift Logging Operator」を選択して、「Cluster Log Forwarder」の下にある「インスタンスの作成」から、 次のYAMLを入力して「作成」をクリックします。

ここでは region: ap-northeast-1 で東京リージョンのCloudWatchへのログ転送の指定と、 groupPrefix: hcp-01 でCloudWatchで作成されるロググループの名前の接頭辞を「hcp-01」と指定しています。 また、前述の手順で作成した「cw-secret」シークレットも指定します。

他にもプロジェクトごとのロググループの作成なども設定できます。 具体的な設定方法については、 公式ドキュメントをご参照ください。
apiVersion: "logging.openshift.io/v1"
kind: ClusterLogForwarder
metadata:
  name: instance
  namespace: openshift-logging
spec:
  outputs:
   - name: cw
     type: cloudwatch
     cloudwatch:
       region: ap-northeast-1
       groupPrefix: hcp-01
     secret:
        name: cw-secret
  pipelines:
    - name: all-logs
      inputRefs:
        - application
        - infrastructure
        - audit
      outputRefs:
        - cw
loggingforwarder instance create1
loggingforwarder instance create2

どの種類のログを転送するかについては、前述したYAMLの inputRefs: の項目で指定できます。

  • application : アプリケーションログの収集。利用者が作成したプロジェクトにデプロイされるアプリケーションのログ(stdoutとstderrに出力されるログ)を収集します。後述のインフラストラクチャー関連のログは除きます。

  • infrastructure : インフラストラクチャーログの収集。ROSAクラスター作成時にデフォルトで作成される openshift-* , kube-* などのプロジェクトにある、インフラストラクチャー関連のログを収集します。

  • audit : セキュリティ監査に関連するログの収集。ワーカーノードのノード監査システム(auditd)で 生成される監査ログ(/var/log/audit/audit.log)を収集します。監査ログは、OpenShift Logging Operatorとは別の仕組みで外部転送されており、 Red HatのSREチームによって1年間保存されます。 そのため、ROSAの利用者は監査ログを保存しなくても、Red Hatのサポートケース経由で監査ログを取得することもできます。

これでログ転送の設定が完了したため、先ほど作成したLoggingインスタンスによって、 自動的に collector-* という名前のPod(内部ではvectorが実行)が、「openshift-logging」プロジェクトに作成されます。 この collector-* Podは、全てのワーカーノードで自動的に実行されて、 ワーカーノード上のログをAmazon CloudWatchに転送します。

logging pods
AWSアカウントでのIAMユーザー作成が許可されていない場合、ROSAクラスターインストールの時と同様に、 AWS STSを利用したログ転送の設定が可能です。この場合、AWS IAMの一時的な認証情報として利用される、 専用のAWS IAMロール(CloudWatchへのログ転送に必要)を作成する必要があります。 この設定方法については、 公式ドキュメントをご参照ください。