作者:我的 | 来源:互联网 | 2023-06-29 15:06
摘要我们用Logsatsh写配置文件的时候,如果读取的文件太多,匹配的正则过多,会使配置文件动辄成百上千行代码,可能会造成阅读和修改困难。这时候,我们可以将配置文件的输入、过滤、输出分别放在
摘要
我们用Logsatsh写配置文件的时候,如果读取的文件太多,匹配的正则过多,会使配置文件动辄成百上千行代码,可能会造成阅读和修改困难。这时候,我们可以将配置文件的输入、过滤、输出分别放在不同的配置文件里,甚至把输入、过滤、输出再次分离,放在不同的文件里。
这时候,后期再需要增删改查内容的时候,就容易维护了。
1、logstash如何读取多个配置文件
我们知道在启动logstash的时候,只要加上-f /you_path_to_config_file
就可以加载配置文件了,如果我们需要加载多个配置文件,只需要-f /you_path_to_config_directory
就可以了。简单说,就是在-f
后面加上目录就可以。
注意:目录后面不能加 * 号,否则只会读取一个文件,但是在读取日志文件时,*可以匹配所有,比如sys.log*可以匹配所有以sys.log开头的日志文件,如sys.log1,sys.log2等。
示例如下:
2、logstash多个配置文件里的input、filter、output是否相互独立
答案是:NO!
比如:
input{
file{
path=>[
"/home/husen/log/sys.log"
]
}
}
input{
file{
path=>[
"/home/husen/log/error.log"
]
}
}
elasticsearch {
action => "index"
hosts => "localhost:9200"
index => "from_sys_log"
codec => "json"
}
elasticsearch {
action => "index"
hosts => "localhost:9200"
index => "from_error_log"
codec => "json"
}
3、logstash读取多个配置文件建议的配置方法
如果要在配置文件中,独立一些部分,又要共用一些部分,比如我上门提高同样的日志来自不同的服务器,需要用同样的filter,但是建立不同的索引的问题,该怎么办?
建议使用tags
或者type
这两个特殊字段,即在读取文件的时候,添加标识符在tags
中或者定义type
变量。
示例如下:
input{
file{
path=>[
"/home/husen/log/sys.log"
]
type => "from_sys"
}
}
input{
file{
path=>[
"/home/husen/log/error.log"
]
type => "from_error"
}
}
if [type] == "from_sys"{
elasticsearch {
action => "index"
hosts => "localhost:9200"
index => "from_sys_log"
codec => "json"
}
}
if [type] == "from_error"{
elasticsearch {
action => "index"
hosts => "localhost:9200"
index => "from_error_log"
codec => "json"
}
}
//特别地,如果要针对不同的类型日志用不同filter来grok解析, //也可以通过类似的方法判断
嗯哼,搞定!