Information
로그 분석 및 모니터링

로그 수집 및 적재

목적

본 문서는 각 마이크로서비스에서 발생하는 로그를 효율적으로 수집, 적재하고, Elasticsearch와 Kibana를 사용하여 이를 모니터링하는 방법에 대해 설명합니다.

로그 수집

각 마이크로서비스는 표준 로깅 라이브러리(logrus)를 사용하여 애플리케이션 로그를 생성합니다. 로깅 라이브러리는 Elasticsearch로 로그를 직접 전송할 수 있는 훅(hook) 기능을 지원합니다. 이를 통해, 서비스 로그는 실시간으로 Elasticsearch에 전송됩니다. 로그 레벨, 포맷 및 기타 메타데이터는 각 서비스의 설정 파일을 통해 구성할 수 있습니다.

로그 적재

Elasticsearch에 적재된 로그는 인덱스 관리 정책에 따라 자동으로 분류되고 저장됩니다. 일반적으로 로그 타입, 서비스 이름, 날짜 등을 기준으로 인덱스가 생성됩니다. 각 로그는 timestamp, log level, message, service name 등의 필수 필드와 함께, 에러 발생 시 stack trace, 요청 ID 등의 추가 정보를 포함할 수 있습니다. 데이터 보존 정책에 따라, 오래된 로그 데이터는 자동으로 삭제되거나 아카이브될 수 있습니다.

로그 분석 및 모니터링

Kibana 설정

Kibana는 Elasticsearch에 저장된 로그 데이터를 시각화하고 분석하는 웹 기반 인터페이스를 제공합니다.

Kibana 접속 주소: https://kibana.luxrobo.link/ (opens in a new tab)

대시보드 구성

Kibana에서는 로그 데이터를 기반으로 다양한 시각화 도구(라인 차트, 바 차트, 파이 차트, 테이블 등)를 제공합니다. 사용자는 시각화 도구를 사용하여 로그의 분포, 에러 발생 빈도, 특정 에러 유형의 추이 등을 시각화할 수 있습니다. 여러 시각화 도구를 하나의 대시보드에 모아, 서비스의 전반적인 상태를 한눈에 모니터링할 수 있습니다.

알림 설정

Kibana의 Alerting 기능을 사용하여, 특정 조건을 만족하는 경우(예: 특정 에러 로그의 급격한 증가, 서비스 다운 등) 이메일, Slack 등으로 알림을 받을 수 있습니다. 알림 설정을 통해 시스템의 이상 상태를 신속하게 감지하고 대응할 수 있습니다.

결론

Elasticsearch와 Kibana를 활용한 로그 관리 시스템은 마이크로서비스 아키텍처에서 서비스의 안정성을 높이고, 문제를 신속하게 진단 및 해결하는 데 필수적입니다. 본 문서를 통해 설정된 로그 수집 및 모니터링 프로세스는 개발 팀이 시스템의 상태를 지속적으로 관찰하고, 성능을 최적화하는 데 도움을 줄 것입니다.