sourcetip

파일이 없는 logstash에 스프링 부트 로그 직접 보내기

fileupload 2023. 7. 17. 21:21
반응형

파일이 없는 logstash에 스프링 부트 로그 직접 보내기

그래서, 저는 쿠버네츠와 스프링 부트를 사용하여 완전한 클라우드 솔루션을 구축하고 있습니다.

내 스프링 부트 애플리케이션은 컨테이너에 배포되고 콘솔에 직접 기록됩니다.컨테이너는 사용 후 삭제되므로 원격 로그 저장소 서버에도 로그를 전송하여 처리하고 탄력적으로 보낼 수 있도록 하고 싶습니다.

일반적으로 애플리케이션을 호스팅하는 서버에 파일 비트를 설치하고 설치할 수 있지만, 파일을 보내기 전에 로그를 기록하지 않도록 하는 내장된 방법이 없을까요?

현재 log4j를 사용하고 있지만 "logback appender"만 있으면 다른 로거로 전환하는 데 문제가 없습니다.

추가할 수 있습니다.logback.xmlresources폴더:

<?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

반응형