1

我正在尝试从/var/log/wtmpelasticsearch中读取访问日志

我可以在使用登录框时读取文件last -F /var/log/wtmp

我正在运行 logstash 并将日志发送到 elasticsearch,这里是 logstash conf 文件。

input {
  file {
    path => "/var/log/wtmp"
    start_position => "beginning"
  }
}

output {
  elasticsearch {
    host => localhost
    protocol => "http"
    port => "9200"
  }
}

elasticsearch 中显示的是

在此处输入图像描述

G

4

2 回答 2

4

一旦我使用 less 打开文件,我只能看到二进制数据。现在logstash 无法理解这些数据。如下所示的 logstash 文件应该可以正常工作 -

input { 
  pipe {
    command => "/usr/bin/last -f /var/log/wtmp"
  }
}

output {
    elasticsearch {
    host => localhost
    protocol => "http"
    port => "9200"
    }
}
于 2015-11-05T13:20:41.280 回答
1

Vineeth 的回答是正确的,但以下更清洁的配置也适用:

input { pipe { command => "last" } }

last /var/log/wtmp并且last完全一样。


utmp、wtmp、btmp是跟踪用户登录和注销的 Unix 文件。它们不能直接读取,因为它们不是常规文本文件。但是,有以纯文本last形式显示信息的命令。/var/log/wtmp

$ last --help

Usage:
 last [options] [<username>...] [<tty>...]

我可以使用 last -F /var/log/wtmp 登录到框中读取文件

我不信。-F旗帜的作用:

-F, --fulltimes      print full login and logout times and dates

因此,last -F /var/log/wtmp将解释/var/log/wtmp为用户名,不会打印任何登录信息。

-f旗帜的作用:

-f, --file <file>    use a specific file instead of /var/log/wtmp
于 2015-11-05T14:12:14.270 回答