elasticsearch 读取日志存储级别的CSV,并根据提取的数据进行过滤
我使用Metricbeat获取过程级数据,并使用Logstash将其推送到弹性搜索 现在,目标是将流程分类为2个标记,即运行的流程要么是浏览器,要么是其他东西 我可以使用以下代码块静态地执行此操作:elasticsearch 读取日志存储级别的CSV,并根据提取的数据进行过滤,elasticsearch,logstash,elastic-stack,logstash-configuration,elk,elasticsearch,Logstash,Elastic Stack,Logstash Configuration,Elk,我使用Metricbeat获取过程级数据,并使用Logstash将其推送到弹性搜索 现在,目标是将流程分类为2个标记,即运行的流程要么是浏览器,要么是其他东西 我可以使用以下代码块静态地执行此操作: input { beats { port => 5044 } } filter{ if [process][name]=="firefox.exe" or [process][name]=="chrome.exe" { mutate {
input {
beats {
port => 5044
}
}
filter{
if [process][name]=="firefox.exe" or [process][name]=="chrome.exe" {
mutate {
add_field => { "process.type" => "browsers" }
convert => {
"process.type" => "string"
}
}
}
else {
mutate {
add_field => { "process.type" => "other" }
}
}
}
output {
elasticsearch {
hosts => "localhost:9200"
# manage_template => false
index => "metricbeatlogstash"
}
}
但是,当我试图通过从CSV读取进程列表来使if条件动态化时,我在Kibana中没有得到任何有效的结果,也没有在日志存储级别上得到错误
CSV配置文件代码如下所示:
input {
beats {
port => 5044
}
file{
path=>"filePath"
start_position=>"beginning"
sincedb_path=>"NULL"
}
}
filter{
csv{
separator=>","
columns=>["processList","IT"]
}
if [process][name] in [processList] {
mutate {
add_field => { "process.type" => "browsers" }
convert => {
"process.type" => "string"
}
}
}
else {
mutate {
add_field => { "process.type" => "other" }
}
}
}
output {
elasticsearch {
hosts => "localhost:9200"
# manage_template => false
index => "metricbeatlogstash2"
}
}
您试图做的事情在logstash中不起作用,logstash管道中的事件彼此独立 您的
beats
输入接收到的事件不知道您的csv
输入接收到的事件,因此您不能在条件语句中使用来自不同事件的字段
要执行所需操作,可以使用以下配置的translate
过滤器
translate {
field => "[process][name]"
destination => "[process][type]"
dictionary_path => "process.csv"
fallback => "others"
refresh_interval => 300
}
此筛选器将对照从文件process.csv
加载到内存中的字典检查字段[process][name]
的值,字典是一个.csv
文件,有两列,第一列是浏览器进程的名称,第二列始终是浏览器
chrome.exe,browser
firefox.exe,browser
如果筛选器获得匹配,它将使用第二列中的值填充字段
[process][type]
(而不是process.type
),在这种情况下,始终是浏览器
,如果不匹配,它将使用回退
配置的值填充字段[process][type]
,在这种情况下,其他
,它还将每隔300秒(5分钟)重新加载process.csv
文件的内容很棒的东西!此外,它还提供了在CSV中添加新条目(比如edge.exe?)的灵活性,并最迟在接下来的5分钟内将其拾取。