日志分析平台ELK之日志收集器logstash
前文我们聊解了什么是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的更多相关文章
- 日志分析平台ELK之日志收集器filebeat
前面我们了解了elk集群中的logstash的用法,使用logstash处理日志挺好的,但是有一个缺陷,就是太慢了:当然logstash慢的原因是它依赖jruby虚拟机,jruby虚拟机就是用java ...
- 日志分析平台ELK之日志收集器logstash常用插件配置
前文我们了解了logstash的工作流程以及基本的收集日志相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13761906.html:今天我们来了解下l ...
- 集中式日志分析平台 - ELK Stack - 安全解决方案 X-Pack
大数据之心 关注 0.6 2017.02.22 15:36* 字数 2158 阅读 16457评论 7喜欢 9 简介 X-Pack 已经作为 Elastic 公司单独的产品线,前身是 Shield, ...
- 日志分析平台ELK之搜索引擎Elasticsearch集群
一.简介 什么是ELK?ELK是Elasticsearch.Logstash.Kibana这三个软件的首字母缩写:其中elasticsearch是用来做数据的存储和搜索的搜索引擎:logstash是数 ...
- 大数据时代日志分析平台ELK的搭建
A,首先说说ELK是啥, ELK是ElasticSearch . Logstash 和 Kiabana 三个开源工具组成.Logstash是数据源,ElasticSearch是分析数据的,Kiaba ...
- 日志分析平台ELK之前端展示kibana
之前的博客一直在聊ELK集群中的存储.日志收集相关的组件的配置,但通常我们给用户使用不应该是一个黑黑的shell界面,通过接口去查询搜索:今天我们来了ELK中的前端可视化组件kibana:kibana ...
- ELK日志分析平台
ELK日志分析平台 ELK(1): ELK-简介 ELK(2): ELK-安装环境和安装包 ELK(3): ELK-安装elasticsearch ELK(4): ELK-安装logstash ...
- 日志分析工具ELK(五)
八.Kibana实践 选择绝对时间和相对时间 搜索 还可以添加相关信息 自动刷新页面时间,也可以关闭 创建图像,可视化 编辑Markdown,创建一个值班联系表 值班联系表 保存 再创建一个饼图;查看 ...
- 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群
笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...
随机推荐
- mybatis逆向工程介绍
项目的model一旦多了起来,复杂了起来,我们很自然的想到使用mybatis的逆向工程来生成相应的pojo和mapper,能节省很多精力. MyBatis Generator(MBG)是 MyBati ...
- mysql再回首
Mysql与Oracle的区别 1.实例区别 Mysql是一个轻量型数据库,开源免费.Oracle是收费的而且价格非常高. Mysql一个实例可以操作多个库,而Oracle一个实例只能对应一个库. M ...
- oracle坑。
char(2)的,后面的有一个空格.删不掉.在plsql里可以正常查.写死的sql在程序也可以正常查. 程序用占位符的形式,不能查出来.只能转成to_number select t.*,t.rowid ...
- 贝塞尔曲线(B-spline)的原理与应用
什么是贝塞尔曲线? 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线. 来源 贝塞尔曲线于1962,由法国工程师皮埃尔·贝塞尔(Pierre Béz ...
- 总结回顾js arr的常见方法以及相关的使用场景(一)
Array对象方法 1.arr.concat() 连接两个或更多的数组,并返回结果. 连接数组中的值 连接两个数组 连接三个数组 2.arr.join() 把数组的所有元素放入一个字符串.元素通过指定 ...
- day48:django前戏之HTTP协议&自定义web框架
目录 1.HTTP协议 1.HTTP协议简介 2.HTTP协议概述 3.HTTP协议工作原理 4.HTTP协议请求方法 5.HTTP协议状态码 6.URL 7.HTTP请求格式 8.HTTP响应格式 ...
- tomcat7升级到tomcat8注意事项
第一点:context.xml配置jndi的参数修改 maxActive 替换为 :maxTotal maxWait 替换为 :maxWaitMillis factory="org.ap ...
- Zabbix Agent升级
最近对Zabbix Server进行了升级,所以陆陆续续对Zabbix Agent也做了升级,下面是这几天工作的一个小结,鉴于经验有限和认知有限等各方面因素,下文很难面面俱到,如有疏漏或不足之处, ...
- CentOS 7/8修改系统运行级别
CentOS 7/8修改系统运行级别 CentOS 5. CentOS 6可以通过修改配置文件/etc/inittab 参数,从而修改系统运行级别,切换系统的runlevel,但是从CentOS ...
- C012:颠倒显示两位数
代码: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int original; do{ printf(&q ...