로그 알람 구현하기

로그 알람을 구현하는 방법은 크게 세 가지를 고려했다.

  1. Java 웹 애플리케이션 로그를 이용해 알람 보내기 (Logback의 LogAppender)
  2. Nagios의 Logfiles 플러그인 이용하기
  3. Logstash 등과 같은 솔루션을 이용하기

각기 장단점이 있다.

Logback 구현

Java 웹 애플리케이션에 새 기능을 넣는 방법이 나머지보다 매우 쉽다. 로깅 설정을 살짝 만지고 바로 로컬에서 테스트하기도 편하니까. 다만 이 방법은

  • Java 웹 애플리케이션이 아닌 다른 구성요소에는 아무 짝에 쓸모가 없다. 예를 들어 Apache 웹 서버 로그를 모니터링하려면 또 뭔가 구현해야 한다.
  • 또한 Logback은 기본적으로 이메일 발송은 지원하지만 Slack이나 Hipchat 같은 외부 알람(채팅 서비스)은 지원하지 않는다. 이런 기능을 원하면 추가 개발이 필요하다.

그래서 일은 일대로 적지 않은데 확장성이 떨어져서 별로다. 당장 뭐라도 빨리 기능 추가를 해야 한다면 몰라도.

Logstash

가장 복잡하지만 가장 인기 있는 구현 방법이다.이 옵션을 간단히 설명하면

• 모든 로그를 한 곳에 모은다
• 로그를 검색엔진으로 분석한다.
• 웹/콘솔 인터페이스를 이용해 로그를 한번에 조회하고 분석한다. (수동)
• 특정 패턴에 대해 알람을 붙인다. (자동)

이런 기능을 제공하는 상용/오픈소스 솔루션은 많다. 심지어 침입탐지시스템까지 연동하는 경우도 있다.

Nagios의 logfiles 플러그인

이 방식은 이미 Nagios로 시스템을 모니터링하는 상황에서 나름 쓸만다. 지정한 로그 파일에 지정한 패턴이 등장하면 Nagios로 알람이 가고, Nagios가 다시 이메일과 슬랙으로 알람을 전달한다.

Nagios에 기본 탑재된 check_log 플러그인은 지정한 파일을 처음부터 끝까지 읽어서 성능이 매우 떨어지는데 check_logfiles는 읽었던 지점을 기억해두기 때문에 새로 들어온 로그만 분석한다. 또한 Logrotate 패턴을 대부분 인식하기 때문에 예를 들어 2014년 11월 11일 23:59에 server.log를 분석하고 12일 00:01 다시 로그를 읽게 되면 server.log와 server–2014–11–11.log 를 둘 다 분석한다. 나름 효율적이다.

Advertisements

최 재훈

블로그, 페이스북, 트위터 고성능 서버 엔진, 데이터베이스, 지속적인 통합 등 다양한 주제에 관심이 많다.
Close Menu