Для стека ELK я реализовал с использованием (1-го и 2-го) подхода, и, проводя исследования, я столкнулся с несколькими оценками, чтобы вы могли выбрать любого. но мой личный выбор - 1-й или 2-й, потому что он дает вам много возможностей для настройки.
если вам нужен код, дайте мне знать, я могу поделиться фрагментом его. я не хочу отвечать долго*
b. Вы можете написать собственный запрос mongodb или запрос агрегации непосредственно в logstash.
ваш конвейер может выглядеть следующим образом:
input {
jdbc{
jdbc_user => "user"
jdbc_password => "pass"
jdbc_driver_class => "Java::com.dbschema.MongoJdbcDriver"
jdbc_driver_library => "mongojdbc1.2.jar"
jdbc_connection_string => "jdbc:mongodb://user:pass@host1:27060/cdcsmb"
statement => "db.product.find()"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => "localhost:9200"
index => "target_index"
document_type => "document_type"
document_id => "%{id}"
}
}
2.Использовать UnityJdbc jar (http://unityjdbc.com) для потоковой передачи данных из mongodb в ElasticSearch
a. Вы должны заплатить за jar unityjdbc
b. Вы можете написать запрос формата SQL в logstash для получения данных из mongodb.
ваш конвейер может выглядеть следующим образом:
input {
jdbc{
jdbc_user => "user"
jdbc_password => "pass"
jdbc_driver_class => "Java::mongodb.jdbc.MongoDriver"
jdbc_driver_library => "mongodb_unityjdbc_full.jar"
jdbc_connection_string => "jdbc:mongodb://user:pass@host1:27060/cdcsmb"
statement=> "SELECT * FROM employee WHERE status = 'active'"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => "localhost:9200"
index => "target_index"
document_type => "document_type"
document_id => "%{id}"
}
}
3. Используйте logstash-input-mongodb (https://github.com/phutchins/logstash-input-mongodb) плагин для потоковой передачи данных из mongodb в ElasticSearch
a.opensource вида
b. Вы получаете гораздо меньше возможностей для настройки, он будет сбрасывать всю коллекцию, вы не можете написать запрос или написать запрос агрегации и т. д.
4. Вы можете написать вамСобственная программа на python или java и соединяется с mongodb и index data в упругом поиске, тогда вы можете использовать cron, чтобы запланировать его.
5.Вы можете использовать узел js Mongoosastic npm (https://www.npmjs.com/package/mongoosastic), единственные накладные расходы - это принятие изменений на Mongo и ESи то и другое синхронизировано.