API 호출량을 Grafana Time Series Panel로 시각화하여 모니터링 강화
API 호출량을 효과적으로 모니터링하고 분석하는 것은 시스템 성능과 보안 관리에 필수적입니다. 이를 위해 시간별 전체 API 호출량을 api_detection 테이블을 기반으로 Grafana Time Series Panel을 사용하여 시각화하는 방법을 소개합니다. 이 접근법은 실시간 데이터 분석과 최적화에 큰 도움을 주고 있습니다.
목차
1. 전제 조건
2. 데이터 구조 개요
3. Grafana와 Time Series Panel: 시간 기반 모니터링 도구
4. 시간별 API 호출량 시각화의 장점
5. Grafana Time Series Panel 쿼리
6. 시각화 결과
7. 결론
1. 전제 조건
- Grafana: 최신 버전의 Grafana가 설치되어 있으며, 데이터 소스(예: PostgreSQL, MySQL 또는 F5 LADT의 데이터베이스와 연결된 소스)와 연결됨.
- 데이터 소스: 민감한 정보 등이 포함된 데이터베이스.
이 포스트에서는 Clickhouse Database를 사용합니다.
2. 데이터 구조 개요
사용되는 데이터 테이블은 시간별 API 호출량을 추적하기 위한 핵심 필드를 포함합니다:
- Timestamp: 이벤트 발생 시간
- host: 호스트 정보
- accesses: 시간별 API 호출 수
3. Grafana와 Time Series Panel: 시간 기반 모니터링 도구
Grafana는 다양한 데이터 소스를 통합하고 시각화하는 오픈소스 플랫폼으로, 시간에 따른 데이터 변화를 분석하는 데 적합합니다. Time Series Panel은 선 그래프나 영역 그래프로 시간별 데이터를 표시하며, 트렌드 분석과 패턴 인식을 지원합니다. 이 패널은 필터링, 줌인/줌아웃, 사용자 지정 시간 범위를 통해 세부적인 모니터링을 가능하게 하며, API 호출량의 변동을 실시간으로 추적할 수 있습니다.
4. 시간별 API 호출량 시각화의 장점
시간별 API 호출량을 Time Series Panel로 시각화하면 다음과 같은 이점이 있습니다:
- 트렌드 파악: 일일, 주간 호출 패턴을 분석해 비정상적인 피크 감지.
- 성능 최적화: 높은 호출량으로 인한 서버 부하를 사전에 식별.
- 보안 모니터링: 의심스러운 호출 증가(예: DDoS 공격)를 빠르게 탐지.
5. Grafana Time Series Panel 쿼리
Grafana에서 사용된 쿼리는 다음과 같습니다.
SELECT
Timestamp,
host,
accesses
FROM {table}

위 테이블의 데이터를 기준으로 Grafana Dashboard를 생성합니다.
1. 사용할 data source를 선택합니다.

2. SQL Editor의 쿼리 입력란에 쿼리를 작성합니다.
이 포스트에서는 아래와 같은 쿼리를 사용합니다.
SELECT
Timestamp AS time,
host,
SUM(accesses) AS total_accesses
FROM "api_detection"."detected_api_endpoints"
GROUP BY time, host
ORDER BY time ASC

위와 같이 host가 여러 개가 있는 경우 그래프의 모양이 이상하게 나타날 수 있습니다. 이런 경우 Transform data 탭에서 Add transformation 버튼을 클릭합니다.

나타나는 화면에서 “Prepare time series”를 클릭하고 format은 “Multi-frame time series”를 선택합니다.

3. 아래와 같이 host 별로 정상적으로 나타나는 것을 확인할 수 있습니다.

4. 만약 그래프가 안나타나면 우측 상단의 Panel 검색에서 “time series”를 검색하여 선택하면 됩니다.

5. 테이블은 작성한 쿼리를 기준으로 생성되며 이 포스트에서 사용된 쿼리 내용은 다음과 같습니다.
-- 시간별(host 단위) API 접근 횟수를 집계하는 쿼리
SELECT
Timestamp AS time, -- 요청이 감지된 시간(Timestamp 컬럼을 time으로 별칭 지정)
host, -- 요청이 발생한 호스트명
SUM(accesses) AS total_accesses -- 해당 시간대와 호스트에서 발생한 총 접근 횟수
FROM "api_detection"."detected_api_endpoints" -- API 접근 탐지 결과를 저장한 테이블
GROUP BY time, host -- 시간별 및 호스트별로 그룹화
ORDER BY time ASC -- 시간 오름차순 정렬 (과거 -> 현재)
6. 시각화 결과
Time Series Panel은 다음과 같은 데이터를 시간에 따라 선 그래프로 표시합니다:
- time: 이벤트 발생 시간
- host: 호스트 정보
- total_accesses: 해당 시간대의 총 API 호출 수
그래프는 호출량의 변동을 직관적으로 보여주며, 특정 시간대의 이상치를 쉽게 식별할 수 있습니다. 예를 들어, 오후 1시에서 2시 사이의 호출량 급증이 보안 문제나 트래픽 과부하를 시사할 수 있습니다.
7. 결론
Grafana Time Series Panel을 활용한 이 솔루션은 시간별 API 호출량을 효과적으로 시각화하여 시스템 모니터링과 보안 강화를 지원합니다. 트렌드 분석을 통해 성능 최적화와 잠재적 보안 위협을 사전에 대비할 수 있습니다.
Grafana의 기술 지원이 필요하시다면, NGINX STORE에 연락하여 논의하십시오.
댓글을 달려면 로그인해야 합니다.