반응형
파일이 없는 logstash에 스프링 부트 로그 직접 보내기
그래서, 저는 쿠버네츠와 스프링 부트를 사용하여 완전한 클라우드 솔루션을 구축하고 있습니다.
내 스프링 부트 애플리케이션은 컨테이너에 배포되고 콘솔에 직접 기록됩니다.컨테이너는 사용 후 삭제되므로 원격 로그 저장소 서버에도 로그를 전송하여 처리하고 탄력적으로 보낼 수 있도록 하고 싶습니다.
일반적으로 애플리케이션을 호스팅하는 서버에 파일 비트를 설치하고 설치할 수 있지만, 파일을 보내기 전에 로그를 기록하지 않도록 하는 내장된 방법이 없을까요?
현재 log4j를 사용하고 있지만 "logback appender"만 있으면 다른 로거로 전환하는 데 문제가 없습니다.
추가할 수 있습니다.logback.xml
에resources
폴더:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration scan="true">
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<param name="Encoding" value="UTF-8"/>
<remoteHost>localhost</remoteHost>
<port>5000</port>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"app_name":"YourApp", "app_port": "YourPort"}</customFields>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="logstash"/>
</root>
</configuration>
그 다음 추가logstash encoder
종속성:
pom.xml
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.11</version>
</dependency>
logstash.conf
input {
udp {
port => "5000"
type => syslog
codec => json
}
tcp {
port => "5000"
type => syslog
codec => json_lines
}
http {
port => "5001"
codec => "json"
}
}
filter {
if [type] == "syslog" {
mutate {
add_field => { "instance_name" => "%{app_name}-%{host}:%{app_port}" }
}
}
}
output {
elasticsearch {
hosts => ["${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"]
index => "logs-%{+YYYY.MM.dd}"
}
}
나는 방금 내 저장소에 완전한 작동 예제를 만들었습니다. 누군가에게 도움이 되기를 바랍니다.
언급URL : https://stackoverflow.com/questions/57399354/send-spring-boot-logs-directly-to-logstash-with-no-file
반응형
'sourcetip' 카테고리의 다른 글
상한은 '자동'으로 설정하되 하한은 고정하는 방법 (0) | 2023.07.17 |
---|---|
Excel - 다른 목록을 기준으로 데이터 추출 (0) | 2023.07.17 |
2개 숫자의 최대값(더 큰, 더 큰)을 찾으려면 어떻게 해야 합니까? (0) | 2023.07.17 |
도커 mongodb 구성 파일 (0) | 2023.07.17 |
각도 주입토큰이 '주입 공급자 없음'을(를) 슬로우합니다.토큰' (0) | 2023.07.17 |