elasticsearch 如何使用logstash将队列内容发送到elasticsearch索引
我有一个日志存储并运行,它消耗了两个兔子队列并发送到elasticsearch。这是我的logstash.conf文件:elasticsearch 如何使用logstash将队列内容发送到elasticsearch索引,elasticsearch,logstash,elasticsearch,Logstash,我有一个日志存储并运行,它消耗了两个兔子队列并发送到elasticsearch。这是我的logstash.conf文件: input { rabbitmq { host => 'rabbit' durable => true user => 'user' queue => 'dev-user_trace' password => 'pass' } rabbitmq { host => 'rabbit'
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}"
}
}
}
输入{
兔子{
主机=>“兔子”
持久=>真实
用户=>'user'
队列=>'dev-user_trace'
密码=>“通过”
type=>“traces”#“rabbit”
持久=>真实
用户=>'user'
队列=>“最小价格队列”
密码=>“通过”
type=>prices'#json}
如果[type]=“traces”{#[“host1:9200”]
index=>“index1-%{+YYYY.MM.dd}”
}
}
如果[type]=“prices”{#[“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
}
}
输入{
兔子{
主机=>“兔子”
持久=>真实
用户=>'user'
队列=>'dev-user_trace'
密码=>“通过”
类型=>'index1'#'rabbit'
持久=>真实
用户=>'user'
队列=>“最小价格队列”
密码=>“通过”
类型=>'index2'#json}
弹性搜索{
hosts=>[“localhost:9200”]
index=>“%{type}-%{+YYYY.MM.dd}”#如果您通过索引名调用您的类型,您可以在索引中使用通配符,并有1个elasticsearch输出,将其索引到“%{type}-%{+YYYY/MM.dd}”@pandadb Yes,但他可能希望以不同的方式配置两个ES输出,例如发送到两个不同的ES主机(如我的答案中所示)。我的答案更一般,但当然,如果需要,您可以使用单个输出并将类型定义为目标索引。我已经更新了我的答案,并为此向您表示感谢。哦,是的,您的答案绝对正确:)我只想添加它,因为它在我的简单示例中很有帮助,并且使配置更具可读性谢谢你的回答。完美地解释了一个清楚的问题。谢谢你真棒,很高兴它能帮上忙!