APISIX와 Prometheus로 API 건강 상태 유지하기
July 20, 2023
API 상태 점검은 API의 전반적인 상태를 모니터링하기 위한 사전 예방적 접근 방식의 일부입니다. 이를 통해 API의 전반적인 상태를 지속적으로 파악하고 초기 단계에서 문제를 식별할 수 있습니다. 이 글에서는 APISIX와 Prometheus가 어떻게 협력하여 상태 점검 데이터 메트릭을 수집하고 분석하는지 살펴보며, API 관련 문제를 모니터링, 진단, 해결하는 데 도움을 주는 방법을 알아볼 것입니다.
이게 비즈니스에 왜 중요한가요?
서비스 수준 지표(SLIs)와 서비스 수준 목표(SLOs)를 설정하는 것이 사이트 신뢰성 엔지니어링(SRE)의 핵심 요소가 되었다는 사실은 중요합니다. 이는 팀이 서비스(예: 웹사이트 또는 앱)가 얼마나 잘 작동해야 하는지에 대한 명확한 목표를 설정하는 데 도움을 줍니다. 이러한 목표는 내부 서비스(회사 자체 앱에서 사용하는 API 등) 또는 공개 제품(고객이 사용하는 제품)에 대한 것일 수 있습니다. 이는 팀이 시스템 성능을 관리할 수 있는 정량적인 접근 방식을 제공합니다. 예를 들어, 일반적인 SLI에는 오류율, 지연 시간, 처리량, 가용성 등이 포함되며, SLO는 "API 요청의 99.9%가 300ms 이내에 완료되어야 한다"와 같은 것이 될 수 있습니다.
APISIX API 게이트웨이는 API 인프라의 최전방에 위치하며, SLI와 SLO를 측정하는 데 중요한 역할을 할 수 있습니다. 특히 오늘날의 복잡하고 분산된 아키텍처에서는 무엇을 측정할지와 어떻게 측정할지를 고민하는 것이 문제가 될 수 있습니다. APISIX는 API가 소비하는 업스트림 서비스에 대한 지연 시간, 실패한 요청, 처리량 등과 같은 모든 필요한 메트릭을 자동으로 추적합니다. APISIX는 백엔드 서비스에 대한 상태 점검을 수행하여 요청을 처리할 수 있는지 확인하고, 문제가 발생하기 전에 책임 있는 팀에 경고를 보내 다운타임을 최소화하고 시스템 신뢰성을 향상시킵니다.
API 게이트웨이 상태 점검은 어떻게 작동하나요?
일반적으로 API에 대한 상태 점검을 활성화하는 것은 간단한 과정입니다. 각 서비스는 지정된 상태 점검 API 엔드포인트(/health
**)**만 필요로 합니다. 여기서 메모리 사용량, 데이터베이스 연결성, 응답 시간 등과 같은 해당 서비스에 가장 관련성이 높은 메트릭을 검사합니다. Prometheus와 Grafana와 같은 관찰 가능성 플랫폼을 사용하여 결과를 표시하고, 문제가 발생하면 즉시 경고를 보내는 시스템을 사용할 수 있습니다.
APISIX의 장점 중 하나는 여러 서비스에 대해 관찰 가능성 도구 구성 과정을 더 쉽게 만든다는 것입니다. APISIX는 주기적으로 관리하는 백엔드 서비스(업스트림 노드라고도 함)에 요청을 보냅니다. 건강한 상태가 반환되면(일반적으로 200 OK HTTP 상태 코드), 서비스는 건강한 것으로 간주됩니다. 게이트웨이는 응답 시간도 평가하여 느린 응답을 잠재적인 문제의 징후로 간주할 수 있습니다. 서비스가 지정된 시간 내에 응답하지 않거나 오류 상태를 반환하면 비정상으로 표시됩니다. 이 경우 애플리케이션 오류나 느려짐을 방지하기 위해 해당 서비스로의 트래픽 라우팅을 중단하고 대신 건강한 노드로 트래�을 라우팅합니다. 상태 점검을 활성화하는 방법은 여기에서 확인할 수 있습니다.
APISIX Prometheus 플러그인으로 상태 점검 데이터 수집하기
APISIX는 prometheus
라는 플러그인을 통해 Prometheus와 통합되어 API 메트릭을 효율적으로 가져올 수 있습니다. 이는 업스트림 노드의 상태와 관련된 메트릭도 포함합니다. 작동 방식은 다음과 같습니다:
- APISIX Prometheus 플러그인이 활성화되면(활성화 방법은 여기 참조), 일반적으로 **
/apisix/prometheus/metrics
**와 같은 메트릭 URL을 노출합니다. 또한conf/config.yaml
파일에서 URI, 추가 레이블, 스크랩 빈도 및 기타 매개변수를 구성하여 이를 사용자 정의할 수 있습니다.
plugin_attr:
prometheus:
export_uri: /metrics
- Prometheus는 이 URL을 특정 간격으로 스크랩하여 요청 수, 요청 지연 시간, 업스트림 지연 시간, 상태 코드 등과 같은 다양한 성능 매개변수와 관련된 시계열 데이터를 수집합니다.
- APISIX 3.3.0 버전에서 출시된 Prometheus 사용자 정의 메트릭 기능을 통해 이제 API에 대해 더 세분화된 메트릭 데이터를 노출할 수 있습니다. 이 메커니즘은 APISIX가 주기적으로 업스트림 노드가 건강한지 여부를 확인하고 그에 따라 라우팅을 조정할 수 있게 합니다. 이는 실패를 방지하고 시스템의 신뢰성을 향상시키는 데 도움이 되며, API 기반 인프라에 있어 매우 중요합니다. 이러한 상태 점검 결과는 Prometheus 플러그인이 노출하는 메트릭에 통합되어 API의 성능에 대한 포괄적이고 실시간적인 뷰를 제공합니다. 예를 들어, APISIX Gateway의
/metrics
엔드포인트에 간단한 요청을 보내면 수집된 모니터링 데이터와 업스트림 노드의 상태 점검 결과 상태를 관찰할 수 있습니다.
curl <http://127.0.0.1:9091/metrics>
...
# HELP apisix_upstream_status Upstream status from health check
# TYPE apisix_upstream_status gauge
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.5",port="443"} 0
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.5",port="80"} 1
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.7",port="443"} 0
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.7",port="80"} 1
값이 1이면 건강한 상태이고, 0이면 업스트림 노드가 비정상임을 나타냅니다.
- Prometheus 대시보드에서 업스트림 노드의 상태 점검 상태 출력을 확인할 수도 있습니다:
- APISIX Prometheus 플러그인은 Grafana에 자동으로 연결되어 이러한 메트릭을 시각화하도록 구성됩니다.
또한, Prometheus가 TCP/UDP 메트릭을 수집하도록 활성화할 수도 있습니다. 전송 계층에서의 관찰 가능성은 인프라 내 서비스 간 데이터 전송 방식을 이해하는 데 중요한 통찰력을 제공하며, 문제 진단과 성능 최적화에 중요한 역할을 할 수 있습니다.
Prometheus 플러그인 사용자 정의하기
APISIX의 경우, Prometheus 플러그인은 기본적으로 여러 메트릭을 노출합니다. 이러한 메트릭은 구성 가능하며, 특정 요구 사항에 따라 추가 메트릭을 추가하도록 플러그인을 확장할 수 있습니다. API7.ai 팀은 API 상태 점검 및 모니터링에 대한 질문에 항상 답변할 준비가 되어 있으며, 엔지니어들은 새로운 APISIX 사용자를 온보딩하고 필요에 따라 APISIX 기본 구성을 수정하는 데 적극적으로 지원하고 있습니다.
실제 사례: 글로벌 패스트푸드 기업, APISIX와 Prometheus 통합으로 서버 상태 모니터링 개선
전 세계 수천 개의 지점을 보유한 글로벌 패스트푸드 체인(이하 "회사 X")이 액티브-액티브 서버 구성을 달성하고자 했습니다. 그들의 목표는 모든 서버 또는 데이터 센터가 실시간으로 작업 부하를 공유하면서 서비스 중단을 일으키지 않도록 하는 것이었습니다.
회사의 기술 팀은 서버 또는 데이터 센터 간 전환 프로세스를 자동화했습니다. 그러나 비즈니스 트래픽이 액티브 서버 간에 변동하고 부하가 고르지 않게 분배되는 경우가 있었습니다. 일부 서버는 과부하 상태가 되고, 다른 서버는 적은 트래픽을 받아 운영 효율성이 떨어졌습니다. 피크 시간대에는 이로 인해 서버 충돌과 서비스 중단이 발생하여 회사의 디지털 운영에 영향을 미쳤습니다.
APISIX는 회사가 업스트림 서버/데이터 센터의 상태를 지속적으로 모니터링하고 서버 상태에 따라 트래픽을 자동으로 전환할 수 있게 했습니다. 서버가 비정상으로 간주되면 시스템은 중단 없이 서비스를 유지하기 위해 다른 건강한 서버로 자동 전환할 수 있습니다. 특정 시나리오에서 트래픽이 비정상적으로 적거나 서버가 처리하기에 너무 큰 경우, Prometheus의 경고 메커니즘이 알람을 트리거했습니다. 이 통합은 회사 X의 운영 팀이 서버 상태, 트래픽 부하 및 기타 중요한 메트릭을 사전에 모니터링할 수 있게 했습니다.
마무리
요약하자면, APISIX와 Prometheus를 통합하여 상태 점검 데이터 메트릭을 얻는 것은 메트릭 생태계를 크게 개선하여 API의 상태를 더 깊이 이해할 수 있게 합니다. 이는 궁극적으로 운영 효율성 향상, 고객 만족도 증가, 수익 증대와 같은 더 나은 비즈니스 결과로 이어질 수 있습니다. 따라서 메트릭 생태계를 한 단계 업그레이드하고 싶다면 APISIX와 Prometheus의 강점을 활용해 보세요.