티스토리 뷰

카테고리 없음

[ELK] Spring boot + ELK ( 1 )

박강균 IT 2022. 3. 23. 09:53

ELK(ElasticSearch,Logstash,Kibana)

 

 서비스 수가 늘어나면서 수집해야할 로그도 많아져 ,ELK 스택을 사용해야 할 일이 생겼다.

일단 ELK를 사용하는 이유는 간단하다. 추후에 Kafka와도 연동을 할 것이지만

중앙집중식 로깅시스템을 구축하기에 알맞은 시스템이다. 

LogStash부터 연동하기로 했다.  

 

ELK 같은 경우에는 설치법 같은 경우는 공식 사이트에서 잘 제공되고 있다. 

구축한 환경은 CentOS를 활용해서 제작을 했다. 

 

먼저 차근차근 제작을 위해서 Spring Boot 와 LogStash를 연동하는 작업을 먼저 진행했다. 

 

 

Linux환경을 기반으로 기본적으로 apt-get이나 yum으로 설치했을 때 기본적으로

아래의 폴더에 설치 파일이 존재한다. 

/usr/share/logstash

 

그 뒤에 conf 파일을 제작해야 한다. conf 파일의 위치는 어느곳이든 상관이 없다. 

나 같은 경우에는 설치폴더에 conf라는 폴더를 생성하고 vim통해서 파일을 만들었다. 

[root@localhost logstash]# mkdir conf
[root@localhost logstash]# vim conf/logstash-sample.conf

해당 파일에는 다음과 같이 작성해준다. 

input {
      tcp{
        port => 4560
        codec => json_lines
        }
}
output {
   stdout {}
}

logstash의 Conf파일은 기본적으로 input ( 로그 수집을 위한 공간) output ( 로그 출력을 위한 공간) 이 있다.

데이터를 어떻게 받을 것인지 어떻게 출력할 것인지에 따라 내용은 변한다.

하지만 이번엔 스프링 부트와 연동을 위한 시스템을 구축하기 위해서 

 port번호와 codec을 json형태로 설정해줬다. 

 

다음으로는 Spring Boot 파일이다.

먼저 gradle에 다음과 같은 문장을 입력하자.

implementation 'net.logstash.logback:logstash-logback-encoder:6.6'

 

logstash와 spring boot를 연동 할 수 있도록 도와주는 implementation객체이다. 

 

그뒤 src/main/resources에 logback.xml이라는 파일을 생성해주고 아래와 같은 내용을 입력해준다. 

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 	<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
 		<destination>127.0.0.1:4560</destination>
 		<encoder class="net.logstash.logback.encoder.LogstashEncoder"></encoder>
 	</appender> 
 	
 	<root>
 		<level value="INFO"/>
 		<appender-ref ref="LOGSTASH"/>
 	</root>
</configuration>

연동작업은 이걸로 끝이다. 

이제 다시 CentOS로 돌아와 다음과 같은 명령어를 입력해보자.

[root@localhost logstash]# bin/logstash -f conf/logstash-sample.conf

만약 conf파일의 위치가 다르다면 해당 위치로 설정해주면 된다. 

-f 옵션은 해당경로에 있는 파일을 실행시키기 때문이다. 

그 뒤 Spring Boot 어플리케이션을 실행시키고 다음 과 같은 화면이 뜬다면 성공이다. 

 

이대로 실행하면 안되는 경우도 많은데, 대부분 CentOS환경에서 작업을 진행할때

원격으로 ssh접속을 하는 경우가 많기 때문이다. 

일단 현재 IP 가 127.0.0.1로 되어 있는데 이 부분은 원격접속 시 사용할 IP로 바꿔준 뒤 

이럴때는 firewall 명령어를 통해서 사용할 포트를 열어줘야한다. 

 firewall-cmd --permanent --zone=public --add-port=4560/tcp

 firewall-cmd --reload

 firewall-cmd --list-ports

 

그러면 문제없이 잘 실행된다. 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함