前文我们聊解了什么是elk,elk中的elasticsearch集群相关组件和集群搭建以及es集群常用接口的说明和使用,回顾请查看考https://www.cnblogs.com/qiuhom-1874/p/13758006.html;今天我们来了解下ELK中的日志收集器logstash;

  logstash的工作原理类似Linux里的rsyslog,首先logstash会有一个数据输入源,也就是logstash去哪里采集数据,它的采集数据来源很多,比如从文件中采集,从某个tcp/udp端口采集,从redis的消息队列中采集,kafka啊、标准输入等等;它和rsyslog不同的是,rsyslog是把日志数据从一个地方转到另一个地方,中间不会去处理日志的格式,采集回来是什么样就是什么样;而logstash不一样,logstash它可以把采集回来的日志做格式化,以不同的编码形式向外输出;比如把nginx的日志采集回来,它可以以json格式输出;同时它还可以处理采集回来的日志,比如忽略某些字段的输出,把原有日志格式做切分;把原来不是json格式的日志,通过输出规则转换为json格式的日志;总体流程图如下

  提示:以上流程图主要表示logstash采集数据和处理数据内部的一个流程;从上面的流程不难想象,logstash就是把一个数据采集回来,通过内部定义的处理规则,然后通过output规则输出到指定地方的一个插件;

  安装logstash

  logstash的运行方式有两种,第一种以agint的方式运行在数据源所在服务器上采集数据,然后输入到指定地方;第二种是以server方式独立运行在一个服务器上,接受filebeat从数据源发送过来的数据,然后在输出到其他地方;logstash的运行以来jdk,所以首先要在运行jdk的服务器上安装jdk;logstash的版本最好同ELK中的其他组件版本一样;

  安装jdk

yum install -y java-1.8.0-openjdk-devel

  导出JAVA_HOME环境变量

  下载logstash-6.8.12.rpm包

[root@node03 ~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.8.12.rpm
--2020-10-02 15:01:14-- https://artifacts.elastic.co/downloads/logstash/logstash-6.8.12.rpm
Resolving artifacts.elastic.co (artifacts.elastic.co)... 151.101.230.222, 2a04:4e42:36::734
Connecting to artifacts.elastic.co (artifacts.elastic.co)|151.101.230.222|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 177059640 (169M) [application/octet-stream]
Saving to: ‘logstash-6.8.12.rpm’ 100%[==========================================================================>] 177,059,640 136MB/s in 1.2s 2020-10-02 15:01:15 (136 MB/s) - ‘logstash-6.8.12.rpm’ saved [177059640/177059640]
[root@node03 ~]#

  安装logstash-6.8.12.rpm

[root@node03 ~]# ll
total 172912
-rw-r--r-- 1 root root 177059640 Aug 18 19:41 logstash-6.8.12.rpm
[root@node03 ~]# yum install ./logstash-6.8.12.rpm
Loaded plugins: fastestmirror
Examining ./logstash-6.8.12.rpm: 1:logstash-6.8.12-1.noarch
Marking ./logstash-6.8.12.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package logstash.noarch 1:6.8.12-1 will be installed
--> Finished Dependency Resolution Dependencies Resolved ===================================================================================================================================
Package Arch Version Repository Size
===================================================================================================================================
Installing:
logstash noarch 1:6.8.12-1 /logstash-6.8.12 294 M Transaction Summary
===================================================================================================================================
Install 1 Package Total size: 294 M
Installed size: 294 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 1:logstash-6.8.12-1.noarch 1/1
Using provided startup.options file: /etc/logstash/startup.options
/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/pleaserun-0.0.31/lib/pleaserun/platform/base.rb:112: warning: constant ::Fixnum is deprecated
Successfully created system startup script for Logstash
Verifying : 1:logstash-6.8.12-1.noarch 1/1 Installed:
logstash.noarch 1:6.8.12-1 Complete!
[root@node03 ~]#

  提示:logstash安装生成的文件超级多,其中主配置文件是/etc/logstash/lostash.yml,配置日志收集规则、过滤规则、输出规则的文件通常放在/etc/logstash/conf.d/目录下以.conf结尾的文件;其实主配置文件基本不用动,我们直接在/etc/logstash/conf.d/目录下编辑日志收集规则配置文件,然后启动logstash即可;

  示例:编写配置文件,定义logstash从标准输入收集数据,输出到标准输出;

[root@node03 ~]# cat /etc/logstash/conf.d/stdin-stdout.conf
input {
stdin {}
} output {
stdout {}
}
[root@node03 ~]#

  提示:logstash数据收集配置文件格式是input {}  output{},其中input 用来定义数据源输入的配置,其中里面stdin {}表示使用标准输入插件采集数据;同样output用于定义数据输出的,stdout表示把input里定义的数据采集采集到的数据输出到output里定义的输出位置;以上配置就表示把标准输入采集到数据,输出到标准输出;

  检查配置文件语法是否正确

  提示:-f用于指定配置文件,-t表示检查指定配置文件的语法是否正确;configuration ok表示指定配置文件语法正确;

  验证:启动logstash,在标准输入中输入数据,看看是否会把我们输入的数据输出到标准输出呢?

  提示:可以看到当我们指定logstash以/etc/logstash/conf.d/stdin-stdout.conf配置文件启动,在标准输入中输入了hello world,它输出了一个json格式的信息,其中message字段就是我们输入的内容;它这个默认输出就是用的rubydebug的格式向外输出;当然我们可以在输出里用codec来指定输出以那种格式输出;

  示例:指定输出格式用json格式输出

  验证:启动logstash,看看输出是否是json格式呢?

  提示:可以看到当我们在配置文件中指定输出编码是json格式以后,启动logstash看到logstash输出格式就是以json格式输出了;

  示例:配置logstash从文件中采集数据,输出到标准输出,输出格式为rubydebug

  提示:以上配置表示从/var/log/test.log中采集数据,开始采集位置上文件最开始处,类型为test.log,输出以rubydebug格式输出到标准输出;

  验证:以/etc/logstash/conf.d/file-stdout.conf启动logstash,看看完test.log中追加内容,它是否会输出到标准输出呢?

  提示:现在启动logstash,可以看到标准输出上没有输出内容,原因是我们指定的文件现在没有数据,所以它没有什么数据采集;

  向/var/log/test.log中追加数据,看看在标准输出中是否会有对应的内容以我们在配置文件中指定的格式输出呢?

  提示:可以看到我们在另外一个终端向/var/log/test.log中追加数据,在标准输出中可看到logstash把对应文件中的数据采集到,并输出到标准输出;

  示例:收集httpd的日志到es集群中;

  启动logstash,然后访问httpd,看看对应的es集群中是否有日志生成?

  提示:启动logstash以后,可以看到对应打印的日志,已经将我们的配置读取并应用了;

  访问httpd,然后到es上查看对应的日志信息是否有?

  提示:可以看到在es集群中有对应的index生成,并且里面内容也是我们访问httpd的日志;从上面收集的日志来看,它是把日志内容当作message字段一个字段输出,通常这不是我们想要的结果,这样收集的日志,对我们来说没有太大的意义;我们需要让logstash帮我们处理,把日志内容切分成多个字段,然后再输出;

  示例:配置logstash切分日志,然后保存到es集群

  提示:logstash处理日志依赖filter插件,其中grok是filter的核心插件,它内置了很多正则表达式,对常用的的日志做精准匹配;以上filter插件主要做了两件事,第一把message字段通过内部的HTTPD_COMBINDLOG做了字段切分;第二件事,把原有的message字段删除,避免同一数据多次收集;

  验证:检查配置文件语法,然后启动logstash

  启动logstash

  清空原有访问日志,然后访问httpd

  在es上查看收集的日志

  提示:可以看到在es上收集到的日志,就把message字段拆分成不同的字段的json格式了;

日志分析平台ELK之日志收集器logstash的更多相关文章

  1. 日志分析平台ELK之日志收集器filebeat

    前面我们了解了elk集群中的logstash的用法,使用logstash处理日志挺好的,但是有一个缺陷,就是太慢了:当然logstash慢的原因是它依赖jruby虚拟机,jruby虚拟机就是用java ...

  2. 日志分析平台ELK之日志收集器logstash常用插件配置

    前文我们了解了logstash的工作流程以及基本的收集日志相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13761906.html:今天我们来了解下l ...

  3. 集中式日志分析平台 - ELK Stack - 安全解决方案 X-Pack

    大数据之心 关注  0.6 2017.02.22 15:36* 字数 2158 阅读 16457评论 7喜欢 9 简介 X-Pack 已经作为 Elastic 公司单独的产品线,前身是 Shield, ...

  4. 日志分析平台ELK之搜索引擎Elasticsearch集群

    一.简介 什么是ELK?ELK是Elasticsearch.Logstash.Kibana这三个软件的首字母缩写:其中elasticsearch是用来做数据的存储和搜索的搜索引擎:logstash是数 ...

  5. 大数据时代日志分析平台ELK的搭建

    A,首先说说ELK是啥,  ELK是ElasticSearch . Logstash 和 Kiabana 三个开源工具组成.Logstash是数据源,ElasticSearch是分析数据的,Kiaba ...

  6. 日志分析平台ELK之前端展示kibana

    之前的博客一直在聊ELK集群中的存储.日志收集相关的组件的配置,但通常我们给用户使用不应该是一个黑黑的shell界面,通过接口去查询搜索:今天我们来了ELK中的前端可视化组件kibana:kibana ...

  7. ELK日志分析平台

    ELK日志分析平台 ELK(1):  ELK-简介 ELK(2):  ELK-安装环境和安装包 ELK(3):  ELK-安装elasticsearch ELK(4):  ELK-安装logstash ...

  8. 日志分析工具ELK(五)

    八.Kibana实践 选择绝对时间和相对时间 搜索 还可以添加相关信息 自动刷新页面时间,也可以关闭 创建图像,可视化 编辑Markdown,创建一个值班联系表 值班联系表 保存 再创建一个饼图;查看 ...

  9. 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群

    笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...

随机推荐

  1. 8点了解Java服务端单元测试

    一. 前言 单元测试并不只是为了验证你当前所写的代码是否存在问题,更为重要的是它可以很大程度的保障日后因业务变更.修复Bug或重构等引起的代码变更而导致(或新增)的风险. 同时将单元测试提前到编写正式 ...

  2. 断言函数-RF

    测试用例的目的是要验证一些操作否符合我们的预期结果,所以在测试用例中,断言函数是必不可少的一项.我们做的每一步操作都会有预期的结果,为了保证操作得到的结果符合预期,我们需要在测试用例中添加断言,来保证 ...

  3. 力扣Leetcode 461. 汉明距离

    给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换. 完成所有替换操作后,请你返回这个数组. 示例: 输入:arr = [17,18,5,4,6,1] 输 ...

  4. 在Spring中拦截器的使用

    Filter Filter是Servlet容器实现的,并不是由Spring 实现的 下面是一个例子 import java.io.IOException; import javax.servlet.F ...

  5. EXCEL 引用autocad vba,自动加载其类型库

    Sub AutoADDAutoCADTypeLib() Dim Ref As Variant Dim hasAutoTypeLib As Boolean, hasAXDBLib As Boolean, ...

  6. 【学习中】Unity Schedule

    章节 内容 签到 第一课:界面介绍 第一讲 编辑器工作区 4月27日 第二课:资源管理 第二讲 资源及资源类型 4月27日 第三讲 资源管理:模型和角色动画的输出设置(上) 4月27日 第四讲 资源管 ...

  7. Namomo Cockfight Round 5

    AC代码 A. Number 假设\(n_i\)为十进制数\(n\)的第\(i\)位上的数字,那么\(\max_{i}n_i\)即为答案. B. Mod 用BFS的方法计算可以以\(O(p)\)的复杂 ...

  8. C#知识点:I/O

    一.什么是I/0流? 英文翻译:Input/Output,在程序里简单的理解为读写数据操作数据的意思.流操作是为了解决体积大数据占用太多的内存,就是分段进行操作.就跟我们吃饭一样,一口一口的吃,还没见 ...

  9. request的各种方法

    protected void doPost(HttpServletRequest request, HttpServletResponse response)        throws Servle ...

  10. 虚拟机:主机能ping通虚拟机,虚拟机不可以ping通主机

    解决办法: 1.虚拟机可使用nat模式 2.虚拟机使用桥接模式,并且和主机再同一个ip段内 3.主机的防火墙关闭(不推荐使用,主机不安全) 4.主机中有个ICMPv4-In这个规则需要启用: 打开防火 ...