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
Как настроить обработчик журнала?
Смотрите следующую ссылку для документации этого обработчика журнала.
Как мне интегрировать его в колючий хвост?
Для этого вы должны сделать некоторую работу.
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");
}
}
}