logstash 用に別のサーバーがあり、ログはリモート マシンにあります。logstash 用の lumberjack のプラグインを使用して、これらの同じログをリモート マシンから logstash サーバーに送信します。
私はこれを試しました:
クライアント構成 (ログが存在する場所):
input {
file{
path => "/home/Desktop/Logstash-Input/**/*_log"
}
}
output {
lumberjack {
hosts => ["xx.xx.xx.xx"]
port => 4545
ssl_certificate => "./logstash.pub"
}
ファイル入力のパス変数からフィールドを抽出したいので、それに応じて異なるフィールド値に対して異なる解析パターンを適用できます。
例:こんな感じ
grok {
match => ["path", "/home/Desktop/Logstash-Input/(?<server>[^/]+)/(?<logtype>[^/]+)/(?<logdate>[\d]+.[\d]+.[\d]+)/(?<logfilename>.*)_log"]
}
ここでサーバー、ログタイプは、フィールドに次のようなさまざまな解析パターンを適用するディレクトリ名です。
filter{
if [server] == "Server2" and [logtype] == "CronLog" {
grok........
}
if [server] == "Server3" and [logtype] == "CronLog" {
grok............
}
}
ファイル入力は、パスからフィールドを抽出したいクライアントマシン上にあるため、logstash-server構成に上記を適用するにはどうすればよいですか???
Lumberjack はログをサーバーに正常に送信します。クライアントにgrokを適用してみました:
grok {
match => ["path", "/home/Desktop/Logstash-Input/(?<server>[^/]+)/(?<logtype>[^/]+)/(?<logdate>[\d]+.[\d]+.[\d]+)/(?<logfilename>.*)_log"]
}
サーバー、ログタイプなどのフィールドをログに追加するクライアント コンソールを確認しましたが、logstsh-server コンソールではフィールドが追加されません。
上記を達成するにはどうすればよいですか????