实战ELK(5) Logstash 入门

Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。

一、原理

Logstash 通过管道进行运作,管道有两个必需的元素,输入和输出,还有一个可选的元素,过滤器。

输入插件从数据源获取数据,过滤器插件根据用户指定的数据格式修改数据,输出插件则将数据写入到目的地。如下图:

输入:采集各种样式、大小和来源的数据

数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。

过滤器:实时解析和转换数据

数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。

Logstash 能够动态地转换和解析数据,不受格式或复杂度的影响:

  • 利用 Grok 从非结构化数据中派生出结构
  • 从 IP 地址破译出地理坐标
  • 将 PII 数据匿名化,完全排除敏感字段
  • 整体处理不受数据源、格式或架构的影响

输出:选择你的存储,导出你的数据

尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。

Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。

二、安装

2.1、下载

Logstash 依赖 JDK1.8 ,因此在安装之前请确保机器已经安装和配置好 JDK1.8。

Logstash 下载:https://artifacts.elastic.co/downloads/logstash/logstash-6.5.1.rpm

2.2、安装

yum install logstash-6.5.1.rpm

查看启动文件来了解下文件目录

vim /etc/systemd/system/logstash.service

常用的目录:

/etc/default/logstash
/etc/sysconfig/logstash
/usr/share/logstash/bin/logstash/etc/logstash

2.3、设置执行权限

  • 方法1,修改
logstash.service
vim /etc/systemd/system/logstash.service
User=root #直接以root账户允许
Group=root

  • 方法2
chown -R logstash:logstash /var/lib/logstash
chown -R logstash:logstash /var/log/logstash 

2.4 、开机启动 

systemctl start logstash.service
systemctl enable logstash.service
systemctl status logstash.service 

2.5、我们先来一个简单的案例:

cd /usr/share/logstash
bin/logstash -e 'input { stdin { } } output { stdout {} }'

可能会有点慢

这时候输入个Hello World

在生产环境中,Logstash 的管道要复杂很多,可能需要配置多个输入、过滤器和输出插件。

因此,需要一个配置文件管理输入、过滤器和输出相关的配置。配置文件内容格式如下:

# 输入
input {...
}# 过滤器
filter {...
}# 输出
output {...
}

根据自己的需求在对应的位置配置 输入插件、过滤器插件、输出插件 和 编码解码插件 即可。

三、插件用法

Logstash 每读取一次数据的行为叫做事件。

在 Logstach 目录中创建一个配置文件,名为 logstash.conf(名字任意)。

cd /usr/share/logstash

3.1 输入插件

输入插件允许一个特定的事件源可以读取到 Logstash 管道中,配置在 input {} 中,且可以设置多个。

修改配置文件:

input {# 从文件读取日志信息file {path => "/var/log/elasticsearch/"type => "elasticsearch"start_position => "beginning"}
}# filter {
#
# }output {# 标准输出stdout { codec => rubydebug }
}

其中,messages 为系统日志。

保存文件。键入:

bin/logstash -f logstash.conf

3.2 输出插件

输出插件将事件数据发送到特定的目的地,配置在 output {} 中,且可以设置多个。

修改配置文件:

input {# 从文件读取日志信息file {path => "/var/log/error.log"type => "error"start_position => "beginning"}}# filter {
#
# }output {# 输出到 elasticsearchelasticsearch {hosts => ["192.168.50.70:9200"]index => "error-%{+YYYY.MM.dd}"}
}

保存文件。键入:

bin/logstash -f logstash.conf

3.3 编码解码插件

编码解码插件本质是一种流过滤器,配合输入插件或输出插件使用。

从上图中,我们发现一个问题:Java 异常日志被拆分成单行事件记录到 Elasticsearch 中,这不符合开发者或运维人员的查看习惯。因此,我们需要对日志信息进行编码将多行事件转成单行事件记录起来。

我们需要配置 Multiline codec 插件,这个插件可以将多行日志信息合并成一行,作为一个事件处理。

Logstash 默认没有安装该插件,需要开发者自行安装。键入:

bin/logstash-plugin install logstash-codec-multiline

修改配置文件:

input {# 从文件读取日志信息file {path => "/var/log/error.log"type => "error"start_position => "beginning"# 使用 multiline 插件codec => multiline {# 通过正则表达式匹配,具体配置根据自身实际情况而定pattern => "^\d"negate => truewhat => "previous"}}}# filter {
#
# }output {# 输出到 elasticsearchelasticsearch {hosts => ["192.168.2.41:9200"]index => "error-%{+YYYY.MM.dd}"}
}

保存文件。键入:

bin/logstash -f logstash.conf

4.4 过滤器插件

过滤器插件位于 Logstash 管道的中间位置,对事件执行过滤处理,配置在 filter {},且可以配置多个。

本次测试使用 grok 插件演示,grok 插件用于过滤杂乱的内容,将其结构化,增加可读性。

安装:

bin/logstash-plugin install logstash-filter-grok

修改配置文件:

input {stdin {}
}filter {grok {match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER
:duration}" }
     }
}output {stdout {codec => "rubydebug"}
}

保存文件。键入:

bin/logstash -f logstash.conf

启动成功后,我们输入:

55.3.244.1 GET /index.html 15824 0.043

控制台返回:

[root@localhost logstash-5.6.3]# bin/logstash -f logstash.conf
Sending Logstash's logs to /root/logstash-5.6.3/logs which is now configured via log4j2.properties
[2017-10-30T08:23:20,456][INFO ][logstash.modules.scaffold] Initializing module {:module_name=>"fb_apache", :directory=>"/root/logstash-5.6.3/modules/fb_apache/configuration"}
[2017-10-30T08:23:20,459][INFO ][logstash.modules.scaffold] Initializing module {:module_name=>"netflow", :directory=>"/root/logstash-5.6.3/modules/netflow/configuration"}
[2017-10-30T08:23:21,447][INFO ][logstash.pipeline        ] Starting pipeline {"id"=>"main", "pipeline.workers"=>1, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>125}
The stdin plugin is now waiting for input:
[2017-10-30T08:23:21,516][INFO ][logstash.pipeline        ] Pipeline main started
[2017-10-30T08:23:21,573][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
55.3.244.1 GET /index.html 15824 0.043
{"duration" => "0.043","request" => "/index.html","@timestamp" => 2017-10-30T15:23:23.912Z,"method" => "GET","bytes" => "15824","@version" => "1","host" => "localhost.localdomain","client" => "55.3.244.1","message" => "55.3.244.1 GET /index.html 15824 0.043"
}

输入的内容被匹配到相应的名字中。

posted on 2018-12-03 10:49 tianyamoon 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/tianyamoon/p/10045282.html

实战ELK(5) Logstash 入门相关推荐

  1. 实战ELK(9) Elasticsearch地理位置

    实战ELK(9) Elasticsearch地理位置 地理坐标点(geo-point) 是指地球表面可以用经纬度描述的一个点.地理坐标点可以用来计算两个坐标位置间的距离,或者判断一个点是否在一个区域中 ...

  2. ELK环境搭建+入门使用

    文章目录 ELK环境搭建+入门使用 前言 使用的数据格式定义 安装.启动 启动ES 启动Kibana 启动Logstash 配置first-pipeline.conf 前台启动Logstash 在Lo ...

  3. Logstash:Logstash 入门教程 (一)

    Logstash 是一个功能强大的工具,可与各种部署集成. 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据. 如果你的数据需要 Beats 中没有的其他处理,则需要将 Logsta ...

  4. 深度学习实战_五天入门深度学习,这里有一份PyTorch实战课程

    这是一门五天入门深度学习的实战课程. 想入门深度学习的小伙伴有福了!dataflowr 最近推出了一门五天初步掌握深度学习的实战教程(实战使用 PyTorch 框架),有知识点有实例有代码,值得一看. ...

  5. 使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践--转载

    原文地址:https://wsgzao.github.io/post/elk/ 另外可以参考:https://www.digitalocean.com/community/tutorials/how- ...

  6. Docker 实战教程之从入门到提高 (五)

    本系列的前四篇文章,我们学习了如何在 Ubuntu 操作系统安装 Docker,并且通过实战练习,了解了 Docker 和宿主机操作系统文件目录互相隔离的实现原理,以及 Docker Volume 的 ...

  7. Docker 实战教程之从入门到提高 (四)

    本系列的前三篇文章,我们学习了如何在 Ubuntu 操作系统安装 Docker,并且通过实战练习,了解了 Docker 和宿主机操作系统文件目录互相隔离的实现原理,以及 Docker Volume 的 ...

  8. Docker 实战教程之从入门到提高(二)

    本系列第一篇文章,Docker 实战教程之从入门到提高 (一),我们已经介绍了如何在 Ubuntu 操作系统中安装 Docker,以及 Proxy 和 Insecure Registry 的配置. 本 ...

  9. Logstash入门简介

    Logstash入门简介 介绍 Logstash是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到最喜欢的存储库中(我们的存储库当然是ElasticSearch) ...

最新文章

  1. [设计模式]外观模式
  2. mybatis mysql rownum_MyBatis怎样实现MySQL动态分页?
  3. JavaEE笔记(五)
  4. 员工之间可不可以交流工资收入?
  5. OpenCV使用Facemark API
  6. InnoDB 引擎独立表空间 innodb_file_per_table
  7. java set 对象去重_JAVA对象去重
  8. python中变量的命名和关键字和变量的命名规则
  9. JSON转换工具---jackson
  10. 【HDU - 5744 】Keep On Movin (回文串性质,贪心思维,不是水题)
  11. 基于GCN的推荐该怎么搞?
  12. centos dns服务器_用 OpenStack Designate 构建一个 DNS 即服务(DNSaaS) | Linux 中国
  13. 《重构》阅读笔记-代码的坏味道
  14. Java设计模式之——代理设计模式
  15. Word 中文编号标题与数字编号题注
  16. [Ubuntu] 二、安卓模拟器
  17. word将空格替换为逗号
  18. cadence allegro - PCB线路敷铜渲染
  19. 微信小程序云开发—校园动物图鉴
  20. 用计算机专业怼人,专业示范,教你如何用所学专业知识“怼人”

热门文章

  1. docker 必然用到的一些指令
  2. 指针:调用自定义排序函数sort,对输入的n个数进行从小到大输出。
  3. 为自增(++)自减(--)运算符正名
  4. Servlet、Tomcat、 SpringMVC 之间的关系
  5. HashMap(Java)
  6. C语言再学习 -- 循环语句
  7. Bit-Z为什么成为熊市之光?
  8. Android截屏方法总结
  9. [Android]你不知道的Android进程化(2)--创建进程
  10. 全能HOOK框架 JNI NATIVE JAVA ART DALVIK