Skip to content

Commit 8df08fa

Browse files
authored
Add log PVC cleanup monitor and configurable log rotation (#520)
* Add log PVC cleanup monitor * Add configurable log rotation across services * Use POSIX shell source syntax in Makefile
1 parent 25bf497 commit 8df08fa

25 files changed

Lines changed: 908 additions & 17 deletions

File tree

Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ VALID_K8S_TARGETS := datamate deer-flow milvus label-studio data-juicer mineru m
358358
exit 1; \
359359
fi
360360
@if [ "$*" = "label-studio" ]; then \
361-
if [ -f /tmp/datamate-helm-args.sh ]; then source /tmp/datamate-helm-args.sh; fi; \
361+
if [ -f /tmp/datamate-helm-args.sh ]; then . /tmp/datamate-helm-args.sh; fi; \
362362
helm upgrade label-studio deployment/helm/label-studio/ -n $(NAMESPACE) --install $${HELM_LABEL_STUDIO_TOLERATIONS:-}; \
363363
elif [ "$*" = "mineru" ] || [ "$*" = "mineru-910B" ] || [ "$*" = "mineru-910C" ]; then \
364364
kubectl apply -f deployment/kubernetes/mineru/deploy-910.yaml -n $(NAMESPACE); \
@@ -369,7 +369,7 @@ VALID_K8S_TARGETS := datamate deer-flow milvus label-studio data-juicer mineru m
369369
chmod +x scripts/k8s/node-setup.sh; \
370370
./scripts/k8s/node-setup.sh --namespace $(NAMESPACE); \
371371
if [ -f /tmp/datamate-helm-args.sh ]; then \
372-
source /tmp/datamate-helm-args.sh; \
372+
. /tmp/datamate-helm-args.sh; \
373373
fi; \
374374
chmod +x scripts/k8s/collect-secrets.sh; \
375375
eval $$(NAMESPACE=$(NAMESPACE) bash scripts/k8s/collect-secrets.sh); \
@@ -399,7 +399,7 @@ VALID_K8S_TARGETS := datamate deer-flow milvus label-studio data-juicer mineru m
399399
MILVUS_MINIO_ACCESS_KEY=$$(kubectl get secret milvus-minio-secret -n $(NAMESPACE) -o jsonpath='{.data.accesskey}' | base64 -d); \
400400
MILVUS_MINIO_SECRET_KEY=$$(kubectl get secret milvus-minio-secret -n $(NAMESPACE) -o jsonpath='{.data.secretkey}' | base64 -d); \
401401
if [ -f /tmp/datamate-helm-args.sh ]; then \
402-
source /tmp/datamate-helm-args.sh; \
402+
. /tmp/datamate-helm-args.sh; \
403403
fi; \
404404
helm upgrade milvus deployment/helm/milvus -n $(NAMESPACE) --install \
405405
--set minio.accessKey="$$MILVUS_MINIO_ACCESS_KEY" \

backend/api-gateway/src/main/resources/application.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,7 @@ oms:
4141
url: ${OMS_SERVICE_URL:https://omsservice:18082}
4242
# 服务器端口配置
4343
server:
44-
port: 8080 # 必须有这个配置
44+
port: 8080 # 必须有这个配置
45+
46+
logging:
47+
config: classpath:log4j2.xml
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Configuration status="WARN" monitorInterval="30">
3+
<Properties>
4+
<Property name="LOG_PATH">/var/log/datamate/gateway</Property>
5+
<Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</Property>
6+
<Property name="MAX_FILE_SIZE">${env:LOG_ROTATION_MAX_SIZE:-100MB}</Property>
7+
<Property name="MAX_HISTORY">${env:LOG_ROTATION_BACKUP_COUNT:-30}</Property>
8+
<Property name="LOG_LEVEL">INFO</Property>
9+
<Property name="SQL_LOG_LEVEL">WARN</Property>
10+
</Properties>
11+
12+
<Appenders>
13+
<Console name="Console" target="SYSTEM_OUT">
14+
<PatternLayout pattern="${LOG_PATTERN}" />
15+
</Console>
16+
17+
<RollingFile name="File" fileName="${LOG_PATH}/app.log" filePattern="${LOG_PATH}/app-%d{yyyy-MM-dd}-%i.log">
18+
<PatternLayout pattern="${LOG_PATTERN}" />
19+
<Policies>
20+
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
21+
<SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}" />
22+
</Policies>
23+
<DefaultRolloverStrategy max="${MAX_HISTORY}" />
24+
</RollingFile>
25+
</Appenders>
26+
27+
<Loggers>
28+
<Logger name="com.datamate" level="${LOG_LEVEL}" />
29+
<Logger name="org.springframework.security" level="${LOG_LEVEL}" />
30+
<Logger name="org.hibernate.SQL" level="${SQL_LOG_LEVEL}" />
31+
<Logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="${SQL_LOG_LEVEL}" />
32+
33+
<Root level="INFO">
34+
<AppenderRef ref="Console" />
35+
<AppenderRef ref="File" />
36+
</Root>
37+
</Loggers>
38+
</Configuration>

backend/services/main-application/src/main/resources/log4j2.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
<Properties>
44
<Property name="LOG_PATH">/var/log/datamate/backend</Property>
55
<Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</Property>
6-
<Property name="MAX_FILE_SIZE">100MB</Property>
7-
<Property name="MAX_HISTORY">30</Property>
6+
<Property name="MAX_FILE_SIZE">${env:LOG_ROTATION_MAX_SIZE:-100MB}</Property>
7+
<Property name="MAX_HISTORY">${env:LOG_ROTATION_BACKUP_COUNT:-30}</Property>
88
<Property name="LOG_LEVEL">INFO</Property>
99
<Property name="SQL_LOG_LEVEL">WARN</Property>
1010
</Properties>

deployment/docker/datamate/docker-compose.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ services:
1212
- DB_PASSWORD=${DB_PASSWORD:?DB_PASSWORD is required. Set in .env file}
1313
- JWT_SECRET=${JWT_SECRET:?JWT_SECRET is required. Set in .env file}
1414
- datamate.jwt.enable=${DATAMATE_JWT_ENABLE:-false}
15+
- LOG_ROTATION_MAX_SIZE=${LOG_ROTATION_MAX_SIZE:-100MB}
16+
- LOG_ROTATION_BACKUP_COUNT=${LOG_ROTATION_BACKUP_COUNT:-30}
1517
volumes:
1618
- dataset_volume:/dataset
1719
- flow_volume:/flow
@@ -31,6 +33,14 @@ services:
3133
- "18000:18000"
3234
environment:
3335
- log_level=DEBUG
36+
- LOG_ROTATION_MAX_SIZE=${LOG_ROTATION_MAX_SIZE:-100MB}
37+
- LOG_ROTATION_BACKUP_COUNT=${LOG_ROTATION_BACKUP_COUNT:-30}
38+
- LOG_PVC_MONITOR_ENABLED=${LOG_PVC_MONITOR_ENABLED:-true}
39+
- LOG_PVC_MONITOR_PATH=${LOG_PVC_MONITOR_PATH:-/var/log/datamate}
40+
- LOG_PVC_MONITOR_THRESHOLD=${LOG_PVC_MONITOR_THRESHOLD:-0.9}
41+
- LOG_PVC_MONITOR_INTERVAL_SECONDS=${LOG_PVC_MONITOR_INTERVAL_SECONDS:-300}
42+
- LOG_PVC_MONITOR_DELETE_BATCH_SIZE=${LOG_PVC_MONITOR_DELETE_BATCH_SIZE:-10}
43+
- LOG_PVC_MONITOR_FILE_SUFFIXES=${LOG_PVC_MONITOR_FILE_SUFFIXES:-log,out,err}
3444
- PGSQL_HOST=datamate-database
3545
- PGSQL_PORT=5432
3646
- pgsql_password=${DB_PASSWORD:?DB_PASSWORD is required. Set in .env file}
@@ -60,6 +70,10 @@ services:
6070
environment:
6171
- JWT_SECRET=${JWT_SECRET:-}
6272
- datamate.jwt.enable=${DATAMATE_JWT_ENABLE:-false}
73+
- LOG_ROTATION_MAX_SIZE=${LOG_ROTATION_MAX_SIZE:-100MB}
74+
- LOG_ROTATION_BACKUP_COUNT=${LOG_ROTATION_BACKUP_COUNT:-30}
75+
volumes:
76+
- log_volume:/var/log/datamate
6377
networks: [ datamate ]
6478

6579
datamate-frontend:
@@ -68,6 +82,9 @@ services:
6882
restart: on-failure
6983
ports:
7084
- "30000:3000"
85+
environment:
86+
- LOG_ROTATION_MAX_SIZE=${LOG_ROTATION_MAX_SIZE:-100MB}
87+
- LOG_ROTATION_BACKUP_COUNT=${LOG_ROTATION_BACKUP_COUNT:-30}
7188
volumes:
7289
- frontend_log_volume:/var/log/datamate/frontend
7390
networks: [ datamate ]
@@ -82,6 +99,7 @@ services:
8299
environment:
83100
- POSTGRES_USER=postgres
84101
- POSTGRES_PASSWORD=${DB_PASSWORD:?DB_PASSWORD is required. Set in .env file}
102+
- LOG_ROTATION_BACKUP_COUNT=${LOG_ROTATION_BACKUP_COUNT:-30}
85103
volumes:
86104
- postgresql_volume:/var/lib/postgresql/data
87105
- database_log_volume:/var/log/datamate/database
@@ -96,6 +114,8 @@ services:
96114
environment:
97115
RAY_DEDUP_LOGS: "0"
98116
RAY_TQDM_PATCH_PRINT: "0"
117+
LOG_ROTATION_MAX_SIZE: ${LOG_ROTATION_MAX_SIZE:-100MB}
118+
LOG_ROTATION_BACKUP_COUNT: ${LOG_ROTATION_BACKUP_COUNT:-30}
99119
PG_HOST: "datamate-database"
100120
PG_PORT: "5432"
101121
PG_USER: "postgres"

deployment/helm/datamate/values.yaml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ database:
115115
secretKeyRef:
116116
name: datamate-conf
117117
key: HOME_PAGE_URL
118+
- name: LOG_ROTATION_BACKUP_COUNT
119+
value: "30"
118120
volumes:
119121
- *dataVolume
120122
- *logVolume
@@ -148,6 +150,10 @@ backend:
148150
value: "http://datamate-milvus:19530"
149151
- name: datamate.jwt.enable
150152
value: &DATAMATE_JWT_ENABLE 'false'
153+
- name: LOG_ROTATION_MAX_SIZE
154+
value: &LOG_ROTATION_MAX_SIZE "100MB"
155+
- name: LOG_ROTATION_BACKUP_COUNT
156+
value: &LOG_ROTATION_BACKUP_COUNT "30"
151157
volumes:
152158
- *datasetVolume
153159
- *flowVolume
@@ -178,6 +184,22 @@ backend-python:
178184
key: DB_PASSWORD
179185
- name: datamate_jwt_enable
180186
value: *DATAMATE_JWT_ENABLE
187+
- name: LOG_ROTATION_MAX_SIZE
188+
value: *LOG_ROTATION_MAX_SIZE
189+
- name: LOG_ROTATION_BACKUP_COUNT
190+
value: *LOG_ROTATION_BACKUP_COUNT
191+
- name: LOG_PVC_MONITOR_ENABLED
192+
value: "true"
193+
- name: LOG_PVC_MONITOR_PATH
194+
value: "/var/log/datamate"
195+
- name: LOG_PVC_MONITOR_THRESHOLD
196+
value: "0.9"
197+
- name: LOG_PVC_MONITOR_INTERVAL_SECONDS
198+
value: "300"
199+
- name: LOG_PVC_MONITOR_DELETE_BATCH_SIZE
200+
value: "10"
201+
- name: LOG_PVC_MONITOR_FILE_SUFFIXES
202+
value: "log,out,err"
181203
- name: milvus_uri
182204
value: "http://datamate-milvus:19530"
183205
- name: LABEL_STUDIO_USER_TOKEN
@@ -220,6 +242,10 @@ gateway:
220242
value: *DATAMATE_JWT_ENABLE
221243
- name: OMS_AUTH_ENABLED
222244
value: "false"
245+
- name: LOG_ROTATION_MAX_SIZE
246+
value: *LOG_ROTATION_MAX_SIZE
247+
- name: LOG_ROTATION_BACKUP_COUNT
248+
value: *LOG_ROTATION_BACKUP_COUNT
223249
volumes:
224250
- *logVolume
225251
volumeMounts:
@@ -246,6 +272,10 @@ frontend:
246272
key: DOMAIN
247273
- name: REAL_IP_MODE
248274
value: "off"
275+
- name: LOG_ROTATION_MAX_SIZE
276+
value: *LOG_ROTATION_MAX_SIZE
277+
- name: LOG_ROTATION_BACKUP_COUNT
278+
value: *LOG_ROTATION_BACKUP_COUNT
249279
volumes:
250280
- *logVolume
251281
- name: cert-volume
@@ -282,6 +312,10 @@ runtime:
282312
key: DB_PASSWORD
283313
- name: PG_DATABASE
284314
value: "datamate"
315+
- name: LOG_ROTATION_MAX_SIZE
316+
value: *LOG_ROTATION_MAX_SIZE
317+
- name: LOG_ROTATION_BACKUP_COUNT
318+
value: *LOG_ROTATION_BACKUP_COUNT
285319
volumes:
286320
- *datasetVolume
287321
- *flowVolume
@@ -332,6 +366,10 @@ ray-cluster:
332366
value: "0"
333367
- name: RAY_TQDM_PATCH_PRINT
334368
value: "0"
369+
- name: LOG_ROTATION_MAX_SIZE
370+
value: *LOG_ROTATION_MAX_SIZE
371+
- name: LOG_ROTATION_BACKUP_COUNT
372+
value: *LOG_ROTATION_BACKUP_COUNT
335373
- name: PG_HOST
336374
value: "datamate-database"
337375
- name: PG_PORT
@@ -389,6 +427,10 @@ ray-cluster:
389427
value: "0"
390428
- name: RAY_TQDM_PATCH_PRINT
391429
value: "0"
430+
- name: LOG_ROTATION_MAX_SIZE
431+
value: *LOG_ROTATION_MAX_SIZE
432+
- name: LOG_ROTATION_BACKUP_COUNT
433+
value: *LOG_ROTATION_BACKUP_COUNT
392434
- name: PG_HOST
393435
value: "datamate-database"
394436
- name: PG_PORT
@@ -413,6 +455,13 @@ ray-cluster:
413455
requests:
414456
cpu: "1"
415457
memory: "2G"
458+
lifecycle: &rayLogRotationLifecycle
459+
postStart:
460+
exec:
461+
command:
462+
- /bin/bash
463+
- -c
464+
- "nohup /usr/local/bin/log-rotate-copytruncate.sh /tmp/ray >/tmp/log-rotation.out 2>/tmp/log-rotation.err &"
416465
volumes:
417466
- *datasetVolume
418467
- *flowVolume
@@ -447,6 +496,10 @@ ray-cluster:
447496
value: "0"
448497
- name: RAY_TQDM_PATCH_PRINT
449498
value: "0"
499+
- name: LOG_ROTATION_MAX_SIZE
500+
value: *LOG_ROTATION_MAX_SIZE
501+
- name: LOG_ROTATION_BACKUP_COUNT
502+
value: *LOG_ROTATION_BACKUP_COUNT
450503
- name: PG_HOST
451504
value: "datamate-database"
452505
- name: PG_PORT
@@ -473,6 +526,7 @@ ray-cluster:
473526
cpu: "1"
474527
memory: "2G"
475528
huawei.com/Ascend910: 1
529+
lifecycle: *rayLogRotationLifecycle
476530
volumes:
477531
- *datasetVolume
478532
- *flowVolume
@@ -511,6 +565,10 @@ ray-cluster:
511565
value: "0"
512566
- name: RAY_TQDM_PATCH_PRINT
513567
value: "0"
568+
- name: LOG_ROTATION_MAX_SIZE
569+
value: *LOG_ROTATION_MAX_SIZE
570+
- name: LOG_ROTATION_BACKUP_COUNT
571+
value: *LOG_ROTATION_BACKUP_COUNT
514572
- name: PG_HOST
515573
value: "datamate-database"
516574
- name: PG_PORT
@@ -537,6 +595,7 @@ ray-cluster:
537595
cpu: "1"
538596
memory: "2G"
539597
nvidia.com/gpu: 1
598+
lifecycle: *rayLogRotationLifecycle
540599
volumes:
541600
- *datasetVolume
542601
- *flowVolume

runtime/datamate-python/.env.example

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ PORT=18000
55
DEBUG=true
66
LOG_LEVEL=DEBUG
77
LOG_FILE_DIR=./logs
8+
LOG_ROTATION_MAX_SIZE=100MB
9+
LOG_ROTATION_BACKUP_COUNT=30
10+
LOG_PVC_MONITOR_ENABLED=true
11+
LOG_PVC_MONITOR_PATH=./logs
12+
LOG_PVC_MONITOR_THRESHOLD=0.9
13+
LOG_PVC_MONITOR_INTERVAL_SECONDS=300
14+
LOG_PVC_MONITOR_DELETE_BATCH_SIZE=10
15+
LOG_PVC_MONITOR_FILE_SUFFIXES=log,out,err
816
RAG_STORAGE_DIR=./rag_storage
917

1018
# DataBase

runtime/datamate-python/app/core/config.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,14 @@ class Config:
2727
log_level: str = "INFO"
2828
debug: bool = True
2929
log_file_dir: str = "/var/log/datamate/backend-python"
30+
log_pvc_monitor_enabled: bool = True
31+
log_pvc_monitor_path: str = "/var/log/datamate"
32+
log_pvc_monitor_threshold: float = 0.9
33+
log_pvc_monitor_interval_seconds: int = 300
34+
log_pvc_monitor_delete_batch_size: int = 10
35+
log_pvc_monitor_file_suffixes: str = "log,out,err"
36+
log_rotation_max_size: str = "100MB"
37+
log_rotation_backup_count: int = 30
3038
rag_storage_dir: str = "/data/rag_storage"
3139

3240
# Database

0 commit comments

Comments
 (0)