Logback.xml 수정하고 Filebeat로 로그 모니터링 구축하기: ELK와의 연동 방법!
Filebeat + ELK 로 로그모니터링 하기
사내에 ELK 를 지원해주는 부서가 생겼다. 따라서 우리도 쉽게 로그 모니터링을 구축 할 수 있게 되어서 이번 기회에 도전해보려고 한다. 지금까지 로그는 사실 PVC Directory 에 모으고 있었다. 이랬을 경우 문제가 되는 점은 Kubernetes 상에 여러개의 서비스로 떠 있을 경우 로그 파일 하나를 두고 하기 때문에 문제가 생길 수 있다. (그래서 지금 서비스는 1개로 띄워져 있다…) 하지만 오늘 도전했던 방식은 조금 다르다.
1
로그 쌓임 -> FileBeat 가 Log 를 ELK 로 보냄 -> ELK 에서 저장 (사내 서비스여서 2달간 저장)
이런식으로 되기 때문에 모든 로그를 한번에 모아 볼 수가 있었다. 현재는 사내 서비스라서 helm 차트를 수정하기 어렵기 때문에 아쉽게도 여러개의 서비스가 떠있어도 하나로 밖에 보지 못하지만 그 또한 업데이트되면 쉽게 바꿀 수 있을거 같다.
logback.xml 설정해주기
logback 파일을 수정해주면 spring 의 log 를 마음대로 조정 할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<configuration>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/qna.log</file>
<encoder>
<pattern>%d{yyyyMMdd HH:mm:ss.SSS} [%thread] %-5level [%logger{0}:%line] - %msg %n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>application.log.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>20</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="file" />
</root>
</configuration>
여기에서 로그파일의 경로를 설정해주고 로그의 패턴을 설정해준다.
filebeat 설치하기
우리는 deploy 단계가 checkout -> build -> image push -> Paas deploy 순서인데 build 시에 매번 java 를 다운받고 있다. (사내의 build agent 에는 java 가 없다..) 따라서 build 하는 시점에서 filebeat 를 다운받아서 직접 넣기로 했다.
filebeat.yml
filebeat.yml 도 따로 설정을 해준다.
1
2
3
4
filebeat.input:
- type: log
enabled: true
path: "./logs/*.log"
자세한 것은 기억이 나지 않지만 이정도로 짧은 설정이었다.
여러번의 시행착오 끝에 드디어 Kibana 에서 우리의 로그가 뜨는 것을 확인 할 수 있었다! 때마침 미승인 법인에서 들어오는 경우 로그로 표현하고 또 손쉽게 확인하고 싶었는데 그런 상황들을 쉽게 해결 할 수 있게 되었다!