Я отправляю логи напрямую в Elasticsearch из приложения Node.js, используя пакеты winston
и winston-elasticsearch
. Elasticsearch 7.5.1, Logsta sh и Kibana 7.5.1 были развернуты на удаленном сервере с использованием Docker Compose.
Проблема 1: После запуска отправляемого файла node.js 2 журнала сообщений в Elasticsearch, программа не выходит автоматически, чтобы вернуться в терминал. Использование Node.js v12.6.0 на Ma c OS X Mojave 10.14.6.
Проблема 2: После того, как эти 2 сообщения журнала были отправлены в Elasticsearch, их можно просмотреть с помощью веб-браузер на http://<example.com>:9200/logs-2020.02.01/_search
.
{"took":5,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":2,"relation":"eq"},"max_score":1.0,"hits":[{"_index":"logs-2020.02.01","_type":"_doc","_id":"85GgA3ABiaPPk4as1pEc","_score":1.0,"_source":{"@timestamp":"2020-02-02T02:00:35.789Z","message":"a debug message","severity":"debug","fields":{}}},{"_index":"logs-2020.02.01","_type":"_doc","_id":"9JGgA3ABiaPPk4as1pEc","_score":1.0,"_source":{"@timestamp":"2020-02-02T02:00:35.791Z","message":"an info log","severity":"info","fields":{}}}]}}
Однако эти журналы не отображаются на Kibana, например, в разделе «Журналы» на https://<example.com>/app/infra#/logs/stream?_g=()
.
Есть идеи, как сделать так, чтобы журналы также отображались на Кибане? Кроме того, почему приложение Node.js не закрывается после отправки сообщений журнала?
Спасибо!
Node.js Приложение
const winston = require('winston');
const ElasticsearchWinston = require('winston-elasticsearch');
const options = {
console: {
level: 'debug',
handleExceptions: true,
json: false,
colorize: true
},
elasticsearch: {
level: 'debug',
clientOpts: {
node: 'http://user:pass@example.com:9200',
log: 'debug',
maxRetries: 2,
requestTimeout: 10000,
sniffOnStart: false,
}
}
}
var logger = winston.createLogger({
exitOnError: false,
transports: [
new winston.transports.Console(options.console),
new ElasticsearchWinston(options.elasticsearch)
]
});
logger.debug('a debug message');
logger.info('an info log');