添加Logstash过滤器,以提高集中记录

介绍

Logstash是用于集中和分析日志的强大工具,可以帮助提供和概述您的环境,并确定您的服务器的问题。 提高ELK(Elasticsearch,Logstash和Kibana)设置的有效性的一种方法是收集重要的应用程序日志,并通过使用过滤器来构建日志数据,因此数据可以轻松地分析和查询。 我们将围绕“grok”模式构建过滤器,它将日志中的数据解析为有用的信息位。

本指南是一个续集如何在Ubuntu上安装Elasticsearch,Logstash和Kibana 4 14.04教程,并主要集中在增加Logstash过滤各种常见的应用程序日志。

先决条件

要遵循本教程,您必须具有正在从托运人(如Filebeat)接收日志的可用Logstash服务器。 如果没有Logstash设置接收日志呢,这里是,将让你开始教程: 如何在Ubuntu 14.04安装Elasticsearch,Logstash和Kibana 4

ELK服务器假设

  • Logstash安装在/opt/logstash
  • 您Logstash配置文件位于/etc/logstash/conf.d
  • 您有一个名为输入文件02-beats-input.conf
  • 你有一个输出文件名为30-elasticsearch-output.conf

您可能需要创建patterns运行的Logstash服务器上运行此命令目录:

sudo mkdir -p /opt/logstash/patterns
sudo chown logstash: /opt/logstash/patterns

客户端服务器假设

  • 你已经Filebeat配置,每个应用程序服务器上,到syslog / auth.log发送到您的Logstash服务器(如设立Filebeat部分的前提教程)

如果您的设置不同,只需调整本指南以符合您的环境。

关于Grok

Grok通过解析文本模式,使用正则表达式,并将它们分配给标识符来工作。

对于神交模式的语法是%{ PATTERN : IDENTIFIER } Logstash过滤器包括将各种日志消息匹配并分配给各种标识符的grok模式序列,这是日志是如何给出结构的。

要了解更多关于神交,请访问Logstash神交页面 ,并且Logstash默认模式上市

如何使用本指南

下面的每个主要部分将包括收集和过滤给定应用程序的日志所需的附加配置详细信息。 对于要记录和过滤的每个应用程序,您将必须在客户端服务器(Filebeat)和Logstash服务器上进行一些配置更改。

Logstash模式小节

如果有一个Logstash模式款时,它将包含可以添加到一个新的文件神交型态/opt/logstash/patterns的Logstash服务器上。 这将允许您在Logstash过滤器中使用新模式。

Logstash过滤器子节

所述Logstash过滤小节将包括可以可添加到一个新的文件,该输入和输出配置文件之间,在一个滤波/etc/logstash/conf.d的Logstash服务器上。 过滤器确定Logstash服务器如何解析相关的日志文件。 记住在添加新过滤器后重新启动Logstash服务,以加载更改。

Filebeat Prospector部分

Filebeat Prospectors用于指定要发送到Logstash的日志。 其他探矿配置应该被添加到/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
...

在上面的例子中,红色高亮线条代表发送所有的探矿.log文件/var/log/app/与以Logstash app-access类型。 进行任何更改后,必须重新加载Filebeat以使任何更改生效。

现在你知道如何使用本指南,本指南的其余部分将告诉你如何收集和过滤应用程序日志!

应用:Nginx

Logstash模式:Nginx

Nginx日志模式不包括在Logstash的默认模式中,因此我们将手动添加Nginx模式。

在您的ELK服务器上 ,创建一个新的特征码文件名为nginx

sudo vi /opt/logstash/patterns/nginx

然后插入以下行:

Nginx Grok模式
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图案解析,并分配数据给各种标识符(例如clientipidentauth等)。

其次,改变图形文件的所有权logstash

sudo chown logstash: /opt/logstash/patterns/nginx

Logstash过滤器:Nginx

在您的ELK服务器上 ,创建一个新的过滤器配置文件名为11-nginx-filter.conf

sudo vi /etc/logstash/conf.d/11-nginx-filter.conf

然后添加以下过滤器:

Nginx过滤器
filter {
  if [type] == "nginx-access" {
    grok {
      match => { "message" => "%{NGINXACCESS}" }
    }
  }
}

保存并退出。 请注意,这个过滤器会尝试匹配的信息nginx-access与该类型NGINXACCESS图案,上面定义。

现在重新启动Logstash以重新加载配置:

sudo service logstash restart

Filebeat Prospector:Nginx

在您的Nginx服务器 ,打开filebeat.yml编辑配置文件:

sudo vi /etc/filebeat/filebeat.yml

添加以下勘探者在filebeat部分Nginx的访问日志类型发送nginx-access到你的服务器Logstash:

Nginx Prospector
    -
      paths:
        - /var/log/nginx/access.log
      document_type: nginx-access

保存并退出。 重新加载Filebeat以使更改生效:

sudo service filebeat restart

现在你的Nginx日志将被收集和过滤!

应用程序:Apache HTTP Web服务器

Apache的日志模式包含在默认的Logstash模式中,因此很容易为其设置过滤器。

如果您使用的是RedHat的变体,例如CentOS的,该日志位于:注意 /var/log/httpd ,而不是/var/log/apache2 ,这是在示例中使用。

Logstash过滤器:Apache

在您的ELK服务器上 ,创建一个新的名为过滤配置文件12-apache.conf

sudo vi /etc/logstash/conf.d/12-apache.conf

然后添加以下过滤器:

Apache过滤器
filter {
  if [type] == "apache-access" {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
  }
}

保存并退出。 请注意,这个过滤器会尝试匹配的信息apache-access与该类型COMBINEDAPACHELOG模式,一个是默认Logstash模式。

现在重新启动Logstash以重新加载配置:

sudo service logstash restart

Filebeat Prospector:Apache

在你的Apache服务器 ,打开filebeat.yml编辑配置文件:

sudo vi /etc/filebeat/filebeat.yml

添加以下勘探者在filebeat节进行到Apache日志类型发送apache-access到你的服务器Logstash:

Apache Prospector
    -
      paths:
        - /var/log/apache2/access.log
      document_type: apache-access

保存并退出。 重新加载Filebeat以使更改生效:

sudo service filebeat restart

现在您的Apache日志将被收集和过滤!

结论

它可以收集和解析几乎任何类型的日志。 尝试并为其他日志文件编写自己的过滤器和模式。

随意评论过滤器,你想看到,或与自己的模式!

如果您不熟悉使用Kibana,看看这个教程: 如何使用Kibana可视化和仪表板

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏