캐싱을 한 부분의 속도를 대시보드로 확인해보기
k6로 테스트 한 데이터 (시계열 매트릭 데이터) 를 influxDB라는 시계열 데이터베이스에 저장한다.
그 후 그 데이터를 Grafana 라는 시각화 웹 애플리케이션을 사용해서 그래프로 속도의 변화를 보여준다.,
이에 대한 이점은 다음과 같다.
1. 시계열 데이터를 관리할 수 있다.
2. 시각화를 통해 데이터를 효과적으로 한눈에 보여줄 수 있다.
3. 실시간으로 데이터를 확인할 수 있다.
윈도우 환경에서 세팅
choco 설치
k6를 다운로드 하는데 먼저 chocolatey라는 패키지 매니저를 다운로드한다.
윈도우에서 사용할 수 있는 커맨드 라인 패키지 매니저이다.
k6 커맨드를 사용해야 하기 때문에 choco를 사용한다.
공식 문서 : https://chocolatey.org/install
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
k6 설치
choco를 사용하여 k6를 다운로드한다.
choco install k6
InfluxDB, Grafana
docker를 사용하여 띄우기 때문에 docker desktop을 설치해야 하는 것을 잊지말자! (그리고 실행도)
이번에는 docker-compose를 사용해서 세팅을한다.
influxdb는 8086 포트에, grafana는 3000 포트에 올린다.
version: "3.7"
services:
influxdb:
image: bitnami/influxdb:1.8.5
container_name: influxdb
ports:
- "8086:8086"
- "8085:8088"
environment:
- INFLUXDB_ADMIN_USER_PASSWORD=ssafy
- INFLUXDB_ADMIN_USER_TOKEN=ssafy
- INFLUXDB_HTTP_AUTH_ENABLED=false
- INFLUXDB_DB=myk6db
granafa:
image: bitnami/grafana:latest
ports:
- "3000:3000"
redis:
image: redis:latest
container_name: redis
ports:
- 6379:6379
volumes:
- ./redis/data:/data
grafana 설정 방법
grafana 주소 : localhost:3000
여기서 초기 아이디와 비밀번호는 각각
username : admin
Password : admin
이다.
여기서 Home -> Connections -> Add new connections 로 들어가서 influxDB를 찾아 클릭한다.
여기서 URL을 http://influxdb:8086, Database를 myk6db로 설정하고 Save & test를 클릭해서 위와 같이 뜨면 성공!
그 후 dashBoard를 설정한다.
grafana에서 제공해주는 dashboard를 하나 import 해준다.
https://grafana.com/grafana/dashboards/2587-k6-load-testing-results/
여기서 하단 오른쪽에 import a dashboard를 클릭한 후, 다운로드한 json 파일을 업로드한다.
그리고 맨 아래 k6에 데이터베이스 세팅했던 influxdb를 선택하고 import를 클릭!
그럼 이렇게 생긴 DashBoard가 생길 것이다.
k6 테스트 명령어
그 후, intellij terminal에서 캐싱을 할때 세팅했던 script.js 에 대한 결과(로그)를 influxdb로 보내면, grafana에서 실시간으로 데이터 흐름을 볼 수 있다.
k6 run --out influxdb=http://localhost:8086/myk6db script.js
이전글
출처
'BACKEND > Spring' 카테고리의 다른 글
[Spring boot] 비관락, 낙관락, 분산락 구현 (0) | 2024.08.08 |
---|---|
[Spring] 스프링 AOP란? (0) | 2024.05.29 |
[Spring Boot] Redis로 캐싱 구현 하기 (0) | 2024.04.30 |
[Servlet] 멀티 쓰레드, 하나의 서블릿이 동시 요청을 어떻게 처리할까? (0) | 2024.04.04 |
[Servlet] Spring은 왜 하나의 서블릿만 사용할까? (0) | 2024.04.03 |