Beats:运用 Logstash 来加工 Metricbeat 数据

2021年5月8日   |   by mebius

在我之前的教程 “Logstash:Logstash 入门教程 (二)”,我详述了如何使用 Logstash 来处理数据。在那个教程的最后的部分,我也讲述了如何使用 Filebeat 把数据送到 Logstash 并对数据进行加工。在今天的教程中,我将使用一个简单的例子来展示如何使用 Logstash 来对 Metricbeat 的数据进行加工。

%title插图%num

导入 Metricbeat 数据

我们可以参考文章 “Beats:Beats 入门教程 (二)” 来安装我们的 Metricbeat。我们只启动 system 模块,并收集自己电脑中的 Metricbeat 数据。如果我们直接把 Metricbeat 的数据传入到 Elasticsearch 的话,我们可以在 Kibana 中的 Metrics 应用中看到:

%title插图%num

%title插图%num

我们可以看到一大堆没有用的 IP 地址。我们想,我们是不是可以考虑使用 Logstash 来对这个 host.ip 里的数据进行处理从而得到一个只有我们想要的 IP 地址字段呢?

通过 Logsttgcodeash 来处理 Metricbeat 数据

我们首先安装好 Logstash,并创建如下的 配置文件:

logstash.conf

input {
    beats {
        port => "5044"
    }
}

filter {
    if [metricset][name] == "network" {
        ruby {
            code => "
                filteredIps = []
                cidr = IPAddr.new('192.168.0.0/24')
                existingIps = event.get('[host][ip]')
                existingIps.each { |ip|
                    if cidr.include?(ip)
                        filteredIps.push(ip)
                    end
                }
                event.set('host.ips', filteredIps)
            "
        }
        mutate {
            add_tag => ["processed_by_logstash"]
     tgcode   }
    }
}

output {
    stdout {
        codec => rubydebug 
    }
    elasticsearch {
        hosts => "localhost:9200"
        index => "%{[@metadata][beat]}-%{[@metadata][version]}"
    }
}

在上面的 filter 部分,我们使用 ruby filter 来对 IP 地址进行过滤。如果 IP 地址是在192.168.0.0/24 范围之内,那么我们就把它放到一个数组里,并最终放到 event 中的 host.ips 字段中。同时我们添加了一个叫做 processed_by_logstash 的 tag。这个用于我们以后便于搜索。接着我们可以使用如下的命令来启动 Logstash:

 ./bin/logstash -f logstash.conf

为了能够使得 Logstash 能够处理来自 Metricbeat 的数据,我们修改 Metricbeat 中的配置文件 metricbeat.yml 文件。首先,我们除去向 Elasticsearch 写的操作:

%title插图%num

同时,我们打开想 Logstash 写的操作:

%title插图%num

经过这样的操作后,我们重新启动 Metricbeat:

./metricbeat -e

这个时候,我们去 Logstash 的 terminal 中进行查看:

%title插图%num

针对 metricset.name 是 network 的情况。我们添加了一个新的字段 host.ips。同时它也添加了一个新的 tag:processed_by_logstash。

我们可以在 Kibana 中看到我们想要的被添加的字段 host.ips:

%title插图%num

我们也可以直接搜索processtgcodeed_by_logstash tag:

%title插图%num

文章来源于互联网:Beats:运用 Logstash 来加工 Metricbeat 数据

相关推荐: Elasticsearch:如何制作 GeoJSON 文件并进行地理位置搜索

我发现我之前的文章 “Elasticsearch:使用 Elasticsearch 进行地理位置搜索” 还是蛮受欢迎的。我觉得大家喜tgcode欢是因为里面有一些图片把复制的问题简单化,一目了然。在使用 Geo Search 进行讲解时,如果能在地图上清楚地展…

Tags: