前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云 Elasticsearch 进阶篇(二十四)Logstash讲解与实战

腾讯云 Elasticsearch 进阶篇(二十四)Logstash讲解与实战

原创
作者头像
南非骆驼说大数据
修改2020-03-06 13:39:16
1.2K0
修改2020-03-06 13:39:16
举报
文章被收录于专栏:南非骆驼说大数据

前言|

上一节我们通过一个简单的实际列子来启动论证了logstash, 那么接下来,我们重点来讲一下它的工作原理、以及各插件的运行机制与使用方法。

一、Logstash的工作原理

Logstash是一个开源的、服务端的数据处理pipeline(管道),它可以接收多个源的数据、然后对它们进行转换、最终将它们发送到指定类型的目的地。Logstash是通过插件机制实现各种功能的,可以在https://github.com/logstash-plugins 下载各种功能的插件,也可以自行编写插件。

Logstash实现的功能主要分为接收数据、解析过滤并转换数据、输出数据三个部分,对应的插件依次是input插件、filter插件、output插件,其中,filter插件是可选的,其它两个是必须插件。也就是说在一个完整的Logstash配置文件中,必须有input插件和output插件。那么,我们去Elastic官网上看看,以6.8.2为列: https://www.elastic.co/guide/en/logstash/6.8/index.html

Logstash官方插件
Logstash官方插件

那么我们可以根据自己的需要去选择合适的插件,并参考官方文档给出合适的配置,比如说我们看一下Input插件:

官网介绍
官网介绍

因此,这里简单总结一下logstash的各常用插件:

1、常用的input

input插件主要用于接收数据,Logstash支持接收多种数据源,常用的有如下几种:

<1>file: 读取一个文件,这个读取功能有点类似于linux下面的tail命令,一行一行的实时读取。

<2>syslog: 监听系统514端口的syslog messages,并使用RFC3164格式进行解析。CentOS 7以下是rsyslog

<3>redis: Logstash可以从redis服务器读取数据,此时redis类似于一个消息缓存组件。

<4>kafka:Logstash也可以从kafka集群中读取数据,kafka加Logstash的架构一般用在数据量较大的业务场景,kafka可用作数据的缓冲和存储。

<5>filebeat:filebeat是一个文本日志收集器,性能稳定,并且占用系统资源很少,Logstash可以接收filebeat发送过来的数据。

2、常用的filter

filter插件主要用于数据的过滤、解析和格式化,也就是将非结构化的数据解析成结构化的、可查询的标准化数据。常见的filter插件有如下几个:

<1>grok:grok是Logstash最重要的插件,可解析并结构化任意数据,支持正则表达式,并提供了很多内置的规则和模板可供使用。此插件使用最多,但也最复杂。

<2>mutate: 此插件提供了丰富的基础类型数据处理能力。包括类型转换,字符串处理和字段处理等。

<3>date:此插件可以用来转换你的日志记录中的时间字符串。

<4>GeoIP:此插件可以根据IP地址提供对应的地域信息,包括国别,省市,经纬度等,对于可视化地图和区域统计非常有用。

更多可以查看官网https://www.elastic.co/guide/en/logstash/6.8/index.html

3、常用的output

output插件用于数据的输出,一个Logstash事件可以穿过多个output,直到所有的output处理完毕,这个事件才算结束。输出插件常见的有如下几种:

<1> elasticsearch: 发送数据到elasticsearch。

<2>file:发送数据到文件中。

<3> redis:发送数据到redis中,从这里可以看出,redis插件既可以用在input插件中,也可以用在output插件中。

<4>kafka:发送数据到kafka中,与redis插件类似,此插件也可以用在Logstash的输入和输出插件中。

更多可以查看官网https://www.elastic.co/guide/en/logstash/6.8/index.html

二、动手实践logstash进程

上一章节,我们知道Logstash在下载解压安装后,默认安装目录下是存在一个全局配置文件Logstash,然后我们还需要配置一个*.conf的事件配置文件,用来表示Logstash需要执行的动作,对吧,那么接下来,我们来讲讲logstash的实际演练:

首先:类似以命令行方式执行:bin/logstash -e 'input{stdin{}} output{stdout{codec=>rubydebug}}'

解释下这条命令的含义:

l -e代表执行的意思。

l input即输入的意思,input里面即是输入的方式,这里选择了stdin,就是标准输入(从终端输入)。

l output即输出的意思,output里面是输出的方式,这里选择了stdout,就是标准输出(输出到终端)。

l这里的codec是个插件,表明格式。这里放在stdout中,表示输出的格式,rubydebug是专门用来做测试的格式,一般用来在终端输出JSON格式

标准输入---》标准输出 用 JSON格式 我们来看一下Logstash启动结果

命令行输出
命令行输出

好,服务启动啦,既然刚刚的配置是标准输入:那么我们从键盘输入一下:“Hello World”,看输出内容:如图

output输出
output输出

message:输出的实际内容,日志

@timestamp:logstash收集这个日志产生的时间,不是这个hello消息产生的时间,这个字段是不能删除的

host:代表这条消息是在哪台主机上产生的。比较有作用

简单小结

于是上面我们就简单验证了从标准输入---标注输出的这样一个过程,同时知道,logstash对处理的数据进行了一些字段的自动添加。命令行方式的执行只能做一些简单的操作,那么如果要执行更加复杂的操作呢?我们可以把要操作得文件放在一个配置文件中,然后启动Logstash的时候指定这个配置文件就可以啦。比如下面的配置文件:

配置文件
配置文件

执行一下:结果跟上面一样:如图:

执行结果
执行结果

当然,我们如果配置一个文件觉得它是否OK,我们可以通过 -t参数进行测试。比如:

/usr/local/logstash-6.8.2/bin/logstash -f /usr/local/logstash-6.8.2/test_logstash1.conf -t

验证配置文件
验证配置文件

配置文件验证没问题,接下来,我们执行-f 命令就可以正常启动Logstash啦

是不是很简单呢?如果很简单,那么恭喜大家,你们已经学会这个Logstash了,赶快复习复习吧。。。

三、总结

本节重点介绍啦一下Logstash的三类插件,以及各插件的基本用法,并用最简单的执行方式启动了Logstash进程,想必更进一步增进了对Logstash 的了解,下一节,我们再进一步讲各插件的详细使用,跟着我来吧。。。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言|
  • 一、Logstash的工作原理
  • 二、动手实践logstash进程
  • 三、总结
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档