注:本教程是一个旧版本使用Logstash代理,而不是Filebeat的ELK设置的。 本教程的最新版本可在添加Logstash过滤器,以提高集中式日志记录 。
介绍
Logstash是用于集中和分析日志的强大工具,可以帮助提供和概述您的环境,并确定您的服务器的问题。 提高Logstash安装效率的一种方法是收集重要的应用程序日志,并通过使用过滤器来构造日志数据,以便可以轻松地分析和查询数据。 我们将围绕“grok”模式构建过滤器,它将日志中的数据解析为有用的信息位。
本指南是一个续集如何在Ubuntu上安装Elasticsearch 1.7,Logstash 1.5和4.1 Kibana(ELK)14.04教程,并主要集中在添加过滤器,对各种常见的应用程序日志。
先决条件
要遵循本教程,您必须有一个可用的Logstash服务器,以及一种将日志发送到Logstash的方法。 如果没有Logstash设置不,这里是另一个教程,将让你开始: 如何在Ubuntu 14.04安装Elasticsearch 1.7,Logstash 1.5和4.1 Kibana(ELK) 。
Logstash服务器假设:
- Logstash安装在
/opt/logstash
- 您正在从端口5000上的Logstash转发器接收日志
- 您Logstash配置文件位于
/etc/logstash/conf.d
- 您有一个输入文件名为
01-lumberjack-input.conf
- 你有一个输出文件名为
30-lumberjack-output.conf
Logstash转发器假设:
- 你已经Logstash转发配置的,每个应用程序服务器上,到syslog / auth.log发送到您的Logstash服务器(如设立Logstash代理以前的教程的部分)
如果您的设置与我们假设不同,只需调整此指南以符合您的环境。
您可能需要创建patterns
运行的Logstash服务器上运行此命令目录:
sudo mkdir -p /opt/logstash/patterns
sudo chown logstash:logstash /opt/logstash/patterns
关于Grok
Grok通过解析文本模式,使用正则表达式,并将它们分配给标识符来工作。
对于神交模式的语法是%{ PATTERN : IDENTIFIER }
。 Logstash过滤器包括将各种日志消息匹配并分配给各种标识符的grok模式序列,这是日志是如何给出结构的。
要了解更多关于神交,请访问Logstash神交页面 ,并且Logstash默认模式上市 。
如何使用本指南
下面的每个主要部分将包括收集和过滤给定应用程序的日志所需的附加配置详细信息。 对于要记录和过滤的每个应用程序,您必须在应用程序服务器和Logstash服务器上进行一些配置更改。
Logstash转发器分区
Logstash转发器子部分与正在发送其日志的应用程序服务器有关。 这些额外的文件配置应被添加到/etc/logstash-forwarder.conf
以下行后直接的文件:
"files": [
{
"paths": [
"/var/log/syslog",
"/var/log/auth.log"
],
"fields": { "type": "syslog" }
}
确保其他配置前]
的“文件”部分关闭。 这将包括要发送到Logstash的正确日志文件,并将它们标记为特定类型(将由Logstash过滤器使用)。 必须重新加载Logstash转发器才能使任何更改生效。
Logstash模式小节
如果有一个Logstash模式款时,它将包含可以添加到一个新的文件神交型态/opt/logstash/patterns
的Logstash服务器上。 这将允许您在Logstash过滤器中使用新模式。
Logstash过滤器子节
所述Logstash过滤小节将包括可以可添加到一个新的文件,该输入和输出配置文件之间,在一个滤波/etc/logstash/conf.d
的Logstash服务器上。 过滤器确定Logstash服务器如何解析相关的日志文件。 记住在添加新过滤器后重新启动Logstash服务器以加载更改。
现在你知道如何使用本指南,本指南的其余部分将告诉你如何收集和过滤应用程序日志!
应用:Nginx
Logstash转发器:Nginx
在您的Nginx服务器上,打开logstash-forwarder.conf
编辑配置文件:
sudo vi /etc/logstash-forwarder.conf
在“文件”部分添加以下内容,将Nginx访问日志作为类型“nginx-access”发送到Logstash服务器:
,
{
"paths": [
"/var/log/nginx/access.log"
],
"fields": { "type": "nginx-access" }
}
保存并退出。 重新加载Logstash转发器配置以使更改生效:
sudo service logstash-forwarder restart
Logstash模式:Nginx
Nginx日志模式不包括在Logstash的默认模式中,因此我们将手动添加Nginx模式。
在您的Logstash服务器上 ,创建一个新的特征码文件名为nginx
:
sudo vi /opt/logstash/patterns/nginx
然后插入以下行:
NGUSERNAME [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:logstash /opt/logstash/patterns/nginx
Logstash过滤器:Nginx
在您的服务器Logstash,创建一个新的名为过滤配置文件11-nginx.conf
:
sudo vi /etc/logstash/conf.d/11-nginx.conf
然后添加以下过滤器:
filter {
if [type] == "nginx-access" {
grok {
match => { "message" => "%{NGINXACCESS}" }
}
}
}
保存并退出。 注意,这个过滤器将尝试匹配“nginx-access”类型的消息与上面定义的NGINXACCESS模式。
现在重新启动Logstash以重新加载配置:
sudo service logstash restart
现在你的Nginx日志将被收集和过滤!
应用程序:Apache HTTP Web服务器
Apache的日志模式包含在默认的Logstash模式中,因此很容易为其设置过滤器。
如果您使用的是RedHat的变体,例如CentOS的,该日志位于:注意 /var/log/httpd
,而不是/var/log/apache2
,这是在示例中使用。
Logstash转发器
在你的Apache服务器,打开logstash-forwarder.conf
配置文件进行编辑:
sudo vi /etc/logstash-forwarder.conf
在“文件”部分中添加以下内容,将类型为“apache-access”的Apache访问日志发送到Logstash服务器:
,
{
"paths": [
"/var/log/apache2/access.log"
],
"fields": { "type": "apache-access" }
}
保存并退出。 重新加载Logstash转发器配置以使更改生效:
sudo service logstash-forwarder restart
Logstash过滤器:Apache
在您的服务器Logstash,创建一个新的名为过滤配置文件12-apache.conf
:
sudo vi /etc/logstash/conf.d/12-apache.conf
然后添加以下过滤器:
filter {
if [type] == "apache-access" {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
}
保存并退出。 请注意,此过滤器将尝试将“apache-access”类型的消息与COMBINEDAPACHELOG模式(一种默认的Logstash模式)进行匹配。
现在重新启动Logstash以重新加载配置:
sudo service logstash restart
现在您的Apache日志将被收集和过滤!
结论
它可以收集和解析几乎任何类型的日志。 尝试并为其他日志文件编写自己的过滤器和模式。
随意评论过滤器,你想看到,或与自己的模式!
如果您不熟悉使用Kibana,检查出的第三个教程本系列: 如何使用Kibana可视化和仪表板 。