前文我们了解了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. route和过滤器的基础知识

    过滤器 1.局部过滤器 在当前组件内部使用过滤器(对某些数据进行装饰) //声明 filters:{ '过滤器的名字':function(val,a,b){ //a 就是will ,val就是当前的数 ...

  2. JetBrain破解

    https://blog.csdn.net/u014044812/article/details/78727496 https://jetlicense.nss.im/ https://zhile.i ...

  3. 【平台开发】— 2.前端:vue-element-admin

    前端我虽然没怎么写过,但也并不陌生.之前做web自动化,网页结构没少看,html,css,js也都断断续续了解过. 如果从空白开始写,肯定还是需要花不少时间的. 好在网上有了不少成熟的后台系统的前端脚 ...

  4. 基于Celery在多台云服务器上实现分布式

    起源 最近参加公司里的一个比赛,比赛内容里有一项是尽量使用分布式实现项目.因为项目最终会跑在jetsonnano,一个贼卡的开发板,性能及其垃圾.而且要求使用python? 找了很多博客,讲的真的是模 ...

  5. 面试【JAVA基础】阻塞队列

    1.五种阻塞队列介绍 ArrayBlockingQueue 有界队列,底层使用数组实现,并发控制使用ReentrantLock控制,不管是插入操作还是读取操作,都需要获取锁之后才能执行. Linked ...

  6. Codeforces1348 题解

    AC代码连接 A Phoenix and Balance 显而易见,将前\(\frac{n}{2}-1\)个和最后1个分为1组,剩下的1组即为最优方案. B Phoenix and Science 这 ...

  7. Java实现内嵌浏览器

    创建项目 ---->   导入需要的jar ---->  代码实现 需要的jar: https://pan.baidu.com/s/1MEZ1S0LnKSMGQm24QWgmCw 代码: ...

  8. pytest测试框架 -- assert断言和fixture固件

    一.断言 (1)使用assert语句进行断言 # test_run.py @pytest.mark.assert def test_assert(self): r = requests.get(&qu ...

  9. get、post请求方式在jmeter中使用步骤

    jmeter:性能测试工具,压测 一.jmeter工具测试接口时使用步骤: 1.测试计划右键--添加--Threads(Users)--线程组(线程数就是并发数) 2.线程组右键--Sampler-- ...

  10. PHP面试总结(转)

    PHP面试总结   从8月15号来到北京一直到今天,一月有余.来的这段时间一直准备笔试面试,大大小小的公司,乱七八糟面了10多家,近期才安顿下来.面试的这段时间感觉自己成长了不少.初来到这个陌生的城市 ...