Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

849
Visualizações
¿Cómo enviar registros de Spring Boot directamente al servidor de Elasticsearch?

Estoy buscando una forma mejor/más nueva de enviar registros de la aplicación Spring Boot directamente al servidor de Elasticsearch sin usar Filebeats o Logstash. ¿Cómo puedo hacer eso? ¿Existe una forma simple/moderna en Spring Boot o usando alguna biblioteca buena/reputada para lograrlo?

Lo que necesito es enviar registros directamente desde Spring Boot a Elasticsearch sin ningún servicio intermedio como Logstash. Si es una biblioteca de terceros que puede agregar a pom.xml y si lo está haciendo completamente, está bien. Necesito la propia aplicación Spring para manejar esto. He revisado algunas preguntas similares en Stack Overflow.

Pero algunas bibliotecas están obsoletas ahora y otras no se actualizan durante mucho tiempo. Me gustaría saber acerca de una nueva biblioteca o una forma de hacer esto ahora. Básicamente, lo que está escribiendo en la consola debe enviarse a Elasticsearch.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puede incluir la biblioteca logback-elastic-appender en su pom.xml y usar la clase com.internetitem.logback.elasticsearch.ElasticsearchAppender incluida como appender en la configuración de registro en el archivo logback.xml

 <dependency> <groupId>com.internetitem</groupId> <artifactId>logback-elasticsearch-appender</artifactId> <version>1.6</version> </dependency>

¿Es esa una de las bibliotecas que no quería usar porque no se ha actualizado recientemente? Si es así, puede escribir un agregador personalizado y señalarlo en el archivo logback.xml . Una implementación simple del appender podría verse a continuación:

 package com.example.demo; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.LinkedHashMap; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import org.springframework.web.reactive.function.client.WebClient; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; import reactor.core.publisher.Mono; public class ElasticSearchAppender extends AppenderBase<ILoggingEvent> { private static final String ELASTIC_SEARCH_API_HOST = "http://localhost:9200"; private static final String ELASTIC_SEARCH_INDEX_NAME = "dummy-index"; private static final WebClient webClient = WebClient.create(ELASTIC_SEARCH_API_HOST); private static final Logger LOGGER = Logger.getLogger(ElasticSearchAppender.class.getName()); public static final DateTimeFormatter ISO_8601_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX") .withZone(ZoneId.systemDefault()); @Override protected void append(ILoggingEvent eventObject) { Map<String, Object> loggingEvent = new LinkedHashMap<>(); loggingEvent.put("@timestamp", ISO_8601_FORMAT.format(Instant.ofEpochMilli(eventObject.getTimeStamp()))); loggingEvent.put("message", eventObject.getMessage()); // Add additional fields like MDC webClient.post() .uri("/{logIndex}/_doc", ELASTIC_SEARCH_INDEX_NAME) .bodyValue(loggingEvent) .retrieve() .bodyToMono(Void.class) .onErrorResume(exception -> { LOGGER.log(Level.SEVERE, "Unable to send log to elastic", exception); return Mono.empty(); }) .subscribe(); } }

inicio de sesión.xml:

 <configuration> <appender name="ELASTIC" class="com.example.demo.ElasticSearchAppender" /> <root level="INFO"> <appender-ref ref="ELASTIC"/> </root> </configuration>
over 4 years ago · Santiago Trujillo Relatório

0

Puede usar el REGISTRO que proporciona Spring boot:

 import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; private static final Logger LOGGER = LogManager.getLogger(yourClass.class); LOGGER.info("PRINT THIS OUT");

Esto debería aparecer en un archivo llamado "Mensajes" en frijoles mágicos elásticos.

Esto proviene de la dependencia spring-boot-starter-web.

 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
over 4 years ago · Santiago Trujillo Relatório

0

Cree su propio servidor Elastic de hospedaje, agregue elastic.jar al proyecto y agregue configuraciones de Elastic a su Dockerfile :

 java -javaagent:elastic-apm-agent-1.0.jar \ -Delastic.apm.service_name=project_name \ -Delastic.apm.server_urls=http://elastic_server_url \ -Delastic.apm.secret_token= \ -Delastic.apm.environment=$ACTIVE_PROFILE \ -Delastic.apm.application_packages=package_name \
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda