[デモ] ロギング設定
デモの概要
このモジュールでは、インストラクターがROSAクラスターのロギング設定方法をご紹介します。
本演習を自習している時以外、ROSAクラスターのロギング設定を実行しないで下さい。 |
ROSAのロギングについては、Amazon CloudWatchをベースとするログ転送ソリューションの利用を推奨しています。 転送設定の概要は次のとおりです。STSの利用有無に関わらず、以下の手順を実施することができます。
-
Amazon CloudWatchのログ参照/書き込み権限を持つAWS IAMユーザーを作成して、 このユーザーのアクセスキーとシークレットアクセスキーを取得します。
-
ROSAのOpenShiftコンソールから、OpenShift Logging Operatorをインストールして、 ロギングとログ転送用のインスタンスを作成します。 このとき、上記手順で作成したAWS IAMユーザーの認証情報(アクセスキー/シークレットアクセスキー)を利用するように設定します。
これらを順番に見ていきましょう。
CloudWatch用のAWS IAMユーザーの作成
AWSのコンソールまたはAWS CLIで、CloudWatchのログ参照/書き込み権限を持つAWS IAMユーザーを作成します。 IAMユーザー作成手順は、 AWS アカウントでの IAM ユーザーの作成を ご参照ください。
例として、下記画像のような権限を持つユーザーを作成します。この画像の例では、ログ参照/書き込み権限として 「CloudWatchLogsFullAccess」を「rosauser01」ユーザーに付与しています。
この時に作成した、AWS IAMユーザーのアクセスキーとシークレットアクセスキーをメモします。
OpenShift Logging Operatorのインストール
OpenShiftには「Red Hat OpenShift Logging Operator」というOperatorがあり、 OpenShiftのロギングスタックを運用するために利用されます。 このOperatorによって、CloudWatchへのログ転送設定が可能になります。
OperatorHubから、「Red Hat OpenShift Logging Operator」をインストールします。
これは cluster-admin
ユーザーで実行します。
インストールには、インストールモードで「クラスターの特定のnamespace」を選択すること以外、
全てデフォルトのパラメータを利用します。
ロギングの設定
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
この段階では、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)を入力。
作成したシークレットリソース「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
どの種類のログを転送するかについては、前述した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に転送します。
AWSアカウントでのIAMユーザー作成が許可されていない場合、ROSAクラスターインストールの時と同様に、 AWS STSを利用したログ転送の設定が可能です。この場合、AWS IAMの一時的な認証情報として利用される、 専用のAWS IAMロール(CloudWatchへのログ転送に必要)を作成する必要があります。 この設定方法については、 公式ドキュメントをご参照ください。 |