Использование логсташей и эластичных элементов
Я использую node -bunyan для управления информацией журнала через elasticsearch и logstash, и я сталкиваюсь с проблемой.
Фактически, мой файл журнала имеет некоторую информацию и отлично заполняется, когда мне это нужно.
Проблема заключается в том, что поиск упругих объектов не находит ничего на
http://localhost:9200/logstash- */
У меня есть пустой объект, и поэтому я не могу доставить свой журнал в kibana.
Здесь мой файл журнала logstash:
input {
file {
type => "nextgen-app"
path => [ "F:\NextGen-dev\RestApi\app\logs\*.log" ]
codec => "json"
}
}
output {
elasticsearch {
host => "localhost"
protocol => "http"
}
}
И мой код js:
log = bunyan.createLogger({
name: 'myapp',
streams: [
{
level: 'info',
path: './app/logs/nextgen-info-log.log'
},
{
level: 'error',
path: './app/logs/nextgen-error-log.log'
}
]
})
router.all('*', (req, res, next)=>
log.info(req.url)
log.info(req.method)
next()
)
NB: журналы хорошо написаны в файлах журнала. Проблема заключается в поиске logstash и elasticsearch: -/
EDIT: запрос http://localhost:9200/logstash- */дает мне "{}" пустой объект JSON
Спасибо за продвижение
Ответы
Ответ 1
Вот как нам удалось устранить эту и другие проблемы, когда Logstash корректно обрабатывает файлы в Windows:
-
Установите патч ruby-filewatch, как описано здесь:
logstash + elasticsearch: перезагружает те же данные
-
Правильно настройте входной плагин Logstash:
input {
file {
path => ["C:/Path/To/Logs/Directory/*.log"]
codec => json { }
sincedb_path => ["C:/Path/To/Config/Dir/sincedb"]
start_position => "beginning"
}
}
...
"sincedb" отслеживает длину ваших файлов журналов, поэтому для каждого файла журнала должна быть одна строка; если нет, то что-то еще не так.
Надеюсь, что это поможет.
Ответ 2
Объем вывода выглядит не полным. Здесь список выходных параметров http://logstash.net/docs/1.4.2/outputs/elasticsearch
Пожалуйста, попробуйте:
input {
file {
type => "nextgen-app"
path => [ "F:\NextGen-dev\RestApi\app\logs\*.log" ]
codec => "json"
}
}
output {
elasticsearch {
host => "localhost"
port => 9200
protocol => "http"
index => "logstash-%{+YYYY.MM.dd}"
}
}
В качестве альтернативы вы можете попробовать транспортный протокол:
output {
elasticsearch {
host => "localhost"
port => 9300
protocol => "transport"
index => "logstash-%{+YYYY.MM.dd}"
}
}
Я также рекомендую использовать Kibana в качестве средства просмотра данных. Вы можете скачать его на https://www.elastic.co/downloads/kibana