添加Logstash Filter以改进集中化日志记录机制
来源:互联网 发布:实时人口迁徙大数据 编辑:程序博客网 时间:2024/05/21 22:40
提供:ZStack云计算
系列教程
本教程为在Ubuntu 14.04上利用ELK堆栈(Elasticsearch、Logstash与Kibana)实现集中化日志记录系列五篇中的第三篇。
本教程为在CentOS 7上利用Logstash与Kibana实现集中化日志记录系列五篇中的第三篇。
内容简介
Logstash是一款强大的日志集中与分析工具,其能够帮助我们对环境拥有更为明确的宏观把握能力。要进一步提升ELK堆栈的实际效果,我们可以收集重要应用日志并利用filter实现日志数据结构化,从而确保数据内容的可读性与可查询性。我们将利用“grok”模式构建filter,并将日志内的数据解析为可用信息。
本教程为如何在Ubuntu 14.04上安装Elasticsearch、Logstash及Kibana 4的后续文章,主要讨论如何添加Logstash filter以处理多种常见应用日志。
先决条件
要完成今天的教程,大家请参阅如何在Ubuntu 14.04上安装Elasticsearch、Logstash与Kibana 4一文并完成相关安装及配置工作。
ELK服务器配置
- Logstash安装于/opt/logstash
- Logstash配置文件位于/etc/logstash/conf.d
- 已经创建名为02-beats-input.conf的input文件
- 已经创建名为30-elasticsearch-output.conf的output文件
大家还需要在Logstash服务器上创建模式目录,具体命令如下:
- sudo mkdir -p /opt/logstash/patterns- sudo chown logstash: /opt/logstash/patterns
客户服务器配置
- 按照上篇教程中[设置Filebeat部分](https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04#set-up-filebeat-(add-client-servers)的引导完成操作。
如果大家的设置有所不同,也可调查本教程的具体细节以配合自己的实际环境。
关于Grok
Grok负责解析文本模式,使用正则表达式并将其分配至标识符。
Grok模式的语法结构为%{PATTERN:IDENTIFIER}。每个Logstash filter包含多种能够与日志信息相匹配并将其分配给不同标识符的grok模式,而这也正是让日志内容转化为结构化信息的关键所在。
要了解更多与grok相关的细节,请参阅Logstash grok页面以及Logstash默认模式列表。
如何使用本教程
以下各主要部分都将包含大量配置细节,其亦是对特定应用进行日志收集与过滤的关键。对于每款目标应用,大家都需要对客户服务器(Filebeat)及Logstash服务器者配置变更。
Logstash Patterns部分
如果存在Logstash Patterns部分,其将包含能够被添加至Logstash服务器上/opt/logstash/patterns处新文件内的grok模式。通过这种方式,大家即可在Logstash filter中使用新的模式。
Logstash Filter部分
Logstash Filter部分将包含可被添加至新文件中的filter,其与input与output配置文件共同存在于Logstash服务器的/etc/logstash/conf.d当中。该filter负责会检测Logstash服务器如何解析相关日志文件。请记得在添加新filter后重启Logstash服务以应用变更。
Filebeat Prospector部分
Filebeat Prospectors用于指定哪些日志信息将被发送至Logstash。更多prospector配置信息可直接添加至/etc/filebeat/filebeat.yml文件内的prospectors部分之后:
Prospector示例
filebeat:# List of prospectors to fetch data.prospectors:- - /var/log/secure - /var/log/messages document_type: syslog- paths: - /var/log/app/*.log document_type: app-access...
在以上示例中,红色高亮部分代表一个prosepctor,其将/var/log/app/内的所有app-access类型.log文件发送至Logstash。在做出变更后,必须重启Filebeat以应用变更。
现在大家已经了解如何使用这篇教程了,接下来的部分将说明如何收集并过滤应用日志!
应用: Nginx
Logstash Patterns: Nginx
Nginx日志模式并非Logstash的默认模式之一,因此我们需要手动添加Nginx模式。
在ELK服务器上创建一个名为nginx的新模式文件:
- sudo vi /opt/logstash/patterns/nginx
而后插入以下行:
Nginx Grok PatternNGUSERNAME [a-zA-Z\.\@\-\+_%]+NGUSER %{NGUSERNAME}NGINXACCESS %{IPORHOST:clientip} %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent}
保存并退出。NGINXACCESS模式将解析数据并将其分配至多个标识符(例如clientip、ident以及auth等)。
接下来,将模式文件提交至logstash:
- sudo chown logstash: /opt/logstash/patterns/nginx
Logstash Filter: Nginx
在ELK服务器上创建一个新的filter配置文件,名为11-nginx-filter.conf:
- sudo vi /etc/logstash/conf.d/11-nginx-filter.conf
而后添加以下filter:
Nginx Filterfilter {if [type] == "nginx-access" {grok { match => { "message" => "%{NGINXACCESS}" }}}}
保存并退出。请注意,此filter将试图利用NGINXACCESS模式匹配nginx-access类信息。
现在重启Logstash以重载此配置:
- sudo service logstash restart
Filebeat Prospector: Nginx
在Nginx服务器上打开filebeat.yml配置文件:
- sudo vi /etc/filebeat/filebeat.yml
在filebeat部分添加以下Prospector以将nginx-access类Nginx访问日志发送至Logstash服务器:
Nginx Prospector- paths: - /var/log/nginx/access.log document_type: nginx-access
保存并退出。重载Filebeat以应用变更:
- sudo service filebeat restart
现在我们的Nginx日志已经能够正确进行收集与过滤了!
应用: Apache HTTP Web服务器
Apache的日志模式属于Logstash默认模式之一,因此我们可以轻松为其设置filter。
请注意:如果大家使用红帽Linux版本,例如CentOS,那么日志将位于/var/log/httpd而非/var/log/apache2。
Logstash Filter: Apache
在ELK服务器上创建名为12-apache.conf的新filter配置文件:
- sudo vi /etc/logstash/conf.d/12-apache.conf
而后添加以下filter:
Apache Filterfilter {if [type] == "apache-access" {grok { match => { "message" => "%{COMBINEDAPACHELOG}" }}}}
保存并退出。请注意,此filter将尝试利用COMBINEDAPACHELOG模式(Logstash默认模式之一)匹配apache-access类信息。
现在重启Logstash以重载配置:
- sudo service logstash restart
Filebeat Prospector: Apache
在Apache服务器上打开filebeat.yml配置文件:
- sudo vi /etc/filebeat/filebeat.yml
在filebeat部分添加以下Prospector,从而将Apache日志作为apache-access类型发送至Logstash服务器:
Apache Prospector- paths: - /var/log/apache2/access.log document_type: apache-access
保存并退出。重载Filebeat以应用变更:
- sudo service filebeat restart
现在我们的Apache日志将得到收集与过滤!
总结
大家可以对各种类型的日志者收集与解析,各位不妨针对其它日志文件编写自己的filter与pattern。
如果大家还不太清楚如何使用Kibana,请参阅如何使用Kibana可视化机制与仪表板一文。
本文来源自DigitalOcean Community。英文原文:Adding Logstash Filters To Improve Centralized Logging By Mitchell Anicas
翻译:diradw
- 添加Logstash Filter以改进集中化日志记录机制
- 如何在Ubuntu 14.04上利用Logstash与Kibana实现日志信息集中化
- Logstash学习记录--logstash input output filter 插件总结
- Filter(记录日志)
- logstash处理文件进度记录机制
- logstash过滤器filter grok多种日志匹配使用心得
- 集中化Linux日志管理系统
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(四) logstash codec和filter 配置
- 分布式日志集中化(tomcat + rsyslog + logrotate + centos)
- RHEL 6 如何搭建集中化日志服务器
- Logstash Filter 配置
- Logstash学习--Filter
- logstash filter插件
- logstash filter 学习
- Logstash filter插件开发
- Logstash Filter学习
- java web笔记之Filter日志记录
- IO流以日志文件记录异常
- 初次使用CKeditor replace使用方法
- hive 数据倾斜
- matlab显示文件夹下的多副图像
- IE下css常见问题总结及解决
- 饼图中扇形点击事件方法
- 添加Logstash Filter以改进集中化日志记录机制
- 导出手机log文件
- 介绍PL/SQL Developer
- HTTP 请求头中的 X-Forwarded-For(XFF)
- 历届试题 连续奇数和
- 【HTML】HTML字符实体
- Java中String、StringBuffer和StringBuilder的区别
- 计算机行业的数理化
- 开发过程遇到的中文乱码问题如何解决