LoginSignup
2
1

More than 1 year has passed since last update.

オンプレのOpenShiftでもログはCloudWatch Logsに転送しよう

Last updated at Posted at 2021-10-13

OpenShift LoggingのElasticSearchは、正直ちょっと安定的に運用するのが普通は無理だと思うので、それでもログ集約してGUIでログ参照したい場合はAmazon CloudWatch Logsに転送するのが現状はベストじゃないかと思う。オンプレ環境だったとしても。
ClusterLogForwarderでのCloudWatchへのログ転送が、たぶんROSAのGAに関連してだと思うが、OpenShift 4.8から出来るようになっている。

以下はそのやり方。簡単。

1.AWSでIAMユーザーとアクセスキーを作成する

AWSのIAMで、認証タイプがアクセスキーのユーザーを作る。

image.png

アクセス許可にCloudWatchFullAccessを付ける。

image.png

タグは任意で。ユーザーを作成したらアクセスキーIDとシークレットアクセスキーを手に入れる。

image.png

例えば
アクセスキーID: AKIASBHLFJQFVNNFOGOT
シークレットアクセスキー: 4rGScURvVfAgdZppB9+KNzB+y0ZdqMuOJD5U2FxL

OpenShiftでBase64にした文字列が必要なので、base64コマンドか適当なWebのアプリでbase64変換しておく。

アクセスキーID(base64): QUtJQVNCSExGSlFGVk5ORk9HT1QK
シークレットアクセスキー(base64): NHJHU2NVUnZWZkFnZFpwcEI5K0tOekIreTBaZHFNdU9KRDVVMkZ4TAo=

2.OpenShiftでLoggingオペレーターを導入する

OperatorHubからLoggingオペレーターを導入する。
なおClusterLogForwarderを使いたいだけだったら、ElasticSearchを前提オペレーターとして導入する必要はない。

image.png
image.png

オペレーターがインストールされたら、ClusterLoggingのインスタンスを下記のyamlで作成する。
ElasticSearch、kibanaを導入しないので、logStore、visualizationのスタンザが不要。

image.png

apiVersion: "logging.openshift.io/v1"
kind: "ClusterLogging"
metadata:
  name: "instance" 
  namespace: "openshift-logging"
spec:
  managementState: "Managed"  
  collection:
    logs:
      type: "fluentd"  
      fluentd: {}

3.ClusterLogForwarderを設定する

まずは、AWSにアクセスするためのsecretを作る。
画面右上の「+」をクリックして以下を入力、アクセスキーIDとシークレットアクセスキーを先ほど入手したbase64エンコード済みのものに置き換え、作成。

apiVersion: v1
kind: Secret
metadata:
  name: cw-secret
  namespace: openshift-logging
data:
  aws_access_key_id: QUtJQVNCSExGSlFGVk5ORk9HT1QK
  aws_secret_access_key: NHJHU2NVUnZWZkFnZFpwcEI5K0tOekIreTBaZHFNdU9KRDVVMkZ4TAo=

同じく「+」ボタンから作ってもいいのだが、一応OperatorのClusterLogForwardersからClusterLogForwarderの作成から、下記のyamlで作成する。
image.png

groupPrefixはオプションだが、指定すればCloudWatch Logsに「my-cluster.audit」みたいな形でロググループが作成される。
region: ap-northeast-1 は、東京に作るの意。

apiVersion: "logging.openshift.io/v1"
kind: ClusterLogForwarder
metadata:
  name: instance 
  namespace: openshift-logging 
spec:
  outputs:
   - name: cw 
     type: cloudwatch 
     cloudwatch:
       groupBy: logType 
       groupPrefix: my-cluster 
       region: ap-northeast-1 
     secret:
        name: cw-secret 
  pipelines:
    - name: infra-logs 
      inputRefs: 
        - infrastructure
        - audit
        - application
      outputRefs:
        - cw 

4.ログが転送されていることを確認する

設定後、割とすぐにCloudWatch Logsに以下の画面のようなロググループが作成される。

image.png

作成されない場合は、IAMユーザーのアクセス権が違うか、Secretが間違っているか。
openshift-logging/fluentd-*のログを参照すると原因がわかる事があるかも。

image.png

AWS側、Log Insightsを使って転送されたログを解析することができる。
指定するクエリは、infrastructureの場合はfieldsの「@message」から@を外して「message」としたほうが見やすい。

image.png

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1