如何正确配置LogStash以从RabbitMQ读取并将输出写入文件?

时间:2019-10-16 13:17:27

标签: docker elasticsearch rabbitmq logstash

我想使用LogStash读取RabbitMQ发布的消息,并将响应作为每个文件的一条JSON行写入本地文件夹。

我已经安装了Docker桌面并提取了LogStash Docker映像。

我创建了一个config文件夹,其中包含以下logstash.conf文件

#logstash.conf
input {
  rabbitmq{
    host => "xxxxx.com"
    port => 5672
    heartbeat => 30
    durable => true
    exchange => "xxxxx"
    exchange_type => "topic"
    user-id => "xxxx"
    password => "xxxx"
    key => "#xxxx#"
    queue => "xxxxx"}}


   output{
     file {
       path => "C:/logtest"}
     }
   }

然后我在Windows CMD中写docker run --rm -it -v C:/logstashconfig/ docker.elastic.co/logstash/logstash:6.0.1

但是我得到了错误。

Unable to retrieve license information from license server {:message=>"No Available connections", :class=>"LogStash::Outputs::ElasticSearch::HttpClient::Pool::NoConnectionAvailableError"}

警告。

Attempted to resurrect connection to dead ES instance, but got an error. {:url=>"http://logstash_system:xxxxxx@elasticsearch:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch Unreachable: [http://logstash_system:xxxxxx@elasticsearch:9200/][Manticore::ResolutionFailure] elasticsearch: Name or service not known"}

那我还需要安装其他东西吗,例如ElasticSearch?还是我必须更改配置文件中的内容才能使其正常工作?

2 个答案:

答案 0 :(得分:0)

似乎您正在尝试将监视信息发送到在logstash.yml中标识为elasticsearch:9200的elasticsearch服务器,或者您可能具有输出为elasticsearch的管道。要么禁用它,要么更正主机以指向真正的Elasticsearch服务器。

答案 1 :(得分:0)

您可以在文档中看到:

https://www.elastic.co/guide/en/logstash/master/docker-config.html

默认情况下,logstash将在管道文件夹中查找配置。您必须使用logstash.conf和logstash.yml文件创建管道文件夹。 我遇到了同样的问题,只是把空的logstash.yml文件解决了