Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

855
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!