Я перемещаю данные из двух кластеров ES, которые разделены. Я добавил s3 в качестве общей области и имею два экземпляра logsta sh, один из которых пишет в s3 из Elasticsearch, а другой - читает S3 и загружает Elasticsearch.
Проблема заключается в том, что из каждого индекса только один документ загружен. Выходной файл, написанный выходным плагином s3, представляет собой одну длинную строку, в которой многие json документы выполняются вместе без запятых или открывающих или закрывающих квадратных скобок для массива. Например, вместо [{"id":1},{"id":2},{"id":3}]
вывод записывает файлы, которые читаются как {"id":1}{"id":2}{"id":3}
. В этом случае только {"id":1}
считывается logsta sh с использованием s3 в качестве входа.
Конфигурация от go до s3:
input {
elasticsearch {
hosts => ["${ES_HOST}:${ES_PORT}"]
index => "${ES_INDEX}"
password => "${ES_PASS}"
ssl => "true"
user => "${ES_USER}"
}
}
output {
s3 {
bucket => "${S3_BUCKET}"
encoding => "gzip"
codec => "json"
prefix => "${S3_PREFIX}/${ES_INDEX}"
region => "ap-southeast-2"
}
}
Чтение конфигурации S3 :
input {
s3 {
bucket => "${S3_BUCKET}"
codec => "json"
prefix => "${S3_PREFIX}/${ES_INDEX}/"
region => "ap-southeast-2"
watch_for_new_files => false
}
}
output {
stdout { }
}
В обоих случаях переменные ${}
задаются в среде (bash shell).
На обоих серверах запущена logsta sh 7.6.0
PS: я не думаю, что они важны, но журнал stdout из logsta sh говорит:
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.headius.backport9.modules.Modules (file:/home/ec2-user/logstash-7.6.0/logstash-core/lib/jars/jruby-complete-9.2.9.0.jar) to method sun.nio.ch.NativeThread.signal(long)
WARNING: Please consider reporting this to the maintainers of com.headius.backport9.modules.Modules
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Sending Logstash logs to /home/ec2-user/logstash-7.6.0/logs which is now configured via log4j2.properties
[2020-03-09T01:10:35,168][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2020-03-09T01:10:35,353][INFO ][logstash.runner ] Starting Logstash {"logstash.version"=>"7.6.0"}
[2020-03-09T01:10:37,813][INFO ][org.reflections.Reflections] Reflections took 48 ms to scan 1 urls, producing 20 keys and 40 values
[2020-03-09T01:10:53,476][WARN ][org.logstash.instrument.metrics.gauge.LazyDelegatingGauge][main] A gauge metric of an unknown type (org.jruby.RubyArray) has been create for key: cluster_uuids. This may result in invalid serialization. It is recommended to log an issue to the responsible developer/development team.
[2020-03-09T01:10:53,515][INFO ][logstash.javapipeline ][main] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>2, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>250, "pipeline.sources"=>["/home/ec2-user/kibana/from_s3.conf"], :thread=>"#<Thread:0x1364485f run>"}
[2020-03-09T01:10:54,561][INFO ][logstash.inputs.s3 ][main] Registering s3 input {:bucket=>"my-bucket-here", :region=>"ap-southeast-2"}
[2020-03-09T01:10:55,334][INFO ][logstash.javapipeline ][main] Pipeline started {"pipeline.id"=>"main"}
[2020-03-09T01:10:55,435][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2020-03-09T01:10:55,833][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
[2020-03-09T01:10:57,507][INFO ][logstash.inputs.s3 ][main] Using default generated file for the sincedb {:filename=>"/home/ec2-user/logstash-7.6.0/data/plugins/inputs/s3/sincedb_1906e463a09b003733b719c08277c793"}
/home/ec2-user/logstash-7.6.0/vendor/bundle/jruby/2.5.0/gems/awesome_print-1.7.0/lib/awesome_print/formatters/base_formatter.rb:31: warning: constant ::Fixnum is deprecated
{
my-document-here
}
[2020-03-09T01:10:59,587][INFO ][logstash.runner ] Logstash shut down.
PPS: удаление, поскольку DB позволяет загружать одну строку, файл не меняется.