로그 플러그인 변환으로 Observability 강화하기
Yong Qian
February 24, 2023
오늘날, 로그는 API 게이트웨이에서 특히 오류 탐지 및 문제 해결에 있어 매우 중요하며, 운영 및 유지보수 비용을 절감하는 데 큰 역할을 합니다. API 게이트웨이 로그는 데이터 수집을 지원하는 데에도 큰 가치가 있습니다. 관찰 가능성과 시스템 안정성을 향상시키기 위해 오픈소스 API 게이트웨이인 Apache APISIX는
elasticsearch-logger
,kafka-logger
,loggly
,error-log-logger
와 같은 다양한 로그 플러그인을 지원합니다.
게이트웨이 로그의 가치
디지털 시대에 비즈니스가 빠르게 성장함에 따라 소프트웨어 아키텍처는 점점 더 복잡해지고 있으며, 이로 인해 오류 탐지와 진단이 훨씬 더 어려워지고 있습니다. 이는 다시 한번 소프트웨어 관찰 가능성의 중요성을 강조합니다.
로그는 관찰 가능성의 세 가지 기둥 중 하나입니다. 로그는 시스템 관리자와 개발자에게 시스템의 운영 상태에 대한 통찰력을 제공하여 문제를 신속하게 식별하고 해결할 수 있도록 돕습니다.
또한, 로그는 데이터 마이닝, 감사, 보안 모니터링과 같은 추가적인 목적으로도 사용될 수 있으며, 시스템의 규정 준수와 보안을 유지하는 데 도움을 줍니다.
API 게이트웨이는 애플리케이션과 외부 세계를 연결하며, 조직이 API 호출을 더 잘 관리하고 모니터링할 수 있도록 해줍니다. 이는 API 호출 로그를 기록하는 중요한 기능을 포함합니다.
다음 섹션에서는 API 게이트웨이 로그의 가치를 두 가지 관점에서 분석하겠습니다.
운영 및 유지보수의 가치
전통적인 시스템 운영 및 유지보수(operations & maintenance)이든 현대적인 SRE(Site Reliability Engineering)이든, 시스템의 안정성을 보장하기 위해 오류를 발견하고 수정하는 것은 항상 최우선 과제입니다. 이는 대규모 온라인 비즈니스의 경우, 단 1초의 다운타임도 큰 비즈니스 손실을 초래하고 사용자 경험에 해를 끼칠 수 있기 때문입니다.
API 게이트웨이는 전체 시스템의 최전선에 위치하며 "센티넬" 역할을 할 수 있습니다. 우리는 API 게이트웨이의 접근 로그에서 풍부한 중요한 데이터를 추출할 수 있으며, 이는 운영 및 유지보수 시스템에 매우 중요합니다:
- 업스트림 및 다운스트림 상태 코드를 분석하여 웹사이트 가용성과 특정 업스트림 서비스의 가용성을 모니터링합니다.
- 접근 로그를 사용하여 웹사이트 트래픽을 모니터링하고 DDoS와 같은 공격을 신속하게 탐지합니다.
- 트래픽 추세를 분석하여 비즈니스 시스템의 확장 또는 축소를 위한 참고 자료를 제공합니다.
- 요청 처리 시간을 추적하여 인터페이스 수준의 성능 보고서를 생성하고, 비즈니스 시스템 성능 최적화를 위한 데이터 참고 자료로 사용합니다.
위의 내용은 API 게이트웨이 로그의 몇 가지 모범 사례로, 많은 기업의 운영 및 유지보수 시스템에서 널리 채택되고 구현되고 있습니다.
비즈니스 가치
널리 인정받는 운영 가치와 비교하여, 게이트웨이 로그의 비즈니스 가치는 종종 간과됩니다.
예를 들어, 사용자 행동 분석에서 인코딩은 프로그램 내 이벤트 추적을 통해 데이터를 수집하는 가장 일반적인 방법입니다. 그러나 잘 설계된 API의 경우, 게이트웨이 로그는 이러한 요구 사항을 자연스럽게 충족할 수 있습니다. 결과적으로, 다음과 같은 작업을 수행할 수 있습니다:
- 클라이언트 IP를 분석하여 트래픽의 지리적 분포를 파악합니다.
- HTTP Referer를 분석하여 각 페이지에 대한 사용자 접근 경로를 이해합니다.
- 주요 API의 집계 통계를 통해 중요한 비즈니스 지표를 직접 얻을 수 있습니다. 예를 들어, 사용자 등록 및 주문 처리 API의 성공적인 호출 횟수를 계산하여 지정된 기간 내의 신규 사용자 수와 주문 수를 얻을 수 있습니다.
물론, 게이트웨이 로그는 이벤트 추적보다 유연성이 떨어지며, 사용자 정의 데이터 수집 요구 사항을 충족할 수는 없지만, 기본적인 데이터 마이닝 요구 사항을 충족할 만큼 충분한 비즈니스 가치를 가지고 있습니다.
Apache APISIX는 동적, 실시간, 고성능의 클라우드 네이티브 API 게이트웨이로, 로드 밸런싱, 동적 업스트림, 카나리 릴리스, 서킷 브레이커, 인증 authentication, 관찰 가능성과 같은 풍부한 트래픽 관리 기능을 제공합니다.
이러한 기능 중 많은 부분이 플러그인을 통해 제공되며, 수십 개의 로깅 플러그인이 포함됩니다. 다음은 APISIX의 대표적인 로깅 플러그인을 예로 들어, 게이트웨이 로그를 로그 분석 시스템과 통합하여 더 많은 가치를 창출하는 방법을 설명합니다.
APISIX의 대표적인 로깅 플러그인 소개
elasticsearch-logger
Elastic Search는 대량의 데이터를 처리하기 위한 분산형 오픈소스 검색 및 분석 엔진으로, 로그 분석 분야에서 매우 유명합니다. 이를 보완하는 데이터 대시보드인 Kibana는 다양한 통계 차트를 쉽게 사용자 정의하여 조직의 시각적 쿼리 분석 요구를 충족시킬 수 있습니다.
실제 응용 프로그램에서, 대부분의 전통적인 소프트웨어 로그는 로컬 파일에 저장되기 때문에, Elastic Search 생태계의 Filebeat
프로젝트를 사용하여 로컬 머신의 로그 파일을 모니터링하고 증분 로그를 Elastic Search 서버로 전송합니다.
그러나 APISIX가 제공하는 elasticsearch-logger 플러그인은 APISIX 접근 로그를 직접 Elastic Search 서버로 전송할 수 있으며, 이는 다음과 같은 이점을 제공합니다:
- Filebeat 컴포넌트의 배포가 필요 없어 처리 체인이 짧아지고 컴퓨팅 리소스가 절약됩니다.
- 로그가 디스크에 저장되지 않으므로 디스크 공간 사용량에 대해 걱정할 필요가 없습니다. 그러나 접근 로그는 매우 큰 양일 수 있으며, 파일 회전이 제대로 처리되지 않으면 머신의 디스크를 빠르게 채워 실패를 초래할 수 있습니다. 또한, 디스크와의 상호 작용은 게이트웨이의 성능을 저하시킬 수도 있습니다.
kafka-logger
게이트웨이 접근 로그는 한 가지 두드러진 특징을 가지고 있습니다: 로그 데이터의 양은 비즈니스 요청의 양에 비례합니다: 요청이 많을수록 로그도 많아집니다.
온라인 비즈니스는 일반적으로 요청량에 주기적인 패턴을 보입니다. 예를 들어, 음식 배달 플랫폼은 식사 시간에 높은 트래픽을 경험하는 반면, 비디오 사이트는 퇴근 시간에 피크를 경험합니다.
이는 로그 저장 시스템에 큰 도전을 제시하며, 트래픽 피크 기간 동안 시스템이 적절하게 기능할 수 있도록 보장하는 것은 모든 ElasticSearch 관리자에게 중요한 기술입니다.
메시지 큐는 트래픽을 균형 있게 조절하는 최고의 도구입니다. 게이트웨이와 저장 시스템 사이에 메시지 큐를 도입하여 로그 버퍼를 제공하면, 트래픽 피크 기간 동안 저장 시스템의 부담을 크게 줄일 수 있습니다.
이를 위해 APISIX는 kafka-logger를 제공하며, 이는 접근 로그를 Kafka 서버로 전송하여 로그 저장에 직접적인 영향을 피할 수 있습니다.
loggly
최근 몇 년 동안, SaaS(Software as a Service) 개념이 점점 인기를 끌면서, 낮은 진입 장벽과 사용량 기반 가격 정책으로 많은 중소기업의 사랑을 받고 있습니다. 로그 분석 분야에서도 많은 SaaS 제품이 등장했으며, loggly는 풍부한 로그 소스와 분석 능력으로 선두 주자로 자리 잡았습니다.
이러한 배경에서, 활발한 APISIX 커뮤니티는 즉시 사용 가능한 Loggly 플러그인을 개발했으며, 이는 자격 증명 정보만 구성하면 APISIX 접근 로그를 Loggly 서비스로 직접 전송할 수 있어 매우 편리합니다.
Loggly 플러그인과 마찬가지로, APISIX는 google-cloud-logging, sls-logger, tencent-cloud-cls 플러그인도 제공하며, 이를 통해 주요 클라우드 벤더의 로그 서비스와 쉽게 통합할 수 있습니다.
error-log-logger
위에서 소개한 플러그인은 모두 접근 로그를 수집하기 위한 것입니다. 그러나 APISIX에는 또 다른 유형의 로그, 즉 오류 로그(error.log
)가 있으며, 이는 게이트웨이 오류 진단에 매우 중요합니다.
따라서 APISIX는 error-log-logger를 제공하여 오류 로그를 원격 서버로 전송하여 저장하고 분석할 수 있도록 합니다. 실제로, APISIX의 로깅 레벨 구성을 사용하여 더 많은 디버그 또는 정보 수준의 로그를 출력할 수 있으며, 이는 게이트웨이 운영 상태에 대한 더 상세한 로그를 포함합니다. 이러한 로그를 사용하여 대부분의 문제를 해결할 수 있습니다.
요약
게이트웨이 로그는 엄청난 가치를 가지고 있으며, Apache APISIX 프로젝트의 풍부한 로그 플러그인을 통해 커뮤니티의 기업 사용자들이 게이트웨이 로그의 가치를 인정하고 있음을 알 수 있습니다. 또한, 이러한 플러그인은 새로운 사용자가 로그 시스템을 구축하는 비용을 더욱 줄여줍니다.
또한, APISIX에는 metrics
와 tracing
이라는 두 가지 유형의 관찰 가능성 플러그인이 있습니다. 이들은 로그 플러그인과 결합하여 게이트웨이의 관찰 가능성을 더욱 향상시키고 시스템 안정성을 구축하는 데 도움을 줄 것입니다.