繁体   English   中英

使用Logstash将日志发送到弹性搜索

[英]Sending logs to elastic search using logstash

我在10.xx1中设置了单节点ELK,其中安装了Logstash,Elastic Search和Kibana。

我的应用程序在另一台服务器10.xx2中运行,我希望将日志转发到弹性搜索。

我在10.xx2中的日志文件/var/log/myapp/myapp.log

在10.xx1中,我在/etc/logstash/conf.d中提供了此输入

input {
  file {
    path => "/var/log/myapp/myapp.log"
    type => "syslog"
  }
}

output {
   elasticsearch {
       hosts => ["10.252.30.11:9200"]
       index => "versa"
   }
}

我的问题如下

  1. 我是否需要在10.xx2中安装Logstash
  2. 我该如何仅对具有“错误”的行进行grep
  3. 我的应用每天都会生成10MB的日志。 我只想知道,是否可以在弹性搜索中添加一个以上的节点,以使空间不会填满。
  4. 我不想永久保留我的日志以进行弹性搜索。 有什么办法可以设置发送日志的到期时间? 即7天后删除日志。

我可以回答1和2。

  • 您需要在Logstash上至少安装Logstash (不推荐)或FilebeatPacketbeat之一。 Filebeat或Packetbeat都很不错,而且可以从Elastic.co公司免费获得。 Packetbeat用于通过网络而不是日志文件捕获应用程序日志。 对于您的情况,使用文件日志,只需使用Filebeat。
  • 您需要编辑Filebeat配置文件(filebeat .yml)才能其日志记录到10.xx1

filebeat: prospectors: - paths: - /var/log/myapp/myapp.log

logstash: hosts: ["10.xx1:5044"]

  • 在安装了Logstash的10.xx1上(以及用于安装ELK的其他文件),您需要为Logstash创建一些配置文件:

    • 将名为02-beats-input.conf的输入文件添加到/etc/logstash/conf.d/

    input { beats { port => 5044 ssl => false } }

    • 将名为03-myapp-filter.conf的过滤器文件添加到/etc/logstash/conf.d/ 您应该找到一个匹配您的日志的过滤器模式。

对于2:

Kibana充当Elasticsearch的Web界面。 一旦启动,默认情况下它将在端口5601上可用。然后,您可以使用发现界面搜索术语,例如“错误”。 它将返回该术语的前500个文档。

对于3:

另一个Elasticsearch将允许您在节点之间传播数据。 但是,节点可以轻松处理几千兆字节而不会出现问题。

对于4:

您无法为数据设置有效期限。 至少它不是自动的,您必须搜索所有今天到期的日志并将其删除。
另一个解决方案(也是更好的解决方案)是每天有一个索引( index => "versa-%{+YYYY.MM.dd}" ),然后在7天后删除索引(使用Elasticsearch策展人和cron轻松完成)工作)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM