ElasticSearch进阶(七)Logstash数据转换工具的使用

前言

      本章讲解Logstash数据转换工具的基本使用

方法

1.概念

通过准备篇的学习,我们知道Logstash基于Java,是一个开源的用于收集分析和存储日志的工具,它最重要的功能就是将我们收集的日志做转换,以便于我们更好的进行解析!

首先我们来看一下Logstash,下面的图片来自于官网:https://www.elastic.co/cn/products/logstash

注意:本次示例将采集nginx的日志作为演示,请确保已经安装好nginx

2.Logstash的安装和配置测试

我们可以在官网下载指定版本的Logstash:https://www.elastic.co/cn/downloads/logstash

本次我们下载的是7.4.0的window版本:

首先我们进入到config路径下,由于我的电脑内存限制,修改jvm.options指定数据如下:

## JVM configuration

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms256m
-Xmx256m

然后将logstash-sample.conf配置文件拷贝一份放入到bin路径下,重命名为logstash-file.conf,暂时将文件放在这,稍后修改!

我们在bin路径下运行如下命令:logstash.bat -e "input { stdin { } } output { stdout {} }"

我相信大家知道这是什么意思,标准化的输入加标准化输出

我们在控制台输入hello world,效果如下所示:

这说明,我们的logstash已经配置成功啦!

3.使用logstash将filebeat读取nginx日志输出到elasticsearch

1)配置我们的filebeat配置文件

#=========================== Filebeat inputs =============================

filebeat.inputs:

- type: log
  enabled: true
  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - F:\nginx-1.17.5\logs\*.log

#==================== Elasticsearch template setting ==========================

setup.template.settings:
  index.number_of_shards: 1

#================================ Outputs =====================================

# Configure what output to use when sending the data collected by the beat.
#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

使用命令启动filebeat:filebeat.exe -e -c filebeat-nginx.yml -d "publish"

2)配置logstash的配置文件

找到我们之前拷贝到bin路径下的配置文件logstash-file.conf,将其修改内容如下:

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  beats {
    port => 5044
  }
}

output {
   elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "filebeat-test"
  }
}

使用命令启动logstash:logstash.bat -f logstash-file.conf --config.reload.automatic

3)启动es,观察es数据

我们发现,传输进入ES已经成功了,只不过我们的日志数据没有合理的解析,全部都包含在了message属性中,这对我们今后的解析是十分不利的,所以我们需要用到logstash的filter。

要想学习filter,首先就需要知道logstash的工作原理,一张图诠释了它的运行流程:

我们发现,它包含三个主要结构:INPUTS、FILTERS、OUTPUTS。

  • INPUTS:输入数据到logstash。
  • FILTERS:数据中间处理,对数据进行操作。
  • OUTPUTS:outputs是logstash处理管道的最末端组件。

其中,最难学的就是FILTERS的编写啦!

4)编写基本的FILTERS,转换message属性中的日志信息

本次示例使用的正则表达式来自于:https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/httpd

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  beats {
    port => 5044
  }
}

filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
}

output {
   elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "filebeat-test"
  }
}

本次无需重新启动logstash,因为我们配置了--config.reload.automatic

重新刷新几次nginx页面,观察后序的输出效果:

我们发现,logstash为我们新增了一些有用的属性将message的内容分解开来,有助于日后的分析与汇总。

更多过滤器的编写方法请参考官网:https://www.elastic.co/guide/en/logstash/current/index.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值