logstashで複数ポートでsyslog転送を受け付ける

投稿者: | 2018年11月1日

引き続きlogstash関連です。
今回はlogstashで複数ポートでsyslog転送を待ち受ける方法です。
下記のようにinputを複数記述すること複数ポートを受け付けることが可能です。

    tcp {
        port => 51000
        type => app1
    }
    tcp {
        port => 52000
        type => app2
    }

受け付けるポート毎にフィルタの内容が設定できるように「type」を設定しておきます。
「type」を設定しておくことで下記のようにフィルタを振り分けすることができます。

filter {
  if [type] == "app1" {
    grok {
      match => {
        "message" => [
          "%{TIMESTAMP_ISO8601}%{SPACE}%{USERNAME:service}%{SPACE}%{WORD:status}%{GREEDYDATA:message}",
          "%{GREEDYDATA:message}"
        ]
      }
    }
    mutate {
      add_field => { "ddsource" => "java" }
      add_field => { "service" => "app1" }
    }
  }
  if [type] == "app2" {
    grok {
      match => {
        "message" => [
          "%{GREEDYDATA:message}"
        ]
      }
    }
    mutate {
      add_field => { "ddsource" => "ruby" }
      add_field => { "service" => "app2" }
    }
  }
}

input、filter、outputの1セットを別にファイルに分けても全てのinputが全てのfilterを通るため分けることができませんでした。
inputでtypeを指定し、それぞれの処理で振り分ける必要があるようです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA