@@ -18,97 +18,19 @@ scrape_configs:
1818 refresh_interval : 1m # 컨테이너 변경 감지 주기
1919
2020 relabel_configs :
21- # ────────────────────────────────────────────────────────────
22- # 1) 'job' 라벨 할당 (순서 중요!)
23- # - 먼저 모든 로그에 'default-container-logs'를 할당합니다.
24- # - 그 다음 특정 컨테이너에 대해 이 라벨을 덮어씁니다.
25- # ────────────────────────────────────────────────────────────
26- # 모든 로그에 기본 'job' 라벨 할당 (fallback)
27- - source_labels : ['__meta_docker_container_name']
28- regex : ' .*'
29- replacement : ' default-container-logs'
30- target_label : ' job'
31- action : replace
32-
33- # Spring Boot 앱 컨테이너에 'spring-boot-app' job 라벨 할당
34- - source_labels : ['__meta_docker_container_name']
35- regex : ' /?lastdance-(blue-app|green-app)'
36- replacement : ' spring-boot-app'
37- target_label : ' job'
38- action : replace
39-
40- # 모니터링 스택 컨테이너에 'monitoring-stack' job 라벨 할당
41- - source_labels : ['__meta_docker_container_name']
42- regex : ' /?(prometheus|grafana|node-exporter|loki|promtail|alertmanager)' # alertmanager 추가
43- replacement : ' monitoring-stack'
44- target_label : ' job'
45- action : replace
46-
47- # ────────────────────────────────────────────────────────────
48- # 2) 'instance' 라벨 할당 (각 서비스의 고유 식별자)
49- # ────────────────────────────────────────────────────────────
50- # 앱 컨테이너 instance: blue-app:8080, green-app:8081 형태
51- - source_labels : ['__meta_docker_container_name','__meta_docker_container_port']
52- regex : ' /?lastdance-(blue-app|green-app).*?;(.*)'
53- replacement : ' $1:$2'
54- target_label : ' instance'
55- action : replace
56-
57- # 모니터링 스택 각 컴포넌트 instance 라벨
58- - source_labels : ['__meta_docker_container_name']
59- regex : ' /?prometheus'
60- replacement : ' prometheus:9090'
61- target_label : ' instance'
62- action : replace
63- - source_labels : ['__meta_docker_container_name']
64- regex : ' /?grafana'
65- replacement : ' grafana:3000'
66- target_label : ' instance'
67- action : replace
68- - source_labels : ['__meta_docker_container_name']
69- regex : ' /?node-exporter'
70- replacement : ' node-exporter:9100'
71- target_label : ' instance'
72- action : replace
73- - source_labels : ['__meta_docker_container_name']
74- regex : ' /?loki'
75- replacement : ' loki:3100'
76- target_label : ' instance'
77- action : replace
78- - source_labels : ['__meta_docker_container_name']
79- regex : ' /?promtail'
80- replacement : ' promtail:9080'
81- target_label : ' instance'
82- action : replace
83- - source_labels : ['__meta_docker_container_name']
84- regex : ' /?alertmanager' # alertmanager 추가
85- replacement : ' alertmanager:9093'
86- target_label : ' instance'
87- action : replace
88-
89- # ────────────────────────────────────────────────────────────
90- # 3) 기타 유용한 라벨 할당
91- # ────────────────────────────────────────────────────────────
9221 # 'container_name' 라벨: 실제 컨테이너 이름만 추출 (예: 'lastdance-blue-app')
9322 - source_labels : ['__meta_docker_container_name']
9423 regex : ' /(.*)'
9524 replacement : ' $1'
9625 target_label : ' container_name'
9726 action : replace
9827
99- # 'image' 라벨: Docker 이미지 이름만 추출 (예: 'lastdance-ecr')
100- - source_labels : ['__meta_docker_image']
101- regex : ' .*/(.*):.*'
102- replacement : ' $1'
103- target_label : ' image'
104- action : replace
105-
10628 pipeline_stages :
10729 - docker : {} # Docker JSON 로그 파싱
10830
10931 # Spring Boot 표준 로그 정규식
11032 - match :
111- selector : ' {job="spring-boot -app"}'
33+ selector : ' {container_name=~"lastdance-(blue|green) -app"}'
11234 stages :
11335 - regex :
11436 expression : ' ^(?P<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z)\s+(?P<level>\S+)\s+(?P<pid>\d+)\s+---\s+\[(?P<logger>[a-zA-Z0-9.$]+)\]\s+:\s+(?P<message>.*)$'
@@ -117,11 +39,10 @@ scrape_configs:
11739 format : RFC3339Nano
11840 - labels :
11941 level :
120- logger :
12142
12243 # 'monitoring-stack' job의 로그에만 logfmt을 적용합니다.
12344 - match :
124- selector : ' {job="monitoring-stack "}'
45+ selector : ' {container_name=~"(prometheus|grafana|node-exporter|loki|promtail|alertmanager) "}'
12546 stages :
12647 - logfmt :
12748 # 로그에 나타나는 key=value 쌍 중 추출하고 싶은 필드들을 명시합니다.
@@ -137,7 +58,7 @@ scrape_configs:
13758 format : RFC3339Nano
13859 - labels :
13960 level :
140- component :
14161 # 필요하다면 다른 추출 필드를 라벨로 추가할 수 있습니다:
62+ # component:
14263 # caller:
14364 # err:
0 commit comments