[4] k6: 테스트 시각화(k6, InfluxDB, Grafana 대시보드 구축)

2025. 12. 13. 21:18·Test/k6

7. k6 시각화

k6는 CLI 기반 부하 테스트 도구지만, 시각화 기능이 기본적으로 제공되지는 않는다. 실시간으로 결과를 모니터링하고 테스트 이력을 남기고 싶다면, InfluxDB와 Grafana를 연동하여 시각화 대시보드를 구축할 수 있다. 

7.1. 시스템 구성 흐름

k6 → InfluxDB → Grafana
k6: 성능 테스트 실행, 메트릭 생성
InfluxDB: k6가 생성한 메트릭을 시계열 데이터로 저장
Grafana: InfluxDB 데이터를 기반으로 시각화 대시보드 구성

 

7.2. 환경 구성

[1] docker-compose.yaml 수정

InfluxDB와 Grafana 추가

vi docker-compose.yaml
version: '3.8'

services:
  # Redis 서버
  redis:
    image: redis:latest
    container_name: redis
    restart: always
    volumes:
      - redis_volume_data:/data
    ports:
      - "6379:6379"

  # Redis Insight
  redis-insight:
    image: redislabs/redisinsight:latest
    container_name: redis_insight
    restart: always
    ports:
      - "5540:5540"
    volumes:
      - redis_insight_volume_data:/db

  # MySQL 서버
  mysql:
    image: mysql:8.0
    container_name: mysql-server
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: testdb
      MYSQL_USER: testuser
      MYSQL_PASSWORD: testpass
    volumes:
      - ./my.cnf:/etc/mysql/conf.d/my.cnf
      - mysql-data:/var/lib/mysql
    command:
      --default-authentication-plugin=mysql_native_password
      --slow_query_log=1
      --slow_query_log_file=/var/lib/mysql/slow.log
      --long_query_time=0.5
      --log_queries_not_using_indexes=1

  # InfluxDB (k6 데이터 수집용)
  influxdb:
    image: influxdb:1.8
    container_name: influxdb
    ports:
      - "8086:8086"
    volumes:
      - influxdb_volume_data:/var/lib/influxdb

  # Grafana (대시보드 시각화)
  grafana:
    image: grafana/grafana
    container_name: grafana
    ports:
      - "3000:3000"
    depends_on:
      - influxdb
    volumes:
      - grafana_volume_data:/var/lib/grafana

volumes:
  redis_volume_data:
  redis_insight_volume_data:
  mysql-data:
  influxdb_volume_data:
  grafana_volume_data:

 

 

[2] 컨테이너 실행

docker-compose up -d

 

 

[3] 포트포워딩 설정

 

 

7.3. k6 + Grafana + InfluxDB로 성능 테스트 시각화

[1] 접속

 

 

[2] Data Source 생성 및 설정

 

 

 

[3] Dashboards 생성 (Import)

 

 

[4] 연결 상태 확인

연결 상태를 확인하고자 아래 코드를 실행해보자. curl: (6) Could not resolve host: influxdb 오류가 발생한다.

curl http://influxdb:8086/ping

 

이유는 InfluxDB가 Docker 컨테이너 내부에서 실행되고 있기 때문이다. 이 경우, 컨테이너 이름이 아닌 localhost(127.0.0.1)로 접근해야한다.

 

 

[5] 테스트 실행 및 시각화 확인

 

애플리케이션 실행

nohup java -jar step03_app_test-0.0.1-SNAPSHOT.jar &

 

k6 실행 시 InfluxDB 연동

 

k6 run --out influxdb=http://localhost:8086/k6 get-user-ubuntu-script.js

 

 

 

📌 실행 즉시 메트릭이 InfluxDB에 저장되고, Grafana에서 실시간으로 시각화된다.
📌 Prometheus처럼 exporter나 push gateway 없이 바로 전송(Push 기반)된다는 점이 특징이다.
📌 따라서 빠른 시점성 분석이나 부하 테스트 전용 용도로 매우 유리하다.

 

 

[6] 태그 적용

테스트가 반복되거나 복잡해질 경우, 어떤 테스트인지 구분이 어려워질 수 있다. 이를 해결하기 위해 실무에서는 태그를 통해 테스트 목적을 명확히 기록한다. Grafana에서는 이 태그들을 기반으로 필터링이 가능하여, 특정 시나리오나 서비스 단위 테스트 결과만 선택적으로 조회할 수 있게 된다.

k6 run \
  --tag service=user-api \
  --tag env=dev \
  --tag scenario=peak-load \
  --out influxdb=http://influxdb:8086/k6 \
  get-order-api-test.js
  
  
# 우리한테 적용
k6 run \
  --tag service=user-api \
  --tag env=dev \
  --tag scenario=peak-load \
  --out influxdb=http://localhost:8086/k6 \
  get-user-ubuntu-script.js

 

 

 

[7] 커스텀 대시보드 구성

기본 템플릿도 있지만, 실무에서는 아래처럼 운영 환경에 최적화된 커스텀 대시보드를 직접 만드는 것이 일반적이다. 

1. 특정 API 응답 시간 비교
2. 태그별 트래픽 처리량
3. 요청 실패율 추적
4. 시간대별 응답 변화

 

 

'Test > k6' 카테고리의 다른 글

[3] k6: 성능 튜닝 가이드(DB, JVM, 그리고 Redis 캐시)  (1) 2025.12.13
[2] k6: 실전 API 부하 테스트(Spring Boot 환경 구축과 트러블 슈팅)  (0) 2025.12.13
[1] k6: 성능 테스트 기초(테스트 이론과 k6 입문)  (0) 2025.07.04
'Test/k6' 카테고리의 다른 글
  • [3] k6: 성능 튜닝 가이드(DB, JVM, 그리고 Redis 캐시)
  • [2] k6: 실전 API 부하 테스트(Spring Boot 환경 구축과 트러블 슈팅)
  • [1] k6: 성능 테스트 기초(테스트 이론과 k6 입문)
h6bro
h6bro
백엔드 개발자의 기술 블로그
  • h6bro
    Jun's Tech Blog
    h6bro
  • 전체
    오늘
    어제
    • 분류 전체보기 (250) N
      • Java (18)
        • Core (9)
        • Design Pattern (9)
      • Spring (80)
        • Core (24)
        • MVC (6)
        • DB (10)
        • JPA (26)
        • Monitoring (3)
        • Security (11)
        • WebSocket (0)
      • Database (33)
        • Redis (15)
        • MySQL (18)
      • MSA (25) N
        • MSA 기본 (11)
        • MSA 아키텍처 (14) N
      • Kafka (30)
        • Core (18)
        • Connect (12)
      • ElasticSearch (11)
        • Search (11)
        • Logging (0)
      • Test (4)
        • k6 (4)
      • Docker (9)
      • CI&CD (10)
        • GitHub Actions (6)
        • ArgoCD (4)
      • Kubernetes (18)
        • Core (12)
        • Ops (6)
      • Cloud Engineering (4)
        • AWS Infrastructure (3)
        • AWS EKS (1)
        • Terraform (0)
      • Project (8)
        • LinkFolio (1)
        • Secondhand Market (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • Cloud Engineering 포스팅 정리
  • 인기 글

  • 태그

    ㅈ
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
h6bro
[4] k6: 테스트 시각화(k6, InfluxDB, Grafana 대시보드 구축)
상단으로

티스토리툴바