1

過去に Logstash を使用したことがありますが、しばらく経ち、ファイルからの読み取りを試みたのはこれが初めてです。私の人生では、絶対に単純な仕事であるべきことに何時間も費やしてきました。ログ全体を読む代わりに、小さなものから始めて、そこからコードを構築しています。

私のログのファイル名は /home/shoresc/Desktop/logstash_config/sample.messages です

その内容は次のようになります。

Jan 15 00:33:48 "POST /service.php?session_name=sample_name HTTP/1.1"

私のlogstashファイルは次のようになります。

input {
   file {
      path => "/home/shoresc/Desktop/logstash_config/sample.messages"
   }
}

filter {
  grok {
    patterns_dir => "/home/shoresc/Desktop/logstash_config/patterns"
    match => [ "message", "%{SYSLOGBASE} %{GREEDYDATA:message1}"]
  }
}

output {
  stdout { codec => rubydebug }
}

最後に、このパスを使用してこのコードを参照しています:

/usr/bin/java -Xmx256m -Xms256m -jar logstash.jar agent -w 1 -f /home/shoresc/Desktop/logstash_config/syslog.conf

Syslog.conf はそのディレクトリにあり、パターン フォルダーへのパスと sample.messages ファイルを確認しました。奇妙なことは、実際に時折それを解析することです。20回に1回くらい。

これはlogstashのバグであるとほぼ確信していますが、何か不足している場合に備えてコミュニティで実行したいと思います。

ここで何か間違ったことをしていますか?

前もってありがとうコール

私はこれでコードを更新しました:

input {
   file {
      path => "/home/shoresc/Desktop/logstash_config/sample.messages"
      type => syslog
      start_position => "end"
   }
}

filter {
if [type] == "syslog" {
  grok {
    patterns_dir => "/home/shoresc/Desktop/logstash_config/patterns"
    match => [ "message", "%{SYSLOGBASE} %{GREEDYDATA:message1}"]
  }
}
}

output {
  stdout { codec => rubydebug }
}

私のすべての拠点をカバーするには(タグを追加し、ファイル入力を終了に設定します。まだ機能していません。誰かアイデアはありますか?

ありがとう、コール

4

2 に答える 2

4

Ben Lim は、Logstash がファイル入力の位置データベースに書き込むと述べたので、ドキュメントのファイル入力タグを読んで、テスト環境を完成させる方法を見つけました。

input {
   file {
      path => "/home/shoresc/Desktop/logstash_config/sample.messages"
      type => syslog
      start_position => "beginning"
      sincedb_path => "/dev/null"
   }
}

filter {
if [type] == "syslog" {
  grok {
    patterns_dir => "/home/shoresc/Desktop/logstash_config/patterns"
    match => [ "message", "%{SYSLOGTIMESTAMP} %{NOTSPACE:hostname1}/%{NOTSPACE}"]
  }
}
}

output {
  stdout { codec => rubydebug }
}

ここの入力セクションでわかるように、データベースの書き込みを /dev/null に指示しました。これにより、更新されたかどうかに関係なく、logstash は毎回テスト ファイルを読み取るようになります。それは完全に機能します。

于 2014-01-20T15:48:04.423 に答える
1

logstash を開始した後、ログは「/home/shoresc/Desktop/logstash_config/sample.messages」に書き込まれますか?

デフォルトの Logstash File API は、ファイルの末尾からファイルを読み取るため、以前のログは読み取られません。start_positionを指定する必要があり、ファイルの先頭から読み取ります。

于 2014-01-17T05:12:58.553 に答える