有没有一种方法可以让logstash把输出写到特定的数据库中,而ElasticSearch从同一个数据库中读取值

tvz2xvvm  于 2023-04-05  发布在  ElasticSearch
关注(0)|答案(2)|浏览(114)

我的要求是从filebeat加载数据到logstash,并将这些数据写入mongoDB,在ElasticSearch中,我应该能够从我使用logstash存储数据的数据库中读取数据。我对elk非常陌生。
我能够将数据存储到mongoDB,但我没有在ElasticSearch中读取的步骤。

6za6bjd0

6za6bjd01#

  1. Logstash是一个将日志发送到某些目的地的工具。
    1.数据库是存储数据的地方ElasticSearch和其他数据库不能从某处获取数据,它们只有存储数据的功能。

解决方案:

Logstash具有写入多个目标的功能,因此您可以配置logstash以写入两个数据库:弹性和mongoDB

示例

配置路径:/usr/share/logstash/config/logstash.conf

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
      hosts => ["https://${OPENSEARCH_URL}:443"]
      index => "logs-%{[kubernetes][namespace]}-%{+YYYY.MM.dd}"

  }
  mongodb {
    collection => "%{foo}"
    database   => "YOUR_DB_NAME"
    uri        => "mongodb://mongodb0.example.com:27017"
  }
}
ergxz8rk

ergxz8rk2#

首先浏览一下弹性文档,你可以在那里找到大部分答案。
其次,上面给出的解决方案是正确的,基本上你必须配置以下文件,并相应地使用命令运行它。

logstash.conf  
logstash -f logstash.conf

为了清楚起见,我给出的示例如下:去https://www.kaggle.com网站,在那里你可以免费找到数据集。下载任何示例,然后配置你的文件。在下面的例子中,下载flowers1.csv数据集,并相应地设置其路径,你必须使用'filter'设置列的索引,并将输出设置为elasticsearch localhost数据库:

logstash.conf
input {
   file {
     path => "C:/elastic_stack/logstash-8.6.2/data3/flowers1.csv"
     start_position => "beginning"
     sincedb_path => "NULL"
        }
      }
filter {
  csv {
    separator => ","
    columns => ["Common Name", "Botanical Name", "Family",   
    "Description"]
      }
   }
output {
  elasticsearch { 
  hosts => ["localhost:9200"]
  index => "csv_flowers_data_test"
  document_id => "%{index}"
       }
 stdout { codec => rubydebug }
 }

最后学习如何使用kibana以及https://www.elastic.co/kr/kibana,它可以帮助您可视化您的数据。

相关问题