web-dev-qa-db-ja.com

Logstash / Elasticsearch-出力設定で小文字に変換するフィールド

現在、多数のログ出力を格納している標準のELKスタックがあります。ソース固有になるようにインデックスを分離しようとしています。

私のFileBeats構成の一部として、いくつかの標準フィールドは常にすべてのメッセージの一部として生成され(場所固有)、ESインデックスの基礎として使用します。

output {
  elasticsearch {
    hosts => ["http://elasticsearch.mydomain.com:80"]
    index => "logstash-%{+YYYY.MM.dd}-%{[fields][identifier]}"
  }
}

ただし、フィールドには大文字が含まれているため、ESは一部のインデックスを拒否しています。識別子にはmyfooのような許容値がありますが、MyBarの場合もあります。

[logstash.outputs.elasticsearch] Could not index event to Elasticsearch. {"reason"=>"Invalid index name [logstash-2017.06.02-MyBar], must be lowercase"}

大文字小文字の区別は必須ではなく、問題のフィールドを強制的に小文字にするためにmutateフィルターを追加できますが、適切な大文字小文字で識別子フィールドを格納し、インデックス名には小文字バージョンを使用することをお勧めします。

問題のフィールドを小文字にするために、elasticsearchの出力で呼び出すことができる関数はありますか?何かのようなもの

    index => "logstash-%{+YYYY.MM.dd}-%{[fields][identifier]}.lowercase()"
3
m8r-3wo9bu

これは、もう少し変則的な手法で行うことができます。

  1. Mutateを使用して新しいフィールドを作成し、識別子に設定します。
  2. 2番目のmutateでは、その新しいフィールドを小文字にします。
  3. 出力で新しいフィールドを使用します。

そのようです:

filter {
  mutate {
    add_field => { "lc_identifier" => "%{fields}%{identifier}" }
  }
  mutate {
    lowercase => [ "lc_identifier" ]
  }
}

output {
  elasticsearch {
    hosts => ["http://elasticsearch.example.com:80"]
    index => "logstash-%{+YYYY.MM.dd}-%{[lc_identifier]}"
  }
}

インデックスにはlc_identifierフィールドが含まれますが、それほど重要ではありません。

3
sysadmin1138

Sysadmin1138のビルド answer

@ metadata フィールドを使用して、lc_identifierフィールドは、インデックス作成中にドキュメントに表示されません。

フィルターで、以下を変更します。

filter {
  mutate {
    add_field => { "lc_identifier" => "%{fields}%{identifier}" }
  }
  mutate {
    lowercase => [ "lc_identifier" ]
  }
}

に:

filter {
  mutate {
    add_field => { "[@metadata][lc_identifier]" => "%{fields}%{identifier}" }
  }
  mutate {
    lowercase => [ "[@metadata][lc_identifier]" ]
  }
}

そしてあなたの出力でそれを呼び出すには:

output {
  elasticsearch {
    hosts => ["http://elasticsearch.example.com:80"]
    index => "logstash-%{+YYYY.MM.dd}-%{[@metadata][lc_identifier]}"
  }
}

この方法では、小文字の識別子を使用してインデックスパターンを作成できますが、ドキュメント自体に小文字のフィールドを表示することは避けてください。

0
Mor Paz