当前位置: 首页 > 面试题库 >

如何使用logstash将队列的内容发送到elasticsearch索引

萧永长
2023-03-14
问题内容

我有一个运行起来的logstash,它消耗了两个Rabbit队列并发送给elasticsearch。这是我的logstash.conf文件:

input {
  rabbitmq {
    host => 'rabbit'
    durable => true
    user => 'user'
    queue => 'dev-user_trace'
    password => 'pass'
  }
  rabbitmq {
    host => 'rabbit'
    durable => true
    user => 'user'
    queue => 'min-price-queue'
    password => 'pass'
  }

}
filter{
}
output{
  stdout { codec => json}
    elasticsearch{
    hosts => ["elasticsearch"]
    index => "eventss-%{+YYYY.MM.dd}"
  }

}

现在,我有了另一个队列,但是我想将其内容发送到另一个elasticsearch索引。我的问题是:我如何需要将特定条目重定向到特定索引?还是我需要另一个logstash实例?

提前致谢。


问题答案:

很好的开始。现在,您只需要“键入”每个输入,然后将事件转发给给定类型的适当输出,如下所示:

input {
  rabbitmq {
    host => 'rabbit'
    durable => true
    user => 'user'
    queue => 'dev-user_trace'
    password => 'pass'
    type => 'traces'               # <-- add this
  }
  rabbitmq {
    host => 'rabbit'
    durable => true
    user => 'user'
    queue => 'min-price-queue'
    password => 'pass'
    type => 'prices'               # <-- add this
  }

}
filter{
}
output{
  stdout { codec => json}

  if [type] == 'traces' {          # <-- check type
     elasticsearch{
       hosts => ["host1:9200"]
       index => "index1-%{+YYYY.MM.dd}"
     }
  }

  if [type] == 'prices' {          # <-- check type
     elasticsearch{
       hosts => ["host2:9200"]
       index => "index2-%{+YYYY.MM.dd}"
     }
  }
}

更新

上面是最通用的方法,因此您可以不同地配置两个输出。正如@pandaadb所建议的那样,您还可以有一个输出并定义一个将作为目标索引的类型:

input {
  rabbitmq {
    host => 'rabbit'
    durable => true
    user => 'user'
    queue => 'dev-user_trace'
    password => 'pass'
    type => 'index1'                    # <-- add this
  }
  rabbitmq {
    host => 'rabbit'
    durable => true
    user => 'user'
    queue => 'min-price-queue'
    password => 'pass'
    type => 'index2'                    # <-- add this
  }

}
filter{
}
output{
  stdout { codec => json}

  elasticsearch{
    hosts => ["localhost:9200"]
    index => "%{type}-%{+YYYY.MM.dd}"   # <-- use type here
  }
}


 类似资料:
  • 我创建了一个索引映射,就像这样,现在我将使用filebeat向Elasticsearch发送一个json文件,如何确保配置我的filebeat。yml将信息发送到我刚刚创建的新索引映射? 索引映射: 我的音乐节拍。yml: #设置日志级别。默认的日志级别是info.#可用的日志级别包括:错误、警告、信息、调试#日志。级别:调试 我想确保我将用filebeat上传的内容,会正确提交到我之前设置的El

  • 问题内容: Oracle文档说- TextMessage对象用于发送包含java.lang.String的消息。它从Message界面继承>,并添加文本消息正文。此消息类型可用于传输基于文本的消息,包括XML> content的消息。 这怎么可能?XML的内容是否仅是可发送的(通过将其转换为对象然后发送)?是否可以将XML文件以任何方式真正放入队列,然后在接收方读取? 问题答案: 请使用它,并且您

  • Oracle文档说- TextMessage对象用于发送包含java的消息。lang.String。它继承了 这怎么可能?XML的内容是否只能发送(通过将其转换为对象然后发送)?XML文件真的可以以任何方式放在队列中,然后在接收器端读取吗?

  • 问题内容: 我有这样的日志: 我想把他们推到。我正在使用filebeat通过以下配置将数据发送到logstash: 现在使用以下配置,我想更改编解码器类型: 但是,我仍然以字符串格式获取日志: “ message”:“ {\” logId \“:\” 57aaf6c96224b \“,\” clientIp \“:\” 127.0.0.1 \“,\” time \“:\” 03:11:29 pm

  • 我试图使用https://github.com/roribio/alpine-sqs容器 我能够运行docker容器,并使用终端将消息发送到队列。 我用来将消息发送到SQS队列容器的命令如下 我能够接收到消息,并且可以在浏览器中的dashboad中看到它,网址为。 但是当我试图在中使用发送消息时,它抛出了一个错误。 回溯(最后一次调用):文件“/home/infomagnus/PycharmPro

  • 我是Spring JMS的新手。我的应用程序是使用Spring Boot开发的,并部署在JBoss EAP7.2.0中。我有一个远程队列,它是一个活动的MQ Artemis队列,也嵌入在JBoss EAP7.2.0中。有人能建议我如何使用Spring Boot的JmsTemplate向远程JMS队列发送消息吗?基本上,我不知道应该如何定义远程connectionFactory来连接到远程队列。