【问题标题】:How can I tell logstash to read file over ssh如何告诉logstash通过ssh读取文件
【发布时间】:2015-12-19 15:41:06
【问题描述】:

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

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

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

感谢您的帮助:)

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

纪尧姆·雷纳德

【问题讨论】:

    标签: input logstash acquia


    【解决方案1】:

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

    ls -i logfile.txt
    

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

    【讨论】:

      【解决方案2】:

      因为我想查看 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" }
        }
      

      【讨论】:

        【解决方案3】:

        为 rsync 命令添加选项:

        --append
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-12-04
          • 2019-10-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多