Prometheus와 APISIX 통합을 위한 최적의 방법

January 13, 2024

Technology

오늘날 클라우드 네이티브 아키텍처에서는 API 게이트웨이의 메트릭을 모니터링하는 것이 중요합니다. Apache APISIX는 고성능 API 게이트웨이로서 다양한 기능을 제공할 뿐만 아니라 Prometheus와의 원활한 통합을 지원하여 주요 API 트래� 메트릭을 수집하고 모니터링할 수 있습니다. 이 글에서는 Apache APISIX에서 Prometheus를 구성하고 사용하는 방법을 탐구하며, 주요 고려 사항을 강조하고 일반적인 메트릭 구성을 권장합니다.

Prometheus 소개

Prometheus는 오픈소스 모니터링 시스템으로, 시간 시계열 데이터를 수집하고 저장하여 시스템 성능을 실시간으로 모니터링하고 분석할 수 있습니다. Apache APISIX와 통합하면 Prometheus는 API 트래픽과 관련된 세부 메트릭을 캡처하는 데 중요한 역할을 합니다.

Apache APISIX에서 Prometheus 플러그인 활성화

  1. Apache APISIX에서 Prometheus 메트릭을 활성화하려면 먼저 config.yaml 파일에서 Prometheus 플러그인을 구성합니다:

    plugins:
      - prometheus
    
  2. 수집하려는 서비스 또는 API에서 Prometheus 플러그인을 구성합니다. 또는 전역적으로 구성할 수도 있습니다. 다음은 cURL 명령을 사용하여 플러그인을 구성하는 예시입니다:

    curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
    {
        "uri": "/hello",
        "plugins": {
            "prometheus":{}
        },
        "upstream": {
            "type": "roundrobin",
            "nodes": {
                "127.0.0.1:80": 1
            }
        }
    }'
    

    더 복잡한 구성은 Prometheus 플러그인 문서를 참조하세요.

Prometheus에서 수집 전략 구성

Prometheus에서 prometheus.yml 파일을 구성하여 APISIX를 새로운 모니터링 대상으로 추가합니다:

scrape_configs:
  - job_name: 'apisix'
    static_configs:
    - targets: ['<APISIX_IP>:<APISIX_PORT>']

Apache APISIX의 일반적인 메트릭

기업별 메트릭은 다를 수 있지만, Apache APISIX의 몇 가지 주요 메트릭은 시스템 모니터링 및 분석을 위한 풍부한 정보를 제공합니다:

  • HTTP 요청 및 응답 메트릭:

    • apisix_http_request_total: APISIX를 통한 총 HTTP 요청을 기록하여 시스템 트래픽 개요를 제공합니다.
    • apisix_http_request_duration_seconds: HTTP 요청 처리 시간을 측정하여 성능 병목 현상을 식별하는 데 도움을 줍니다.
    • apisix_http_request_size_bytes: HTTP 요청 크기를 캡처하여 데이터 분석에 활용합니다.
    • apisix_http_response_size_bytes: HTTP 응답 크기를 모니터링하여 응답 데이터 양을 추적합니다.
  • 업스트림 서비스 메트릭:

    • apisix_upstream_latency: 업스트림 서비스의 응답 지연 시간을 반영합니다.
    • apisix_upstream_health: 업스트림 서비스의 건강 상태를 나타냅니다.
  • 시스템 성능 메트릭:

    • apisix_node_cpu_usage: APISIX 노드의 CPU 사용량을 보고합니다.
    • apisix_node_memory_usage: 메모리 사용량에 대한 통찰력을 제공합니다.
  • 트래픽 메트릭:

    • apisix_bandwidth: 업스트림 및 다운스트림 트래픽에 대한 대역폭 사용량을 상세히 설명합니다.
  • 오류 및 예외 메트릭:

    • apisix_http_status_code: HTTP 응답 상태 코드를 분포로 나타내며, 특히 4xx 및 5xx 오류에 초점을 맞춥니다.

시각화 및 알림

Grafana와 Prometheus 통합을 활용하여 이러한 메트릭을 시각화하는 대시보드를 생성합니다. 또한 Prometheus 알림 규칙을 구성하여 특정 조건에 따라 알림을 설정할 수 있습니다.

Grafana 대시보드 예시: Grafana에서 시간 시계열, 막대 그래프 또는 파이 차트와 같은 다양한 차트를 생성하여 APISIX의 성능 메트릭을 표시합니다. 예를 들어, HTTP 요청 수와 평균 응답 시간을 표시하는 대시보드는 실시간 트래픽 및 성능 통찰력을 제공합니다.

Prometheus 알림 예시: Prometheus의 알림 규칙은 다양한 조건에 대해 구성할 수 있습니다. 예를 들어, apisix_http_request_duration_seconds의 평균 지속 시간이 미리 정의된 임계값을 초과하면 Prometheus가 중요한 알림을 보내도록 구성할 수 있습니다.

최적화 고려 사항

Prometheus 메트릭이 많을수록 모니터링 및 알림 차원이 향상되지만, 이러한 메트릭은 계산 리소스를 소비한다는 점을 인식하는 것이 중요합니다. 더 많은 메트릭은 더 높은 리소스 요구를 의미하며, 이는 비즈니스 시스템에 영향을 미칠 수 있습니다.

버전 3.0부터 Apache APISIX는 Prometheus 플러그인을 크게 최적화하여 메트릭 통계 및 검색을 위한 전용 프로세스를 도입했습니다. 이 개선은 API7.ai가 기여한 것으로, 광범위한 Prometheus 메트릭 통계로 인한 비즈니스 트래픽에 미치는 영향을 완화합니다.

결론

Prometheus와 Apache APISIX를 통합함으로써 기업은 API 인프라에 대한 깊은 통찰력을 얻어 효율적이고 안전한 운영을 보장할 수 있습니다. API 트래픽 모니터링은 점차적으로 문제를 사전에 방지하고 성능을 최적화하며 보안을 보장하는 필수 도구가 되고 있습니다.

Tags: