Input 如何让logstash通过ssh读取文件

Input 如何让logstash通过ssh读取文件,input,logstash,acquia,Input,Logstash,Acquia,使用ELK堆栈,我必须解析一些文件,但它们是远程的。 我的解决方案 rsync over ssh在本地获取远程文件 我担心的是,我的elasticsearch索引呈指数增长(超过130MB),而日志文件只有25MB。 是否每个rsync cron(*/5 mn)都会导致logstash再次读取整个文件,而不使用sincedb内容 谢谢你的帮助:) 在上下文中,我使用acquia作为drupal站点的宿主,因此我无法控制如何访问日志文件 file { path => "/var/

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

  • rsync over ssh在本地获取远程文件
我担心的是,我的elasticsearch索引呈指数增长(超过130MB),而日志文件只有25MB。 是否每个rsync cron(*/5 mn)都会导致logstash再次读取整个文件,而不使用sincedb内容

谢谢你的帮助:)

在上下文中,我使用acquia作为drupal站点的宿主,因此我无法控制如何访问日志文件

file {
    path => "/var/log/logstream/artecinema_drupal-watchdog.log"
    start_position => "beginning"
    type => "drupal-watchdog"
    add_field => { "platform" => "cinema" }
  }

纪尧姆·雷纳德(Guillaume Renard)

Logstash通过索引节点编号和文件中的位置(偏移量)跟踪文件。运行rsync一次,检查inode,再次运行,然后再次检查

ls -i logfile.txt

如果它们具有相同的inode编号,则logstash应该可以。

因为我想检查acquia的日志,我尝试了另一种方法,使用logstream()和supervisord(),这样可以节省时间

...
[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"
...
我的日志库读取日志文件

file {
    path => "/var/log/logstream/artecinema_drupal-watchdog.log"
    start_position => "beginning"
    type => "drupal-watchdog"
    add_field => { "platform" => "cinema" }
  }

将选项添加到rsync命令:

--append
它会在末尾添加新行。它还意味着保留inode的
--inplace