File tree Expand file tree Collapse file tree 5 files changed +99
-0
lines changed
Expand file tree Collapse file tree 5 files changed +99
-0
lines changed Original file line number Diff line number Diff line change 44! gradle /wrapper /gradle-wrapper.jar
55! ** /src /main /** /build /
66! ** /src /test /** /build /
7+ logs /
78
89# ## STS ###
910.apt_generated
Original file line number Diff line number Diff line change @@ -28,5 +28,18 @@ services:
2828 - SPRING_PROFILES_ACTIVE=prod
2929 - SPRING_DATA_REDIS_HOST=redis
3030 - SPRING_DATA_REDIS_PORT=6379
31+ volumes :
32+ - ./logs:/var/log/spring
3133 depends_on :
3234 - redis
35+
36+ alloy :
37+ image : grafana/alloy:latest
38+ container_name : alloy
39+ ports :
40+ - " 12345:12345"
41+ volumes :
42+ - ./logs:/var/log/spring
43+ - ./docs/config.alloy:/etc/alloy/config.alloy:ro
44+ environment :
45+ - ALLOY_ENV=production
Original file line number Diff line number Diff line change @@ -28,6 +28,19 @@ services:
2828 - " 8080:8080"
2929 environment :
3030 - SPRING_PROFILES_ACTIVE=stage
31+ volumes :
32+ - ./logs:/var/log/spring
3133 depends_on :
3234 - redis
3335 network_mode : host
36+
37+ alloy :
38+ image : grafana/alloy:latest
39+ container_name : alloy
40+ ports :
41+ - " 12345:12345"
42+ volumes :
43+ - ./logs:/var/log/spring
44+ - ./docs/config.alloy:/etc/alloy/config.alloy:ro
45+ environment :
46+ - ALLOY_ENV=stage
Original file line number Diff line number Diff line change 1+ livedebugging {
2+ enabled = true
3+ }
4+
5+ logging {
6+ level = "info"
7+ format = "logfmt"
8+ }
9+
10+ local.file_match "spring_logs" {
11+ path_targets = [{ __path__ = "/var/log/spring/*.log" }] // 서비스 로그 파일 경로
12+ }
13+
14+ loki.source.file "spring_source" {
15+ targets = local.file_match.spring_logs.targets // 위에서 정의한 로그 파일 경로 사용
16+ forward_to = [loki.process.spring_labels.receiver] // 읽은 로그를 처리 단계로 전달
17+ }
18+
19+ loki.process "spring_labels" {
20+ forward_to = [loki.write.grafana_loki.receiver] // 처리된 로그를 Loki로 전송
21+
22+ stage.static_labels {
23+ values = {
24+ service = "backend",
25+ env = sys.env("ALLOY_ENV"),
26+ }
27+ }
28+ }
29+
30+ loki.write "grafana_loki" {
31+ endpoint {
32+ url = "http://monitor.solid-connection.com:3100/loki/api/v1/push"
33+ tenant_id = "fake" // Loki 테넌트 ID (싱글 테넌시이기에 fake로 설정)
34+ batch_wait = "1s" // 로그 배치 전송 대기 시간
35+ batch_size = "1MB" // 로그 배치 크기
36+ }
37+ }
Original file line number Diff line number Diff line change 1+ <?xml version =" 1.0" encoding =" UTF-8" ?>
2+ <configuration scan =" true" scanPeriod =" 60 seconds" >
3+ <include resource =" org/springframework/boot/logging/logback/defaults.xml" />
4+ <include resource =" org/springframework/boot/logging/logback/console-appender.xml" />
5+ <include resource =" org/springframework/boot/logging/logback/file-appender.xml" />
6+
7+ <springProperty scope =" context" name =" activeProfile" source =" spring.profiles.active" />
8+
9+ <appender name =" FILE" class =" ch.qos.logback.core.rolling.RollingFileAppender" >
10+ <file >/var/log/spring/solid-connection-server.log</file >
11+
12+ <rollingPolicy class =" ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >
13+ <!-- 매일 로그를 롤링 -->
14+ <fileNamePattern >/var/log/spring/solid-connection-server.%d{yyyy-MM-dd}.log</fileNamePattern >
15+ <maxHistory >30</maxHistory > <!-- 최근 30일 로그 보관 -->
16+ </rollingPolicy >
17+
18+ <encoder >
19+ <!-- Loki에서 읽기 좋은 logfmt 형식 (간단한 key=value 스타일) -->
20+ <pattern >timestamp=%d{yyyy-MM-dd'T'HH:mm:ss.SSS} level=%-5level thread=%thread logger=%logger{36}
21+ message=%msg%n
22+ </pattern >
23+ </encoder >
24+ </appender >
25+
26+ <root level =" INFO" >
27+ <appender-ref ref =" CONSOLE" />
28+ </root >
29+
30+ <springProfile name =" prod,stage" >
31+ <root level =" INFO" >
32+ <appender-ref ref =" FILE" />
33+ </root >
34+ </springProfile >
35+ </configuration >
You can’t perform that action at this time.
0 commit comments