Цель
Я бы хотел настроить Logstash на чтение файла журнала, выводимого приложением. На данный момент я просто пытаюсь заставить его работать с небольшим приложением, которое просто пишет в файл каждые 5 секунд. Цель состоит в том, чтобы передавать линии по сети, но для этого простого теста я настроил вывод в качестве другого файла.
Config & Code
Это моя конфигурация Logstash:
input {
file {
path => "D:\temp\logstash-input.txt"
mode => "tail"
codec => line
start_position => "beginning"
}
# An input which works, added to confirm that it's not the output that's a problem
http {
port => 1234
}
}
output {
file {
path => "D:\temp\logstash-output.txt"
codec => line
}
}
Это тестовая программа на C #:
static void Main(string[] args)
{
var stopwatch = new Stopwatch();
stopwatch.Start();
while (true)
{
using (var writer = File.AppendText(@"D:\temp\logstash-input.txt"))
{
writer.WriteLine($"{stopwatch.Elapsed.TotalSeconds:F1}s closer to the end of the universe.");
}
Thread.Sleep(TimeSpan.FromSeconds(5));
}
}
Что на самом деле происходит
Приложение успешно записывает logstash-input.txt
каждые 5 секунд, что я вижу в текстовом редакторе,Однако Logstash не копирует эти строки в logstash-output.txt
. Ничего не выводится в окно командной строки, где запущен Logstash.
Усилие пока
Я добавил второй ввод HTTP, просто чтобы убедиться, что проблема связана с вводом файла, а не свыход. Logstash правильно записывает в logstash-output.txt
сообщения, которые я ПОСТУПАЮ в порт 1234 с почтальоном. Итак, файл вывод в порядке.
Я попытался очистить sincedb
файлы, которые Logstash создает для отслеживания своей позиции в файлах, я добавил start_position => "beginning"
для этого теста, основываясь накакой-то другой совет, который я нашел, но ничего из этого не сработало.
Что-то мне не хватает?
Технические подробности
Я использую Logstash 7.4.0 в Windows10 и OpenJDK 13.
Это полный вывод, который Logstash печатает в окне командной строки. Я не вижу там ничего ценного, никаких явных ошибок, но, может быть, я что-то упускаю.
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:/D:/programs/logstash-7.4.0/logstash-core/lib/jars/jruby-complete-9.2.8.0.jar) to field java.io.FileDescriptor.fd
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
Thread.exclusive is deprecated, use Thread::Mutex
Sending Logstash logs to D:/programs/logstash-7.4.0/logs which is now configured via log4j2.properties
[2019-10-10T13:25:35,728][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2019-10-10T13:25:35,742][INFO ][logstash.runner ] Starting Logstash {"logstash.version"=>"7.4.0"}
[2019-10-10T13:25:37,268][INFO ][org.reflections.Reflections] Reflections took 38 ms to scan 1 urls, producing 20 keys and 40 values
[2019-10-10T13:25:38,016][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.
[2019-10-10T13:25:38,021][INFO ][logstash.javapipeline ][main] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>8, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>1000, :thread=>"#<Thread:0x33627b0d run>"}
[2019-10-10T13:25:38,505][INFO ][logstash.inputs.file ][main] No sincedb_path set, generating one based on the "path" setting {:sincedb_path=>"D:/programs/logstash-7.4.0/data/plugins/inputs/file/.sincedb_b1efb07038fbb620c60dcef403b917a1", :path=>["D:\\temp\\logstash-input.txt"]}
[2019-10-10T13:25:39,099][INFO ][logstash.javapipeline ][main] Pipeline started {"pipeline.id"=>"main"}
[2019-10-10T13:25:39,105][INFO ][logstash.inputs.http ][main] Starting http input listener {:address=>"0.0.0.0:1234", :ssl=>"false"}
[2019-10-10T13:25:39,164][INFO ][filewatch.observingtail ][main] START, creating Discoverer, Watch with file and sincedb collections
[2019-10-10T13:25:39,170][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2019-10-10T13:25:39,445][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}