Posted at

EKS上でfluentd-cloudwatchをhelmでinstallする

charts/incubator/fluentd-cloudwatch at master · helm/chartsをEKS上にinstallして使った話。最後にログインサイト使ってみたけど、AWS便利すぎかよ、、、


IAMの設定


  • WorkerNodeのIAMロールにCloudWatchFullAccessポリシーをアタッチ


values.yaml


  • awsRegion: ログを送るcloudwatchのリージョン

  • rbac.create: trueにするとKubernetes APIを利用するためのRBACを自動生成する

  • extraVars: Fluentdコンテナのenvを設定する


    • 以下のようにroot権限を持つように実行しないとうまく動作しなかった




values.yaml

awsRegion: us-west-2

rbac:
create: true
extraVars:
- "{ name: FLUENT_UID, value: '0' }"


install

⇒ helm install --name fluentd --namespace fluentd --values ./values.yaml --debug incubator/fluentd-cloudwatch

[debug] Created tunnel using local port: '55876'

[debug] SERVER: "127.0.0.1:55876"

[debug] Original chart version: ""
[debug] Fetched incubator/fluentd-cloudwatch to /Users/paper2/.helm/cache/archive/fluentd-cloudwatch-0.6.3.tgz

[debug] CHART PATH: /Users/paper2/.helm/cache/archive/fluentd-cloudwatch-0.6.3.tgz

NAME: fluentd
REVISION: 1
RELEASED: Fri Dec 21 21:27:28 2018
CHART: fluentd-cloudwatch-0.6.3
USER-SUPPLIED VALUES:
awsRegion: us-west-2
extraVars:
- '{ name: FLUENT_UID, value: ''0'' }'
rbac:
create: true
...


確認


  • kubernetesロググループに以下のようにコンテナのログが出力されていれば成功です
    スクリーンショット 2018-12-21 21.41.52.png


CWのインサイト機能を使ってセベリティ検索してみる

ESじゃないと検索面倒だなあと思ったらこんな機能が、、、。

便利すぎる、、、、。これで複雑なクエリも投げれるし、ESつくるよりログ保存ならCWの方が楽そう。

以下の例ではログのinfoだけ抽出している。クエリをERRORとかにすればエラーも探せる。

スクリーンショット 2018-12-21 22.04.33.png