Как да влезете от Node.js с Express към ELK?

Имам сървърно приложение Node.js с Express. Бих искал да регистрирам активността му в ElasticSearch и да визуализирам регистрационните файлове с помощта на Kibana.

Какъв би бил правилният начин да направите това?

Трябва ли да напиша лог файл с json редове и да го прочета с Logstash?


person Michael    schedule 06.01.2016    source източник


Отговори (1)


Бих препоръчал log4js. Той има набор от полезни добавки и logstash е един от тях. Работи през UDP.

Ето пример, взет от сайта log4js:

var log4js = require('../lib/log4js');

/*
 Sample logstash config:
   udp {
    codec => json
    port => 10001
    queue_size => 2
    workers => 2
    type => myAppType
  }
*/

log4js.configure({
  "appenders": [
    {
      type: "console",
      category: "myLogger"
    },
    {
      "host": "127.0.0.1",
      "port": 10001,
      "type": "logstashUDP",
      "logType": "myAppType", // Optional, defaults to 'category'
      "fields": {             // Optional, will be added to the 'fields' object in logstash
        "field1": "value1",
        "field2": "value2"
      },
      "layout": {
        "type": "pattern",
        "pattern": "%m"
      },
      "category": "myLogger"
    }
  ]
});

var logger = log4js.getLogger("myLogger");
logger.info("Test log message %s", "arg1", "arg2");

person Simon Johnson    schedule 06.01.2016
comment
Проблемът с UDP е, че ако ElasticSearch падне по някаква причина, започвате да губите данни, докато с файловете имате някакъв буфер на твърдия диск, преди да започнете да губите данни. - person Michael; 07.01.2016
comment
Друга алтернатива би била използването на RabbitMQ или нещо подобно, за да се гарантира, че няма загубени съобщения в журнала. - person Skippy; 19.02.2016