Logstashにて、シスログ結合について

違うサーバのsyslogを1つに、結合させたいのですが、Logstashのfilterで可能でしょうか?
Logstashのバージョン6.5.3

目的
複数のシスログを1つにまとめて、1つのgrok_exporterで対応させたいです。
シスログごとに、複数のgrok_exporter、起動させたくないため。

よろしくお願いします。

こんにちわ

と書かれているところを確認させてください。
1つにまとめる、結合するというのは具体的にどのようなことを指しているか補足いただけませんか?

複数のサーバで出力されるsyslogを、1つのindexに格納する、ということなのか、
複数のサーバで出力されるsyslogを、1つのlogstashとその設定で処理する、ということなのかよくイメージ出来ていないので。。。

よろしくお願いします

レスありがとうございます。

わかりずらい書き込みで、すみません。
やりたいことは2つあります。

①シスログを1つのLogstashとその設定の処理で、output先のElasticsearceに、そのまま転送させる。
②複数シスログを1つのLogstashとその設定の処理で、1つにして、Logstashのoutput先のElasticsearceに、転送させる。

経緯
ログ監視をPrometheusでやりたいと思っています
シスログの数だけ、監視させるgrok_exporterが必要でした。
そのため、複数のシスログを1つにすれば、grok_exporterが1つで済むので、
Logstashで、シスログを1つに、まとめようと思いました。

logstash.confの設定が、よくわからない為、詰まっています。

可能で、あればご教示願います。

grok_exporterをお使いになろうとしているということは、
apacheやnginx、firewallのログ、その他のアプリケーションが出力したいろんなログファイルを取り込みたいということでしょうか?

と想像した上で、以下を書きます。

Logstashの場合、複数のインプットを1つのconfで指定できます。
inputで複数のログを読み込みますが、後で処理をするためにログの種類がわかるようにtagをつけてあります。
filterでは、そのtagの値に応じてgrokで処理を行う例です。

    input {
      file {
          path => "/var/log/apach_log/*"
          tag => "apache"
      }
      file {
          path => "/var/log/firewall_log/*"
          tag => "firewall"
      }
    }
    filter {
       if "apache" in [tags] {  
        grok { ... }
       } else if "firewall" in [tags] {  
        grok { ... }
       }  
    }
    output {
        elasticsearch { ... }   
    }

この方法ですと、confが冗長になってしまうので、今ではPipelineで記述する方法がスマートかと思います。
https://www.elastic.co/guide/en/logstash/6.6/multiple-pipelines.html

対象のログの種類によっては、filebeatが標準で用意しているmoduleで足りるかもしれませんので、もしまだ確認されてない場合は、一度ご覧ください。
https://www.elastic.co/guide/en/beats/filebeat/current/index.html

レス、ありがとうございます!
ご察しの通りです。

おかげさまで、詰まっていたところが、解決しました。

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