Logstash - 收集日志



使用 shipper 收集来自不同服务器或数据源的日志。shipper 是安装在服务器上的 Logstash 实例,它访问服务器日志并将日志发送到特定的输出位置。

它主要将输出发送到 Elasticsearch 进行存储。Logstash 从以下来源获取输入:

  • STDIN
  • Syslog
  • 文件
  • TCP/UDP
  • Microsoft Windows 事件日志
  • Websocket
  • Zeromq
  • 自定义扩展

使用 Apache Tomcat 7 服务器收集日志

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

logstash.conf

在这里,Logstash 配置为访问本地安装的 Apache Tomcat 7 的访问日志。文件插件的路径设置中使用了正则表达式模式来从日志文件中获取数据。这包含在其名称中带有“access”的字段,并添加了一个 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 应用程序 (https://127.0.0.1:8080) 以生成日志。Logstash 实时读取日志中的更新数据,并将其存储在配置文件中指定的 output.log 中。

Apache Tomcat 根据日期生成新的访问日志文件,并将访问事件记录在其中。在我们的例子中,它是 Apache Tomcat 的 logs 目录中的 localhost_access_log.2016-12-24.txt。

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

output.log

您可以在输出事件中看到,添加了一个 type 字段,并且事件存在于 message 字段中。

{
   "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 插件收集日志的示例。

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

output.log

以下代码块显示输出日志数据。

{
   "@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":[]
}
广告