如何在elasticsearch中读取/ var / log / wtmp日志

时间:2015-11-05 12:32:13

标签: elasticsearch logstash elastic-stack

我正在尝试从elasticsearch

中的/var/log/wtmp读取访问日志

使用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中显示的内容是

enter image description here

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

Vineeth的答案是对的,但下面的清洁配置也可以:

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

last /var/log/wtmplast完全相同。

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