我们有一个单独的 logstash 服务器,日志在远程机器上。我们使用伐木工人的logstash插件将这些相同的日志从远程机器发送到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"]
}
这里服务器,logtype 是我希望在我的字段中应用不同解析模式的目录名称,例如:
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 控制台上没有添加这些字段。
我应该如何才能达到上述目的????