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

时间:2016-08-17 07:21:45

标签: elasticsearch logstash

我在10.x.x.1中设置了单节点ELK,我已经安装了logstash,弹性搜索和kibana。

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

10.x.x.2中的日志文件/var/log/myapp/myapp.log

在10.x.x.1中,我在/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.x.x.2
  2. 中安装logstash
  3. 我如何才能只有“错误”
  4. 的行
  5. 我的应用程序每天都会生成一个10MB的日志。我只想知道,如果我可以在弹性搜索中再添加一个节点,那么空间就不会填满。
  6. 我不想让我的日志永久保存在弹性搜索中。有什么办法可以为发送的日志设置到期时间吗? 即7天后删除日志。

2 个答案:

答案 0 :(得分:3)

我可以回答1和2。

  • 您需要在10.x.x.2上安装Logstash(不推荐)或FilebeatPacketbeat中的至少一个。 Filebeat或Packetbeat都很好并且免于Elastic.co公司。 Packetbeat用于通过网络捕获应用程序日志,而不是日志文件。对于您的情况,使用文件日志,只需使用Filebeat。
  • 您需要将Filebeat配置文件(filebeat .yml)编辑为其日志编辑为10.x.x.1

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

logstash: hosts: ["10.x.x.1:5044"]

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

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

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

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

答案 1 :(得分:1)

2:

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

3:

另一个Elasticsearch允许在节点之间传播数据。但是一个节点可以轻松地处理几个gigas而没有问题。

4:

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

相关问题