Logstash - 收集日志

  • 简述

    使用托运人收集来自不同服务器或数据源的日志。托运人是安装在服务器中的 Logstash 实例,它访问服务器日志并发送到特定的输出位置。
    它主要将输出发送到 Elasticsearch 进行存储。Logstash 从以下来源获取输入 -
    • STDIN
    • Syslog
    • Files
    • TCP/UDP
    • Microsoft windows Eventlogs
    • Websocket
    • Zeromq
    • Customized extensions
  • 使用 Apache Tomcat 7 服务器收集日志

    在此示例中,我们使用文件输入插件收集安装在 windows 中的 Apache Tomcat 7 服务器的日志并将它们发送到另一个日志。

    logstash.conf

    这里,Logstash被配置为访问本地安装的Apache Tomcat 7的访问日志。正则表达式模式用于文件插件的路径设置以从日志文件中获取数据。这在其名称中包含“访问”,并添加了 apache 类型,这有助于将 apache 事件与集中目标源中的其他事件区分开来。最后,输出事件将显示在 output.log 中。
    
    input {
       file {
          path => "C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/*access*"
          type => "apache"
       }
    } 
    output {
       file {
          path => "C:/tpwork/logstash/bin/log/output.log"
       }
    }
    

    运行 Logstash

    我们可以使用以下命令运行 Logstash。
    
    C:\logstash\bin> logstash –f  Logstash.conf
    

    Apache Tomcat 日志

    访问 Apache Tomcat 服务器及其 Web 应用程序 (http://localhost:8080) 生成日志。日志中更新的数据由 Logstash 实时读取,并按照配置文件中的指定存储在 output.log 中。
    Apache Tomcat 根据日期生成一个新的访问日志文件,并在那里记录访问事件。在我们的例子中,它是 localhost_access_log.2016-12-24.txt 在logsApache Tomcat 目录。
    
    0:0:0:0:0:0:0:1 - - [
       25/Dec/2016:18:37:00 +0800] "GET / HTTP/1.1" 200 11418
    0:0:0:0:0:0:0:1 - munish [
       25/Dec/2016:18:37:02 +0800] "GET /manager/html HTTP/1.1" 200 17472
    0:0:0:0:0:0:0:1 - - [
       25/Dec/2016:18:37:08 +0800] "GET /docs/ HTTP/1.1" 200 19373
    0:0:0:0:0:0:0:1 - - [
       25/Dec/2016:18:37:10 +0800] "GET /docs/introduction.html HTTP/1.1" 200 15399
    

    输出日志

    您可以在输出事件中看到,添加了一个类型字段,并且该事件出现在消息字段中。
    
    {
       "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
       localhost_access_log.2016-12-25.txt",
       "@timestamp":"2016-12-25T10:37:00.363Z","@version":"1","host":"Dell-PC",
       "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:00 +0800] \"GET /
       HTTP/1.1\" 200 11418\r","type":"apache","tags":[]
    }
    {
       "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
       localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
       "@version":"1","host":"Dell-PC",
       "message":"0:0:0:0:0:0:0:1 - munish [25/Dec/2016:18:37:02 +0800] \"GET /
       manager/html HTTP/1.1\" 200 17472\r","type":"apache","tags":[]
    }
    {
       "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
       localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
       "@version":"1","host":"Dell-PC",
       "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:08 +0800] \"GET /docs/
       HTTP/1.1\" 200 19373\r","type":"apache","tags":[]
    }
    {
       "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
       localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:20.436Z",
       "@version":"1","host":"Dell-PC",
       "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:10 +0800] \"GET /docs/
       introduction.html HTTP/1.1\" 200 15399\r","type":"apache","tags":[]
    }
    
  • 使用 STDIN 插件收集日志

    在本节中,我们将讨论另一个使用STDIN Plugin.

    logstash.conf

    这是一个非常简单的示例,其中 Logstash 正在读取用户在标准输入中输入的事件。在我们的例子中,它是命令提示符,它将事件存储在 output.log 文件中。
    
    input {
       stdin{}
    }
    output {
       file {
          path => "C:/tpwork/logstash/bin/log/output.log"
       }
    }
    

    运行 Logstash

    我们可以使用以下命令运行 Logstash。
    
    C:\logstash\bin> logstash –f  Logstash.conf
    
    在命令提示符中写入以下文本 -
    用户输入以下两行。Logstash 通过分隔符设置分隔事件,默认值为 '\n'。用户可以通过更改文件插件中分隔符的值来进行更改。
    
    Tutorialspoint.com welcomes you
    Simply easy learning
    

    输出日志

    以下代码块显示了输出日志数据。
    
    {
       "@timestamp":"2016-12-25T11:41:16.518Z","@version":"1","host":"Dell-PC",
       "message":"tutrialspoint.com welcomes you\r","tags":[]
    }
    {
       "@timestamp":"2016-12-25T11:41:53.396Z","@version":"1","host":"Dell-PC",
       "message":"simply easy learning\r","tags":[]
    }