使用 ELK 堆栈,我必须解析一些文件,但它们是远程的。我的解决方案
- 通过 ssh 进行 rsync 以在本地获取远程文件
我担心的是我的弹性搜索索引呈指数增长(超过 130MB),而日志文件只有 25MB。每个 rsync cron (*/5 mn) 是否有可能导致 logstash 再次读取整个文件而不使用sincedb的东西?
谢谢你的帮助 :)
上下文,我使用 acquia 作为 drupal 站点的主机,所以我无法控制如何访问日志文件
纪尧姆·雷纳德
Logstash 通过 inode 编号和文件内的位置(偏移量)来跟踪文件。运行一次rsync,检查inode,再次运行,再次检查。
ls -i logfile.txt
如果它们具有相同的 inode 编号,logstash 应该没问题。
因为我想检查 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" }
}
为 rsync 命令添加选项:
--append
它在末尾添加新行。它还暗示--inplace
了哪些保留了 inode。