3

使用 ELK 堆栈,我必须解析一些文件,但它们是远程的。我的解决方案

  • 通过 ssh 进行 rsync 以在本地获取远程文件

我担心的是我的弹性搜索索引呈指数增长(超过 130MB),而日志文件只有 25MB。每个 rsync cron (*/5 mn) 是否有可能导致 logstash 再次读取整个文件而不使用sincedb的东西?

谢谢你的帮助 :)

上下文,我使用 acquia 作为 drupal 站点的主机,所以我无法控制如何访问日志文件

纪尧姆·雷纳德

4

3 回答 3

3

Logstash 通过 inode 编号和文件内的位置(偏移量)来跟踪文件。运行一次rsync,检查inode,再次运行,再次检查。

ls -i logfile.txt

如果它们具有相同的 inode 编号,logstash 应该没问题。

于 2015-12-19T18:41:40.350 回答
3

因为我想检查 acquia 的日志,所以我尝试了另一种方法,使用 logstream ( https://github.com/acquia/logstream ) 和 supervisord ( http://supervisord.org/introduction.html ),它可以节省我的时间。

...
[program:logstream_artecinema_drupal-watchdog]
command=logstream tail prod:artetv prod --no-color --types=drupal-watchdog
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/logstream/artecinema_drupal-watchdog.log
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=7
environment=HOME="/root"
...

我的logstash读取了日志文件

file {
    path => "/var/log/logstream/artecinema_drupal-watchdog.log"
    start_position => "beginning"
    type => "drupal-watchdog"
    add_field => { "platform" => "cinema" }
  }
于 2016-01-15T09:36:38.200 回答
2

为 rsync 命令添加选项:

--append

它在末尾添加新行。它还暗示--inplace了哪些保留了 inode。

于 2016-07-15T15:43:29.260 回答