CentOS7 rsyslogとelasticsearch output plugin でエラーが出た

rsyslogにはelasticsearchへそのまま出力するプラグイン用意されています。

用意されているのですが、CentOS7(1708)標準のリポジトリにあるものは 8.24.0と若干古く、Elasticsearch側のバージョンが新しい(6以上)と、正常に出力できません。

デバッグ出力をonにしてみるとわかるのですが、 プラグイン

Content-type: text/json

でElasticsearchへ向けて出力しており、

Content-type: application/json

でないと受け付けてくれないからです。

Merge pull request #1698 from wdauchy/es_contenttype · rsyslog/rsyslog@a25573f · GitHub

Merge pull request #1743 from wdauchy/es_contenttype_bulk · rsyslog/rsyslog@9cb5c17 · GitHub

このあたりでContent-typeに関する修正がなされています。

ですので 8.29.0もしくは8.30.0以上でないと正常に出力できないと思われます。

最新のrsyslogをインストールする方法はオフィシャルサイト に記載がありますが、

repoファイル を /etc/yum.repos.d/ へ配置し、 yum install rsyslog-elasticsearch によってインストールできます。