LoginSignup
8
7

More than 5 years have passed since last update.

CloudWatch Logs からElasticsearch Serviceに送るログのインデックス名を変える

Posted at

AWSではCloudWatch LogsからElasticsearch Serviceにログを送ってKibanaで見るという運用ができるが、デフォルトだとインデックス名が「cwl-YYYY.MM.DD」固定になる。

複数のログを送る時など、インデックス名を変えたいこともあると思うのでその時のための覚書。

インデックス名はLambdaで定義

CloudWatch Logs -> Elasticsearch Serviceのログ送信は裏側でLambdaを走らせている。

セットアップをした時に勝手にLambdaファンクションが作られているので、それのコードを書き換えればOK

設定箇所

60〜70行目あたりに該当コードがあります。

    payload.logEvents.forEach(function(logEvent) {
        var timestamp = new Date(1 * logEvent.timestamp);

        // index name format: cwl-YYYY.MM.DD
        var indexName = [
            'cwl-' + timestamp.getUTCFullYear(),              // year
            ('0' + (timestamp.getUTCMonth() + 1)).slice(-2),  // month
            ('0' + timestamp.getUTCDate()).slice(-2)          // day
        ].join('.');

「var indexName」がそのままファイル名になるので、ここを任意の名前に書き換えればインデックス名を分けることが可能です。

その下のコードを見ると「payload.logGroup」からは「ロググループ」が「payload.logStream」からは「ログストリーム」の値が取れる様子なので、その辺りでif分岐かければいいんじゃないかなと思います。

if分岐に使えそうな値一覧

        var source = buildSource(logEvent.message, logEvent.extractedFields);
        source['@id'] = logEvent.id;
        source['@timestamp'] = new Date(1 * logEvent.timestamp).toISOString();
        source['@message'] = logEvent.message;
        source['@owner'] = payload.owner;
        source['@log_group'] = payload.logGroup;
        source['@log_stream'] = payload.logStream;```
8
7
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
8
7