前文我们聊解了什么是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. 搜索会抓取网站域名的whoise信息吗

    http://www.wocaoseo.com/thread-309-1-1.html 网站是否在信产部备案,这是不是会成为影响网站收录和排名的一个因素?百度是否会抓取域名注册人的相关whois信息吗 ...

  2. 使用echarts 轻松搞定各种后台数据统计

    之前接到老大一个需求,需要将公私生态系统构建一个日志系统,统计公有云.私有云还有其他工具平台(如禅道,jenkins)的用户登录信息,并使用图标的形式动态显示,之前刚入门的时候接触过echarts 这 ...

  3. 【Android】Android开发实现带有反弹效果,仿IOS反弹scrollview详解教程

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现 ...

  4. 【已学完】UGUI Schedule

    章节 内容 签到 Unity4.6 New UI(UGUI) 1.UGUI概述与Canvas画布介绍(一) 5月14日 2.Canvas画布介绍(二) 5月14日 3.Text控件 5月14日 4.I ...

  5. deepin20 安装英伟达闭源驱动

    第一步.安装深度的"显卡驱动器" 在deepin v20 中默认没有显卡驱动管理器,需要命令行安装,命令如下(刚开始一直出错,当我第一次打开应用商店,就可以安装了,好神奇): su ...

  6. DVWA_sql injection(low)

    这里主要记录下做题时的思路以及步骤,不查看源码也不对源码进行分析.(我这个dvwa是一个在线靶场,所以我也不确定是否与本地靶场有些许出入) 1.Low 将难度调为Low级别后,来到如下界面 首先输入一 ...

  7. Activiti7 使用监听器分配任务人员

    视屏中老师说,一般没有人用但是我还是想试试 但是当我画图的时候,发现IDEA的那个listener监听器点不开,不知道是不是我下载的插件不对还是什么原因,所以就亲自写了,看看到时候不行就下载一个Ecl ...

  8. Myeclipse 连接数据库(jdbc)

    1.找到DataBase Explorer,如下图所示: 2.点击下图红框内图标,new 3.进入下图界面 如果是JDBC驱动按下图配置: driver name自己起 url一定要注意:jdbc:m ...

  9. 哦!这该死的 C 语言

    前言 C 语言是一门抽象的.面向过程的语言,C 语言广泛应用于底层开发,C 语言在计算机体系中占据着不可替代的作用,可以说 C 语言是编程的基础,也就是说,不管你学习任何语言,都应该把 C 语言放在首 ...

  10. shell 文件判断

    文件判断参数 -e,文件是否存在 -f,文件存在且为普通文件 -d,文件存在且为文件夹 #!/bin/bash [ -e test.sh ] && echo "test.sh ...