Thorntail (рой wldfly), ведущий к Greylog

Как я могу включить регистрацию роя wildfly в greylog - или другими словами: ведение журнала в формате gelf? Кто-нибудь уже сделал это?

Похоже, на сайте graylog есть только фреймворки, которые работают вместе с log4j ( gelfj) или logback, но не с системой ведения журналов jboss. А из других вопросов по SO я предполагаю, что невозможно настроить thorntail для входа в систему с log4j (что в любом случае может показаться несколько неправильным: регистрация каналов через jboss, вход в log4j для направления его в gelf...)

Основное требование заключается в том, что я хочу подключить мое приложение Swarm и использовать greylog в качестве централизованного ведения журнала. Я понимаю, что могу настроить Docker для входа в систему Gelf, но это означает, что у меня нет контроля над расширенными функциями GELF в моем приложении, верно?

Каков предпочтительный способ достижения централизованных рубок от колючего хвоста / роя?

0 ответов

Да, можно отправлять логи в graylog через thorntail, потому что некоторые из них реализовали jboss-совместимый обработчик логов gelf для нас. Некоторые ограничения могут быть связаны с тем, какую структуру ведения журнала вы используете. Мне пришлось использовать регистратор jboss через slf4j и я не тратил больше времени на запуск log4j. Может быть, вы узнаете, как этого можно достичь.

Где взять jboss-совместимый обработчик логов для gelf?

Здесь вы найдете git-репозиторий jboss-совместимого обработчика журналов, который поддерживает формат gelf.

https://github.com/mp911de/logstash-gelf

Как настроить обработчик журнала?

Смотрите следующую ссылку для документации этого обработчика журнала.

https://logging.paluch.biz/

Как мне интегрировать его в колючий хвост?

Для этого вы должны сделать некоторую работу.

1. Добавьте зависимость в ваш pom.xml

  <dependency>
        <groupId>biz.paluch.logging</groupId>
        <artifactId>logstash-gelf</artifactId>
        <version>1.12.0</version>
        <scope>provided</scope>
    </dependency>

2. Создайте собственный файл module.xml для Thorntail

SRC / главная / ресурсы / модули / бизнес / Paluch / регистрация / главная / module.xml

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="biz.paluch.logging">
    <resources>
        <artifact name="biz.paluch.logging:logstash-gelf:1.11.2" />
        <artifact name="redis.clients:jedis:2.9.0" />
        <artifact name="org.apache.commons:commons-pool2:2.4.3" />
    </resources>

    <dependencies>
        <module name="org.apache.log4j" />
        <module name="org.slf4j" />
        <module name="javax.api" />
        <module name="org.jboss.logmanager" />
    </dependencies>
</module>

3. Настройте thorntail для использования этого обработчика журнала

swarm:
  jaeger:
  logging:
    file-handlers:
    custom-handlers:
      GELF-HTTP:
        named-formatter: MY_LOG_PATTERN
        attribute-class: biz.paluch.logging.gelf.wildfly.WildFlyGelfLogHandler
        module: biz.paluch.logging
        properties:
          host: "http://graylog"
          extractStackTrace: true
          includeFullMdc: true
          maximumMessageSize: 1048576
    root-logger:
      level: WARN
      handlers:
        - CONSOLE
        - GELF-HTTP

Как сделать регистратор доступным в моем приложении?

import org.jboss.logging.Logger;
import org.slf4j.LoggerFactory;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.Dependent;
import javax.enterprise.inject.Default;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.InjectionPoint;

/**
 * This produces and configures the logger.
 *
 * @author Thomas Herzog <herzog.thomas81@gmail.com>
 * @since 06/08/18
 */
@ApplicationScoped
public class LoggerConfiguration {

    @Produces
    @Default
    @Dependent
    Logger createLogger(final InjectionPoint ip) {
        if (ip.getBean() != null) {
            return Logger.getLogger(ip.getBean().getBeanClass());
        } else if (ip.getMember() != null) {
            return Logger.getLogger(ip.getMember().getDeclaringClass());
        } else {
            return Logger.getLogger("default");
        }
    }
}
Другие вопросы по тегам