<$>[备注] 注意: 本教程适用于使用Logstash Forwarder而不是FileBeat的较旧版本的ELK堆栈设置。本教程的最新版本可在添加日志堆叠筛选器以改进Centralized Logging. <$>
简介
Logstash是一个用于集中和分析日志的强大工具,它可以帮助提供和概述您的环境,并识别您的服务器的问题。提高Logstash设置有效性的一种方法是收集重要的应用程序日志,并通过使用筛选器来组织日志数据,以便可以方便地分析和查询数据。我们将围绕grok
模式构建过滤器,这些模式将把日志中的数据解析为有用的信息。
本指南是如何在Ubuntu 14.04上安装Elasticearch1.7、Logstash1.5和Kibana4.1(ELK Stack)》教程的续篇,主要关注为各种常见的应用程序日志添加过滤器。
前提条件
要学习本教程,您必须有一个工作正常的Logstash服务器,并且有一种将日志发送到Logstash的方法。如果您还没有设置Logstash,这里有另一个教程可以帮助您入门:如何在Ubuntu 14.04.上安装Elasticearch1.7、Logstash1.5和Kibana4.1(ELK Stack
Logstash服务器摘要:
- Logstash安装在
/opt/logstash
中 - 您正在从端口5000上的Logstash Forwarder接收日志
- 您的Logstash配置文件位于
/etc/logstash/conf.d
中 - 您有一个名为
01-Lumberjack-input.conf的输入文件
- 您有一个名为
30-lumberjack-output.conf的输出文件
Logstash前瞻性结论:
- 您已在每个应用程序服务器上配置了Logstash Forwarder,以将syslog/auth.log发送到您的Logstash服务器(如上一教程的设置Logstash Forwarder]部分所述)
如果您的设置与我们的假设不同,只需根据您的环境调整本指南即可。
您可能需要通过在Logstash服务器上运行以下命令来创建patterns
目录:
1sudo mkdir -p /opt/logstash/patterns
2sudo chown logstash:logstash /opt/logstash/patterns
关于Grok
Grok的工作方式是解析文本模式,使用正则表达式,并将它们分配给一个标识符。
grok模式的语法是%{PATTERN:IDENTIFIER}
。Logstash过滤器包括一系列grok模式,这些模式将日志消息的各个片段匹配并分配给各种标识符,这就是日志的结构。
要了解有关Grok的更多信息,请访问Logstash Grok page,和Logstash Default Patterns listing.
如何使用本指南
后面的每个主要部分将包括收集和筛选给定应用程序的日志所需的其他配置详细信息。对于要记录和筛选的每个应用程序,您必须在应用程序服务器和Logstash服务器上进行一些配置更改。
Logstash转发器子段
Logstash Forwarder小节与发送其日志的应用程序服务器相关。附加的_FILES_CONFIGURATION应该直接添加到/etc/logstash-forwarder.conf
文件中,紧跟在以下几行之后:
1"files": [
2 {
3 "paths": [
4 "/var/log/syslog",
5 "/var/log/auth.log"
6 ],
7 "fields": { "type": "syslog" }
8 }
确保附加配置在关闭)。必须重新加载Logstash转发器才能使任何更改生效。
Logstash模式子部分
如果有Logstash Patterns子节,它将包含Grok模式,可以添加到Logstash服务器上/opt/logstash/patterns
中的新文件中。这将允许您在Logstash筛选器中使用新模式。
Logstash Filter小节
Logstash筛选器子部分将包括一个筛选器,该筛选器可以添加到Logstash服务器上/etc/logstash/conf.d
中的输入和输出配置文件之间的新文件中。筛选器确定Logstash服务器如何解析相关的日志文件。请记住在添加新筛选器后重新启动Logstash服务器以加载您的更改。
现在您已经了解了如何使用本指南,本指南的其余部分将向您展示如何收集和过滤应用程序日志!
应用:nginx
Logstash Forwarder:Nginx
在您的nginx 服务器上,打开logstash-forwarder.conf
配置文件进行编辑:
1sudo vi /etc/logstash-forwarder.conf
在文件
部分添加以下内容,将nginx访问日志以nginx-access
类型发送到您的Logstash服务器:
1,
2 {
3 "paths": [
4 "/var/log/nginx/access.log"
5 ],
6 "fields": { "type": "nginx-access" }
7 }
保存并退出。重新加载Logstash前转器配置以使更改生效:
1sudo service logstash-forwarder restart
Logstash模式:nginx
Logstash的默认模式中不包含nginx日志模式,因此我们将手动添加nginx模式。
在您的 Logstash服务器 上,新建一个名为nginx
的模式文件:
1sudo vi /opt/logstash/patterns/nginx
然后插入以下几行:
1NGUSERNAME [a-zA-Z\.\@\-\+_%]+
2NGUSER %{NGUSERNAME}
3NGINXACCESS %{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模式解析数据并将其分配给各种标识符(例如,Clientp、ident、auth等)。
接下来,将模式文件的所有权更改为logstash
:
1sudo chown logstash:logstash /opt/logstash/patterns/nginx
Logstash过滤器:nginx
在您的Logstash服务器 上,新建一个名为11-nginx.conf
的过滤配置文件:
1sudo vi /etc/logstash/conf.d/11-nginx.conf
然后添加以下筛选器:
1filter {
2 if [type] == "nginx-access" {
3 grok {
4 match => { "message" => "%{NGINXACCESS}" }
5 }
6 }
7}
保存并退出。请注意,此过滤器将尝试将nginx-Access
类型的消息与上面定义的NGINXACCESS模式进行匹配。
现在重新启动Logstash以重新加载配置:
1sudo service logstash restart
现在我们将收集并过滤您的Nginx日志!
应用:APACHE HTTP Web服务器
Apache的日志模式包含在默认的Logstash模式中,因此为它设置过滤器相当容易。
注意: 如果您使用的是RedHat变体,如CentOS,则日志位于/var/log/httpd
,而不是示例中的/var/log/apache2
。
Logstash转发器
在您的apache 服务器上,打开logstash-forwarder.conf
配置文件进行编辑:
1sudo vi /etc/logstash-forwarder.conf
在文件
部分添加以下内容,以将Apache访问日志作为apache-access
类型发送到您的Logstash服务器:
1,
2 {
3 "paths": [
4 "/var/log/apache2/access.log"
5 ],
6 "fields": { "type": "apache-access" }
7 }
保存并退出。重新加载Logstash前转器配置以使更改生效:
1sudo service logstash-forwarder restart
Logstash过滤器:apache
在您的Logstash服务器 上,新建一个名为12-apache.conf
的过滤配置文件:
1sudo vi /etc/logstash/conf.d/12-apache.conf
然后添加以下筛选器:
1filter {
2 if [type] == "apache-access" {
3 grok {
4 match => { "message" => "%{COMBINEDAPACHELOG}" }
5 }
6 }
7}
保存并退出。请注意,此筛选器将尝试将apache-Access
类型的消息与COMBINEDAPACHELOG模式匹配,这是默认的Logstash模式之一。
现在重新启动Logstash以重新加载配置:
1sudo service logstash restart
现在将收集和过滤您的Apache日志!
结论
可以收集和解析几乎任何类型的日志。尝试为其他日志文件编写自己的过滤器和模式。
欢迎使用您想要查看的过滤器或您自己的模式进行评论!
如果您不熟悉Kibana的使用,请查看本系列的第三个教程:如何使用Kibana可视化和仪表板。