Кибана не показывает журналы, отправленные Elasticsearch от Node.js Winston Logger - PullRequest
0 голосов
/ 02 февраля 2020

Я отправляю логи напрямую в 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=().

enter image description here

enter image description here

enter image description here

Есть идеи, как сделать так, чтобы журналы также отображались на Кибане? Кроме того, почему приложение 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');

1 Ответ

1 голос
/ 02 февраля 2020

Я не эксперт по node.js, поэтому я сосредоточусь только на проблеме кибаны. Приложение «Журналы» не предназначено для «пользовательских» журналов / индексов, подобных вашему.

Как указано в документации (https://www.elastic.co/guide/en/kibana/current/xpack-logs.html):

Приложение Logs в Кибане позволяет просматривать журналы для общих серверов, контейнеров. и услуги.

Приложение logs предназначено для мониторинга вашей инфраструктуры и ELK-сервисов, например, через определенные модули Beats (например, Elasticsearch-, Kibana- и Logsta sh -Module Filebeat).

Также из документов (https://www.elastic.co/guide/en/kibana/current/xpack-logs-configuring.html):

Исходная конфигурация по умолчанию для журналов указана в настройках приложения «Журналы» в файле конфигурации Kibana. Конфигурация по умолчанию использует filebeat- * шаблон индекса для запроса данных.

Это объясняет, почему вы не видите никаких данных в приложении журналов, так как ваши индексы используют 'logs- * 'шаблон индекса.

Короче говоря:

Чтобы просмотреть документы в ваших лог-индексах *, вам нужно открыть Discovery (первый значок слева боковой панели в Kibana) и выберите шаблон индекса, который вы уже настроили. Это подходящий способ поиска данных вашего приложения в Кибане.

Я надеюсь, что смогу вам помочь.

...