【发布时间】:2020-10-06 23:49:40
【问题描述】:
我正在使用 Metricbeat 获取流程级数据并使用 Logstash 将其推送到 Elastic Search。
现在,我们的目标是将进程分为 2 个标签,即正在运行的进程要么是浏览器,要么是其他东西。
我可以使用这段代码静态地做到这一点:
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 读取进程列表来使条件动态化时,我在 Kibana 中没有得到任何有效结果,在我的 LogStash 级别上也没有错误。
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"
}
}
【问题讨论】:
标签: elasticsearch logstash elastic-stack logstash-configuration elk