728x90
반응형
Rolling File Appender
What is Rolling?
로그 파일을 관리하는 데 사용되는 기능
로그 파일의 크기나 시간에 따라 새 파일로 롤링(전환)하도록 설정하는 방법이다.
How to use Rolling Appenders?
[root@]$ cat logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false">
<!-- 로그 파일 경로를 정의하는 프로퍼티 -->
<property name="LOGS_ABSOLUTE_PATH" value="로그가 생성될 경로" />
<!-- 로그 파일을 처리하는 RollingFileAppender 정의 -->
<appender name="applogfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 로그 파일의 기본 위치와 이름을 지정. 변수를 사용하여 동적으로 파일 이름을 설정 -->
<!-- 새로운 로그가 쌓이는 로그 파일의 파일명 -->
<file>${LOGS_ABSOLUTE_PATH}/online/app_${변수명}.log</file>
<!-- 로그 메시지 형식을 정의. 타임스탬프, 로그 레벨, 로그 발생 지점, 메시지를 포함 -->
<!-- 로그가 로그 파일에 어떤 형식으로 쌓일지 로그 포맷을 정의 -->
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%-5level][%logger{36}:%line] - %msg%n</pattern>
</encoder>
<!-- 롤링 정책 정의: 파일 사이즈와 시간 기반으로 로그 파일을 롤링 -->
<!-- SizeAndTimeBasedRollingPolicy: 파일 사이즈와 시간 기반으로 롤링 -->
<!-- TimeBasedRollingPolicy: 시간 기반으로 롤링 -->
<!-- SizeBasedRollingPolicy: 파일 사이즈 기반으로 롤링 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 롤링된 파일의 이름 패턴. 날짜와 인덱스를 포함하여 여러 파일을 생성 -->
<!-- %i: 롤링되는 파일의 인덱스. %i를 작성해야 정상적으로 로깅됨 -->
<!-- app_ARCHITALKS.2024-12-06.log-0 포맷으로 롤링됨 -->
<fileNamePattern>${LOGS_ABSOLUTE_PATH}/online/app_${변수명}.%d{yyyy-MM-dd}.log-%i</fileNamePattern>
<!-- 파일 크기가 100MB를 초과하면 롤링을 트리거 -->
<maxFileSize>100MB</maxFileSize>
<!-- 최대 30개의 백업 파일을 보관 -->
<maxHistory>30</maxHistory>
<!-- 로그 파일의 총 크기 제한. 1GB를 넘지 않도록 설정 --
<!-- 로그 파일이 생성되는 디렉토리가 1GB를 초과하면 자동으로 로그 파일을 삭제 -->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 로그 레벨을 "debug"로 설정하고, applogfile appender를 root logger에 추가 -->
<root level="debug">
<appender-ref ref="applogfile" />
</root>
</configuration>
k6
What is k6?
성능 테스트 및 부하 테스트를 위한 오픈 소스 도구
주로 웹 애플리케이션 및 API의 부하 테스트를 수행하는 데 사용된다.
How To Install k6 in Windows
#Chocolatey 패키지 관리자 사용하여 k6 설치
#[관리자 권한]PowerShell에서 아래의 명령어를 입력해 설치한다.
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
새로운 크로스 플랫폼 PowerShell 사용 https://aka.ms/pscore6
PS C:\Users\architalks>
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
#k6 설치
choco install k6
#k6가 정상적으로 설치되었는지 확인
k6 version
How to use k6
#k6 테스트를 위한 스크립트 생성
// k6의 http 모듈을 임포트하여 HTTP 요청을 보낼 수 있게 함
import http from 'k6/http';
// k6의 sleep 함수를 임포트하여 요청 간 대기 시간을 설정할 수 있게 함
import { sleep } from 'k6';
// 테스트 실행 옵션 설정
export let options = {
// VUs (Virtual Users): 테스트를 실행할 가상 사용자의 수
vus: 100,
// iterations: 각 가상 사용자가 실행할 요청 횟수 (총 요청 수는 vus * iterations)
iterations: 1000,
};
// 기본적으로 실행될 함수 (각 VU에서 반복적으로 실행됨)
export default function () {
// 요청 본문 (payload) 설정: JSON 형식의 데이터
let payload = JSON.stringify({
header: {
필드1: '값1',
필드2: '값2',
},
body: {
필드3: '값3',
필드4: '값4',
}
});
// 요청 헤더 설정 (JSON 형식으로 요청을 보낼 것임)
let params = {
headers: {
'Content-Type': 'application/json', // JSON 형식의 데이터를 보내도록 Content-Type 설정
},
};
// HTTP POST 요청을 보내는 부분
// URL: 'http://localhost:8090/hello'
// payload: 요청 본문 (JSON 형식)
// params: 요청 헤더 (Content-Type: application/json)
let res = http.post('http://localhost:8090/hello', payload, params);
// 각 요청 후 5초 동안 대기 (sleep 함수 사용)
sleep(5); // 이 대기는 가상 사용자들 사이에서 요청 간 대기 시간을 설정함
}
#k6 부하테스트 실행
[root@]$ k6 run 스크립트명.js
/\ Grafana /‾‾/
/\ / \ |\ __ / /
/ \/ \ | |/ / / ‾‾\
/ \ | ( | (‾) |
/ __________ \ |_|\_\ \_____/
execution: local
script: rollingPolicyFromk6.js
output: -
scenarios: (100.00%) 1 scenario, 100 max VUs, 10m30s max duration (incl. graceful stop):
* default: 1000 iterations shared among 100 VUs (maxDuration: 10m0s, gracefulStop: 30s)
running (00m22.8s), 100/100 VUs, 300 complete and 0 interrupted iterations
default [==========>---------------------------] 100 VUs 00m22.8s/10m0s 0300/1000 shared iters
#k6 테스트 완료
data_received..................: 1.1 MB 19 kB/s
data_sent......................: 266 kB 4.4 kB/s
http_req_blocked...............: avg=1.57ms min=0s med=0s max=17.64ms p(90)=906.17µs p(95)=15.65ms
http_req_connecting............: avg=1.56ms min=0s med=0s max=17.64ms p(90)=543.47µs p(95)=15.65ms
http_req_duration..............: avg=854.61ms min=113.28ms med=331.55ms max=6.91s p(90)=1.52s p(95)=4.91s
{ expected_response:true }...: avg=854.61ms min=113.28ms med=331.55ms max=6.91s p(90)=1.52s p(95)=4.91s
http_req_failed................: 0.00% 0 out of 1000
http_req_receiving.............: avg=340.82µs min=0s med=290.5µs max=1.13ms p(90)=841.8µs p(95)=939.81µs
http_req_sending...............: avg=31.92µs min=0s med=0s max=1.5ms p(90)=0s p(95)=216.53µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=854.24ms min=112.44ms med=331.54ms max=6.91s p(90)=1.52s p(95)=4.91s
http_reqs......................: 1000 16.632156/s
iteration_duration.............: avg=5.85s min=5.11s med=5.33s max=11.93s p(90)=6.53s p(95)=9.92s
iterations.....................: 1000 16.632156/s
vus............................: 16 min=16 max=100
vus_max........................: 100 min=100 max=100
running (01m00.1s), 000/100 VUs, 1000 complete and 0 interrupted iterations
default ✓ [======================================] 100 VUs 01m00.1s/10m0s 1000/1000 shared iters
#롤링 적용 확인
#totalSizeCap이 적용되어 0,1,2 삭제된 것 확인
[root@]$ ls -al
합계 170976
drwxr-x---. 2 bom bom 4096 12월 6 16:49 .
drwxr-xr-x. 5 bom bom 46 8월 7 10:41 ..
-rw-r-----. 1 bom bom 10667507 12월 6 16:40 app_architalks_.2024-12-06.log-10
-rw-r-----. 1 bom bom 11164670 12월 6 16:40 app_architalks_.2024-12-06.log-11
-rw-r-----. 1 bom bom 10508676 12월 6 16:39 app_architalks_.2024-12-06.log-3
-rw-r-----. 1 bom bom 10532652 12월 6 16:39 app_architalks_.2024-12-06.log-4
-rw-r-----. 1 bom bom 11392556 12월 6 16:39 app_architalks_.2024-12-06.log-5
-rw-r-----. 1 bom bom 10822893 12월 6 16:39 app_architalks_.2024-12-06.log-6
-rw-r-----. 1 bom bom 11383250 12월 6 16:39 app_architalks_.2024-12-06.log-7
-rw-r-----. 1 bom bom 10524339 12월 6 16:39 app_architalks_.2024-12-06.log-8
-rw-r-----. 1 bom bom 10724563 12월 6 16:40 app_architalks_.2024-12-06.log-9
-rw-r-----. 1 bom bom 75364222 12월 6 17:19 app_architalks_.log
728x90
반응형
'오픈소스' 카테고리의 다른 글
[도커] 웹 어플리케이션 도커 컨테이너 환경 구성하기 (1) | 2024.12.26 |
---|---|
[카프카/스프링부트]Kafka On Docker(WLS2/Window) + SpringBoot 샘플코드 (3) | 2024.11.26 |
[오픈소스] Istio (0) | 2024.10.09 |
[OpenAPI] SVNKit 샘플코드 및 사용후기 (0) | 2023.05.10 |
[OpenAPI] KOMORAN 형태소 분석기 샘플코드 및 사용 후기 (0) | 2023.03.19 |
댓글