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

  先说filter插件吧,继续上一篇博客的环境,我们配置logstash收集httpd的访问日志;

  示例:配置logstash收集日志的时间戳为日志生成时的时间戳

  未配置date过滤器规则时,输出的文档信息是

  提示:未配置date过滤器规则时,生成的文档中的时间戳信息是不一样的;@timestamp是指收集日志时的时间,timestamp是日志生成时的时间;

  配置date过滤器规则,让生成日志的时间替换收集日志时的时间

  提示:以上红框中的配置表示把timestamp字段的时间替换@timestamp字段的时间,时间格式为标准的格林威治时间;

  验证:启动logstash,看看输出的日志中的@timestamp字段的时间是否还是收集日志的时间呢?

  提示:现在收集日志的时间就变成了日志生成时的时间了;只不过一个是格林威治标准时间,一个是东八区时间,两个时间相差8小时;这样配置以后,对于timestamp这个字段就显得多余,我们可以使用remove_field去删除timestamp字段即可;如下

  示例:配置logstash收集httpd访问日志,基于clientip做地理位置分析

  下载GeoLite2-City数据库到本地,这个数据库可以去maxmind官方去下载即可,我这里已经提前下载好了,直接传到服务器上即可;

  提示:以上主要把GeoLite2-City包上传到指定目录,然后解压,把GeoLite2-City.mmdb数据库文件在指定目录做了一个软连接;这样做的原因是日后方便更新数据库;

  配置logstash过滤规则,让其能够基于httpd的访问日志中的clientip做地理位置分析

  提示:以上配置表示使用geoip过滤器插件,其中source表示以那个字段的值作为ip地址分析,target表示分析后的结果保存在那个字段上,database表示用那个数据库文件;

  验证:启动logstash,看看现在输出的文档是否有geoip字段?里面是否记录了clientip的ip地址信息呢?

  提示:可以看到配置了geoip过滤器插件以后,对应的文档中的geoip字段就把对应的clientip的位置信息分析后,加入到文档中了;这样经过logstash分析以后,我们就可以在kibana中配置区域地图来查看访问我们网站的客户端分布在世界地图的那些位置;

  示例:修改字段名称

  提示:mutate这个过滤器插件,主要对字段做操作,支持对字段进行增删查改;比如对字段重命名,如上配置;

  验证:启动logstash,看看现在输出的文档中的geoip是否更改为clientipInfo了?

  提示:可以看到原来的geoip字段名称已经修改成clientipInfo了;对于这个插件的用法还有其他操作和配置,可以去参考官方文档中的说明进行配置;

  示例:将logstash收集的数据日志数据存入redis中

  准备redis服务器,然后配置redis登录认证

[root@node04 ~]# yum install redis -y
Loaded plugins: fastestmirror
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/2): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(2/2): epel/x86_64/primary_db | 6.9 MB 00:00:01
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package redis.x86_64 0:3.2.12-2.el7 will be installed
--> Processing Dependency: libjemalloc.so.1()(64bit) for package: redis-3.2.12-2.el7.x86_64
--> Running transaction check
---> Package jemalloc.x86_64 0:3.6.0-1.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved =====================================================================================================================
Package Arch Version Repository Size
=====================================================================================================================
Installing:
redis x86_64 3.2.12-2.el7 epel 544 k
Installing for dependencies:
jemalloc x86_64 3.6.0-1.el7 epel 105 k Transaction Summary
=====================================================================================================================
Install 1 Package (+1 Dependent package) Total download size: 648 k
Installed size: 1.7 M
Downloading packages:
(1/2): jemalloc-3.6.0-1.el7.x86_64.rpm | 105 kB 00:00:00
(2/2): redis-3.2.12-2.el7.x86_64.rpm | 544 kB 00:00:00
---------------------------------------------------------------------------------------------------------------------
Total 1.3 MB/s | 648 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : jemalloc-3.6.0-1.el7.x86_64 1/2
Installing : redis-3.2.12-2.el7.x86_64 2/2
Verifying : redis-3.2.12-2.el7.x86_64 1/2
Verifying : jemalloc-3.6.0-1.el7.x86_64 2/2 Installed:
redis.x86_64 0:3.2.12-2.el7 Dependency Installed:
jemalloc.x86_64 0:3.6.0-1.el7 Complete!
[root@node04 ~]#

  配置redis监听在本机所有地址的6379端口,并给redis设置认证口令

  启动redis

  提示:可以看到redis使用我们设置的密码是可以正常登录到redis服务器,到此redis就准备好了;

  配置logstash将收集的日志输出到redis的5号库中

  提示:将logstash收集的日志输出到redis,需要用到输出插件redis,其中我们必须指定redis的主机地址,端口,密码,数据库,以及key和data_type;data_type是指定存放到redis是一那种数据结构存储,list表示存储为列表;我们知道列表有一个属性就是从列表取出数据以后,列表里对应的数据就会消失,这样一来当有多个logstash在redis中取数据时不会取到重复数据;

  验证配置文件语法

  启动logstash,然后去redis中验证,看看5号库中是否有我们定义key生成,对应key中是否有日志数据?

  去redis上查看5号库的情况

  提示:在redis的5号库中可以看到logstash上配置的key的名称,对应key里有数据;

  示例:配置logstash从redis中读数据

  redis环境还是上面的环境,我们重新开一个服务器,把logstash安装上,logstash的安装请参考上一篇博客https://www.cnblogs.com/qiuhom-1874/p/13761906.html

  提示:以上配置我们需要在input里配置,用redis输入插件,并明确指定redis的主机,端口,密码,数据库,key,以及数据类型;上面在node05上配置logstash将从redis的5号库采集数据,然后将数据输出到/root/目录下的test.log中;

  验证配置文件语法

  启动logstash,然后去node05上看对应目录下的文件是否有数据产生?redis对应库里的数据是否有减少?

  提示:可以看到启动logstash,它启动了一个线程去redis中读数据,然后有启动了一个线程把数据写到/root/test.log中;

  验证:在node05上查看/root目录下是否有test.log生成?对应文件中是否有内容?

  提示:可以看到node05的/root目录下有test.log生成,并且里面也有数据,数据也是从redis里拿的日志数据;

  验证:到node04上的redis中查看对应库中的数据是否在减少?

  提示:在redis的5号库可以看到logstash在取数据,对应列表的数据在依次减少,最后当logstash把对应列表数据取完以后,对应的列表也就随之删除;

  示例:配置logstash收集haproxy发送给rsyslog的日志

  安装haproxy

[root@node03 ~]# yum install haproxy
Loaded plugins: fastestmirror
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package haproxy.x86_64 0:1.5.18-9.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved =====================================================================================================================
Package Arch Version Repository Size
=====================================================================================================================
Installing:
haproxy x86_64 1.5.18-9.el7 base 834 k Transaction Summary
=====================================================================================================================
Install 1 Package Total download size: 834 k
Installed size: 2.6 M
Is this ok [y/d/N]: y
Downloading packages:
haproxy-1.5.18-9.el7.x86_64.rpm | 834 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : haproxy-1.5.18-9.el7.x86_64 1/1
Verifying : haproxy-1.5.18-9.el7.x86_64 1/1 Installed:
haproxy.x86_64 0:1.5.18-9.el7 Complete!
[root@node03 ~]#

  配置haproxy将日志发送给rsyslog

  配置rsyslog把local2的日志发送给node05的517端口(这个端口是一个任意端口,只要在node05上不冲突就好)

  重启rsylog和haproxy

  配置node05上的logstash,使用输入插件rsyslog监听517端口

  验证配置文件语法

  启动logstash

  提示:可以看到logstash启动了两个线程监听了udp的517端口和tcp517端口

  访问haproxy

  看看对应的标准输出中是否会打印haproxy的日志呢?

  提示:可以看到在node05的标准输出上能够看到访问haproxy的日志打印;

  示例:配置logstash收集tcp某个端口的数据

  验证配置文件语法,没有问题就直接启动logstash

  验证:在其他主机上利用nc向node05的52113发送数据,看看node05上是否会打印我们发送到信息内容?

  提示:如果没有nc命令,直接使用yum install nc 即可;

  提示:在node05上是能够看到从node01发送过来的消息;

  好了,以上是logstash的常用插件的配置,当然还有很多很多,用到那个不会可以去官方文档查找相关插件文档说明进行配置即可;官方文档https://www.elastic.co/guide/en/logstash-versioned-plugins/current/index.html

日志分析平台ELK之日志收集器logstash常用插件配置的更多相关文章

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

    前文我们聊解了什么是elk,elk中的elasticsearch集群相关组件和集群搭建以及es集群常用接口的说明和使用,回顾请查看考https://www.cnblogs.com/qiuhom-187 ...

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

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

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

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

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

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

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

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

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

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

  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. Intermediate English Book 1

    List x1.0 x1.5 Lesson 1 Reading Lesson 1 Details Lesson 2 Dialogue Lesson 2 Details Lesson 3 Reading ...

  2. 入门的艰难——关于LR的使用

    这年头做一件事真是TM不容易啊.做测试也很纠结,不是都说商业工具很强大么,我去,这个不支持那个不支持的,这还有什么搞头,还非要按照你说的这个版本的才行,高一点的就crash了,结果连最初级的录制脚本都 ...

  3. Spine学习九 - 冰冻效果

    想象这样一个效果,一个人被冰霜攻击命中,然后这个人整个就被冰冻了,那么spine动画要如何实现这个效果呢? 1.首先需要一个Spine动画,这个动画应该是相对静止的,因为人物已经被冰冻了,那么这个人儿 ...

  4. Ignatius and the Princess IV (水题)

    "OK, you are not too bad, em... But you can never pass the next test." feng5166 says.  &qu ...

  5. [AngstromCTF 2019]Cookie Cutter

    最近看到了一个国外高中生的CTF比赛,翻了一下往年的例题,发现有一道关于jwt session伪造的题比较有意思,记录一下 题目简介中给出了我们题目的地址和后端处理的源码,看看源码先代码审计一下: c ...

  6. Activiti7 网关(包含网关)

    什么是包含网关? 包含网关可以看做是排他网关和并行网关的结合体,和排他网关一样,你可以在外出顺序流上定义条件,包含网关会解析他们,但是主要的区别是包含网关可以选择多于一条顺序流,这和并行网关是一样的 ...

  7. 取得min和max之间包括端点的随机整数

    产生随机数的函数用处不少,写一个放博客里备用,函数如下: /** * get a random integer between min and max * @param min * @param ma ...

  8. python基础:日志模块logging,nnlog

    python里面用来打印日志的模块,就是logging模块,logging模块可以在控制台打印日志,也可以写入文件中.也可以两个操作都执行 1.控制台输入 import logging#导入模块 lo ...

  9. end的用法——print中加end=可以不换行展示

    A=['hello','world',1,2,3]for i in A: print('正常输出i的值:',i) #打印出来的是换行展示hello world 1 2 3 print('加入sep后i ...

  10. String的intern方法的使用场景

    在讲intern方法前,我们先简单回顾下Java中常量池的分类. 常量池的分类 Java中常量池可以分为Class常量池.运行时常量池和字符串常量池. 1. Class文件常量池 在Class文件中除 ...