2022.10.16  

【ECS】fluent bitでAPPのログをNewRelic,CloudWatch,S3へ同時に流す

NewRelic,  AWS    

AWS ECS(Fargate)で動作しているAPPのログをNewRelic、CloudWatchLogs、S3の3箇所に流す方法についてのメモ書きです。

NewRelicだけにログを流すのであればNewRelic専用のfluentbitイメージを利用すれば良いのですが、複数箇所にログを流すとなると、fluentbitをAWSサービスに対応したイメージに変更し、fluent-bit.confにログを流したいサービスを記述する必要があります。(他に上手い方法があるかもしれませんが)

構成としては次のようなイメージです。

ECS ─> awsfirelens ─> fluentbit  ─> CloudWatchLogs
                                                  └───>  Kinesis Data Firehose  ─> S3
                                                  └───>  Kinesis Data Firehose  ─> NewRelic

※ できればKinesis Data Firehoseを経由せずfluentbit─> NewRelicとしたかったが、NewRelic専用のfluentbitイメージのソースのfluent-bit.confをいじってみても、AWSに接続するためのモジュールがないせいか上手くいかなかった。

手順

NewRelic以外へのサービスにログを流す方法はこちらの記事にまとめています。
【ECS】fluent bitでAPPのログをCloudWatchとS3へ同時に流す

NewRelicにログを流すには、上記記事の中で用意しているfluentbitの設定ファイルextra.conf(fluent-bit.confに設定を追記するファイル)に次のような設定を加えます。

# extra.conf
[OUTPUT]
    Name cloudwatch
    Match   **
    region ap-northeast-1
    log_group_name app-logs
    log_stream_prefix app-log-
    auto_create_group true

[OUTPUT]
    Name   firehose
    Match  **
    region ap-northeast-1
    delivery_stream S3-Delivery-Stream-app-logs

# 下記を追加
[OUTPUT]
    Name   firehose
    Match  **
    region ap-northeast-1
    delivery_stream NewRelic-Delivery-Stream

次にNewRelic用のKinesis Data Firehoseを用意します。
こちらは下記公式手順を参考に設定します。

Amazon Kinesis Data Firehoseから直接New Relicにデータを取り込む

配信ストリームの名前はNewRelic-Delivery-Stream (extra.confで設定した名前)を設定します。

これで、APPを動作させればログが取得できているはずです。

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信