概要
fluentdを利用して複数のEC2インスタンスからCloudWatch Logsにログを転送する際にプライベートIPを含めたいケースがあり、fluentdの標準Filterプラグインで実現しました
record_transformer でログにプライベートIPを含める
record_transformer
record_transformerは標準のFilterプラグインで、条件に一致したログへのフィールドの追加や編集ができます
プライベートIPアドレスの取得
フィールドの追加時に値としてRubyの式展開を含めた文字列を指定することが可能です
下記のようにプライベートIPの取得を行い、フィールドの追加を行うことができます
<filter foo.bar>
@type record_transformer
<record>
private_ip "#{(Socket.ip_address_list.find do |addr_info| addr_info.ipv4_private? end).ip_address}"
</record>
</filter>