# filebeatのモジュールをLogstashで使用する方法

**URL:** <https://discuss.elastic.co/t/filebeat-logstash/202493>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [October 7, 2019, 7:49am UTC](https://discuss.elastic.co/t/filebeat-logstash/202493 "2019-10-07T07:49:22Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![t-nakata](https://avatars.discourse-cdn.com/v4/letter/t/8491ac/32.png) [@t-nakata](https://discuss.elastic.co/u/t-nakata)\
**Post date:** [October 7, 2019, 7:49am UTC](https://discuss.elastic.co/t/filebeat-logstash/202493/1 "2019-10-07T07:49:22Z")

</div>

filebeatのapacheモジュールを、logstashで使用できるように設定したいです。  
以下のマニュアルを参考に、translateを実施するように設定してみたのですが、  
期待通りtranslateされませんでした。  
モジュールをLogstashで使用する場合、filebeat側にも何か設定する必要はありますでしょうか。

[https://www.elastic.co/guide/en/logstash/current/logstash-config-for-filebeat-modules.html](https://www.elastic.co/guide/en/logstash/current/logstash-config-for-filebeat-modules.html)

# ■Logstashのconf設定内容

# input { beats { port =\> 5044 } } filter { if [fileset][module] == "apache" { translate { field =\> "[http.response.status\_code]" destination =\> "[http\_status\_description]" dictionary =\> { "100" =\> "Continue" "101" =\> "Switching Protocols" "200" =\> "OK" "500" =\> "Server Error" } fallback =\> "I'm a teapot" } } } output{ elasticsearch{ hosts =\> ["XXX.XXX.XXX.XXX:9200"] user =\> "\*\*\*\*\*\*" password =\> "\*\*\*\*\*\*" manage\_template =\> false index =\> "apache\_test" } }

---

<div class="post-metadata">

**Author:** ![tsgkdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tsgkdt/32/39151_2.png) [@tsgkdt](https://discuss.elastic.co/u/tsgkdt)\
**Post date:** [October 7, 2019, 12:41pm UTC](https://discuss.elastic.co/t/filebeat-logstash/202493/2 "2019-10-07T12:41:33Z")

</div>

filebeatでmoduleを使用したとき、実際にパース処理が行われるのbeatsの中ではなく、ElasticsearchのIngest Processorだと思います。

そのため、filebeat -\> logsatsh -\> Elasticsearchという構成とした場合に、moduleを使用していたとしても、logstashのfilter内ではfilebeatのmoduleによる処理結果が入っていない（messageと、filebeatが付与したホスト情報などのメタデータだけな）ので、期待した結果にならないのだと思います。

```ruby
input {
  beats {
    port => 5044
  }
}

output {
  stdout {}
}

```

として確認いただくと、http.response.status\_codeといったフィールドが何もないことが確認できるかと思います。

これをふまえまして、  
beatsのmodule（Ingest Processorの処理）とLogstashのfilterを組み合わせたいという場合でしたら、2通り考えられそうです。

1. ModuleのIngest ProcessorをLogstashに変換する（Logstash側によせる）  
PipelineをLogstashの設定に変換してくれるツールがあるので、これが使えないか検討します。

2. LogstashのFilter部分を、Ingest Processorに変換する（Pipeline側によせる）  
見たところ、それほど数の多くないシンプルな置き換え処理であれば、Script Processorで置換処理を書いてしまうのもありかと思います。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [November 4, 2019, 12:41pm UTC](https://discuss.elastic.co/t/filebeat-logstash/202493/3 "2019-11-04T12:41:38Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
