LogBus2 사용 가이드
1. LogBus2 소개
LogBus2는 기존 LogBus를 바탕으로 새로 개발한 로그 동기화 도구입니다. 기존 LogBus보다 메모리 사용량은 5분의 1로 줄었고 속도는 5배 빨라졌습니다.
Logbus2는 주로 백엔드의 로그 데이터를 AE 백엔드로 실시간 적재하는 데 사용합니다. 핵심 동작 원리는 Flume, Loggie와 비슷하며, 서버 로그 디렉터리의 파일 스트림을 모니터링하다가 디렉터리 내 로그 파일에 새 데이터가 생기면 새 데이터를 검증한 후 AE 백엔드로 실시간 전송합니다.
다음과 같은 사용자에게 LogBus2를 통한 데이터 연동을 권장합니다:
- 서버 SDK / Kafka / SLS에 AE 형식 데이터를 저장하며 LogBus2로 데이터를 업로드하는 사용자
- 데이터의 정확성과 차원에 대한 요구가 높아 클라이언트 SDK만으로는 데이터 요구를 충족할 수 없거나, 클라이언트 SDK를 연동하기 어려운 경우
- 백엔드 데이터 푸시 프로세스를 직접 개발하고 싶지 않은 경우
- 대량의 과거 데이터를 전송해야 하는 경우
- 메모리 사용량과 전송 효율에 일정한 요구가 있는 경우
이 문서는 Logbus v2 버전에 적용됩니다. Logbus v1 버전은 LogBus 사용 가이드, LogBus Windows 버전 사용 가이드를 참고하십시오
Logbus v1에서 Logbus v2로 마이그레이션하려면 ThinkingAI 기술 지원팀에 문의하십시오.
2. LogBus2 다운로드
최신 버전:2.1.2.2
업데이트 시간: 2025-11-07
3. 사용 전 준비
파일 유형
- 업로드할 데이터 파일을 저장할 디렉터리를 정하고 LogBus2의 관련 설정을 구성합니다. LogBus2는 파일 디렉터리의 파일 변경(새 파일 생성 또는 기존 파일 tail)을 모니터링합니다.
- 모니터링 디렉터리에 저장되어 이미 업로드된 데이터 로그의 이름을 직접 변경하지 마십시오. 로그 이름을 변경하면 새 파일을 만든 것과 같아서 LogBus2가 해당 파일을 다시 업로드하여 데이터가 중복될 수 있습니다.
- LogBus2 실행 디렉터리에는 현재 로그 전송 진행 상황의 스냅샷이 있으므로 runtime 디렉터리의 파일을 임의로 조작하지 마십시오
주의: 데이터 파일 저장 경로로 객체 스토리지나 NFS, SMB 등 클라우드 파일 시스템의 마운트 디렉터리를 사용하지 마십시오. 읽기 오류가 발생할 수 있습니다.
Kafka
- Kafka 메시지 형식을 확인합니다. Logbus는 Kafka Message의 value만 처리합니다
- 같은 유저 ID의 데이터가 같은 파티션에 기록되도록 하여 데이터 순서가 뒤섞이는 문제를 방지합니다
- Kafka Consumer Group 자유 사용을 활성화하여 여러 Logbus가 소비할 때 장애가 발생하지 않도록 하십시오
- 기본적으로 earliest부터 소비합니다. 지정한 오프셋부터 소비하려면 먼저 consumer group과 특정 오프셋을 생성해야 합니다
SLS
- Alibaba Cloud에 문의하여 Kafka 프로토콜 소비를 활성화합니다
CLS
- CLS 자동 분할이 꺼져 있는지 확인합니다.
- 해당 리소스의 AK&SK를 신청합니다
4. LogBus2 설치 및 업그레이드
설치
LogBus2 설치 패키지를 다운로드하고 압축을 해제합니다.
압축 해제 후 디렉터리 구조:
- Logbus:LogBus2:바이너리 파일
- conf:
- daemon.json:설정 파일 템플릿2
- tools:
- configConvert:설정 변환 도구
업그레이드
요구 사항: LogBus2 버전 ≥ 2.0.1.7
다음 명령을 바로 실행합니다
./logbus update를 실행하면 되며, 업그레이드가 완료되면 다음을 실행합니다
./logbus start
5. Logbus2 사용 및 설정
시작 파라미터
시작
./logbus start
중지
./logbus stop
재시작
./logbus restart
설정 검사, AE 시스템과의 연결성 검사
./logbus env
LogBus 읽기 기록 초기화
./logbus reset
# Kafka에서는 현재 사용 불가
전송 진행률 확인
./logbus progress
파일 형식 검증
./logbus dev
# Kafka에서는 현재 사용 불가
설정 파일 가이드
기본 설정 템플릿
{
"datasource": [
{
"file_patterns": [
"/data/log1/*.txt", // #사용자가 원본 데이터 파일이 있는 절대 경로로 조정해야 함
"/data/log2/*.log"
],//파일 매칭 패턴
"app_id": "app_id"//app_id는 AE 공식 사이트의 token입니다. AE 백엔드의 프로젝트 구성 페이지에서 연동할 프로젝트의 APPID를 확인하여 여기에 입력하십시오
}
],
"push_url": "http://RECEIVER_URL"//http 전송 시 http://receiver.ta.thinkingdata.cn/ 을 사용하십시오. 프라이빗 배포 서비스를 사용하는 경우 전송 URL을 다음으로 수정하십시오: http://데이터 수집 주소/
}
자주 쓰는 설정
파일
{
"datasource": [
{
"type":"file",
"file_patterns": ["/data/log1/*.txt", "/data/log2/*.log"], //파일 Glob 매칭 규칙
"app_id": "app_id", //APPID는 AE 공식 사이트의 token입니다. AE 백엔드의 프로젝트 구성 페이지에서 연동할 프로젝트의 APPID를 확인하여 여기에 입력하십시오
"unit_remove": "day", //파일 삭제 단위, "day", "hour" 지원
"offset_remove": 7,//unit_remove*offset_remove로 최종 삭제 시간을 구함 **offset은 0보다 커야 하며, 그렇지 않으면 적용되지 않음
"remove_dirs": true,//폴더 삭제 활성화 여부, 기본값 false NOTE:폴더 내 모든 파일의 소비가 끝난 후에만 폴더를 삭제함
"http_compress": "gzip" //http 압축 활성화 여부, 기본값은 "none"
}
],
"cpu_limit": 4, //Logbus2가 사용하는 CPU 코어 수 제한
"push_url": "http://RECEIVER_URL"
}
Kafka
{
"datasource": [
{
"type":"kafka", //타입은 Kafka
"topic":"ta", //소비할 topic
"brokers":[
"localhost:9091" //Kafka Brokers 주소
],
"consumer_group":"logbus", //컨슈머 그룹 이름
"cloud_provider":"ali", //클라우드 제공업체 이름, "ali", "tencent", "huawei" 지원
"username":"", //Kafka 사용자 이름
"password":"", //Kafka 인증 비밀번호
"instance":"", //클라우드 제공업체 인스턴스 이름
"protocol":"none", //인증 프로토콜, "none"|"plain"|"scramsha256"|"scramsha512" 지원
"block_partitions_revoked":true,
"app_id":"YOUR_APP_ID"
}
],
"cpu_limit": 4, //Logbus2가 사용하는 CPU 코어 수 제한
"push_url": "http://RECEIVER_URL"
}
SLS
NOTE:SLS로 소비하기 전에 Alibaba Cloud에 문의하여 SLS Kafka 소비 프로토콜을 활성화하십시오
{
"datasource": [
{
"type":"kafka",
"brokers":["{PROJECT}.{ENTRYPOINT}:{PORT}"], //NOTE:자세한 내용은 https://help.aliyun.com/document_detail/29008.htm#reference-wgx-pwq-zdb 참고
"topic":"{SLS_Logstore_NAME}", //Logstore 이름
"protocol":"plain",
"consumer_group":"{YOUR_CONSUMER_GROUP}", // ConsumerGroup
"username":"{PROJECT}", // Project 이름
"disable_tls":true,
"password":"{ACCESS_ID}#{ACCESS_PASSWORD}", // Alibaba Cloud RAM 권한 부여
"app_id":"YOUR_APP_ID"
}
],
"push_url": "http://RECEIVER_URL"
}
CLS
NOTE:사용하기 전에 소비/쓰기 처리량이 Log 보존 기간보다 큰지 확인하십시오
{
"datasource":[
{
"type": "kafka",
"brokers":["YOUR_AZ_ENDPOINT"],
"session_timeout": 9000,
"fetch_max_bytes": 104857600,
"topic": "YOUR_TOPIC",
"protocol": "plain",
"consumer_group": "YOUR_GROUP",
"username": "",
"password": "",
"block_paritions_revoked":"true",
"app_id":"YOUR_APP_ID"
}
],
"push_url":"http://RECEIVER_URL"
}
전체 설정 항목
설정 항목 목록 및 설명
| 설정 | 타입 | 예시 | 필수 | 설명 |
|---|---|---|---|---|
| cpu_limit | Number | 4 | Logbus2가 사용할 수 있는 최대 CPU 코어 수 제한 | |
| push_url | String | ✔️ | receiver 주소. http/https로 시작해야 합니다. | |
| datasource | Object list | ✔️ | 데이터 소스 목록 | |
min_disk_free_space | uint64 | 1024 | logbus2가 있는 디렉터리의 사용 가능 공간 검사. 설정값보다 작으면 자동으로 종료되며, 단위는 KB, 기본값은 1*1024*1024 |
datasource(데이터 소스 설정)
파일
| 설정 | 타입 | 예시 | 필수 | 기본값 | 설명 |
| app_id | String | ✔️ | "" | 데이터를 전송할 프로젝트의 appid | |
| appid_in_data | Bool | false | false | 파일 내 appid로 분배할 때 이 옵션을 활성화하면 Logbus2는 더 이상 app_id에 설정한 appid로 분배하지 않습니다 | |
specified_push_url | Bool | false | true: push_url을 파싱하지 않고 사용자가 설정한 push_url 그대로 전송합니다. 즉 http://yourhost:yourport입니다. false: push_url을 파싱한 후 receiver가 규정한 logbus url로 전송합니다. 즉 http://yourhost:yourport/logbus입니다. | ||
| add_uuid | Bool | false | true: 각 데이터에 uuid 속성 추가 여부(활성화하면 전송 효율이 떨어짐). | ||
| file_patterns | String list | ✔️ | [""] | 디렉터리 와일드카드를 지원하며, 정규식은 아직 지원하지 않습니다. 특별히 설정하지 않으면 기본적으로 .gz/.iso/.rpm/.zip/.bz/.rar/.bz2 확장자 파일은 건너뜁니다 | |
| ignore_files | String list | [""] | file_patterns에서 제외할 파일 | ||
| unit_remove | String | "" | 사용자 파일 삭제. 일(day) 또는 시간(hour) 단위로 삭제합니다. 주의: 파일 자동 삭제를 설정하지 않으면 LogBus2의 메모리 사용량이 점점 늘어납니다 | ||
| offset_remove | Int | 0 | 사용자 파일 삭제. offset_remove>0이고 unit_remove를 day 또는 hour로 설정하면 사용자 파일 삭제 기능이 적용됩니다. | ||
| remove_dirs | Bool | true|false | false | 폴더 삭제 활성화 여부 | |
| http_timeout | String | 500ms | 600s | receiver 측으로 데이터를 전송할 때의 타임아웃 시간. 기본값: 600s. 범위: 200ms - 600s. 밀리초 "ms", 초 "s", 분 "m", 시간 "h"를 지원합니다. | |
| iops | int | 20000 | 20000 | Logbus의 초당 데이터 처리량(건수) 제한 | |
| limit | bool | true|false | false | 속도 제한 스위치 활성화 | |
| http_compress | String | none | gzip | none | http 전송 시 데이터 압축 포맷. none=압축 안 함. 기본값: none. | |
| filters | object list | 이벤트 필터, 여러 필터 간에는 OR 관계 | |||
| filters[0].key | string | #event_name | ✔️ | 필터링할 key 값 | |
| filters[0].value | interface{} | register | ✔️ | 필터링할 value 값 | |
| filter[0].type | string | string | string | value 값의 타입, 기본값 string, string | boolean | int64 | regex 지원 |
Kafka
NOTE:Logbus Kafka 모드를 사용하기 전에 반드시 Consumer Group 자유 사용을 활성화하십시오
| 설정 | 타입 | 예시 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|---|
| brokers | String List | ["localhost:9092"] | ✔️ | [""] | Kafka Brokers |
| topic | String | "ta-msg-chan" | ✔️ | "" | Kafka 소비 topic |
| consumer_group | String | "ta-consumer" | ✔️ | "" | Kafka Consumer Group |
| protocol | String | "plain" | "none" | Kafka 인증 모드 | |
| username | String | "ta-user" | "" | Kafka 사용자 이름 | |
| password | String | "ta-password" | "" | Kafka 비밀번호 | |
| instance | String | "" | "" | CKafka에 필요한 인스턴스 ID | |
| fetch_count | Number | 1000 | 10000 | Poll 1회당 메시지 수 | |
| fetch_time_out | Number | 30 | 5 | Poll 타임아웃 시간 | |
| read_committed | Bool | true | false | Kafka Committed 데이터만 소비할지 여부 | |
| disable_tls | Bool | true | false | tls 검증 끄기 | |
| cloud_provider | String | "tencent" | "" | 공용 네트워크로 Kafka에 연결할 때 사용, 현재 지원하는 클라우드 제공업체: tencent,huawei,ali | |
| block_partitions_revoked | Bool | false | false | 블로킹 소비 여부. 활성화하지 않으면 여러 Logbus가 같은 consumer_group에 있을 때 데이터 중복 문제가 발생함 | |
| auto_reset_offset | String | "earliest" | "earliest" | 커밋된 오프셋이 없을 때의 기본 동작을 지정하는 파라미터 |
NOTE:Logbusv2는 현재 로드 밸런싱 모드로 Kafka를 소비하므로 Logbusv2 배포 수≤partition num이어야 합니다
모니터링 설정 및 대시보드 구축
모니터링 설정 DEMO를 참고하십시오
알림 설정
알림 설정 DEMO를 참고하십시오
플러그인 사용
플러그인 설정 DEMO를 참고하십시오
6. 고급 사용법
여러 이벤트를 단일 Logbus로 전송
Logbus를 하나만 배포한 경우 IO 제한으로 인해 일부 정보의 소비가 지연될 수 있습니다. 예를 들면 다음과 같습니다
.
├── event_1
│ ├── log.1
│ ├── log.2
│ ├── log.3
│ ├── log.4
│ └── log.5
├── event_2
│ ├── log.1
│ ├── log.2
│ ├── log.3
│ ├── log.4
│ └── log.5
└── event_3
├── log.1
├── log.2
├── log.3
├── log.4
└── log.5
폴링 방식이므로 소비 순서는 event_*/log.1 -> event_*/log.2 -> event_*/log.3입니다. 이 경우 파일 소비 진행이 느려질 수 있으므로, 여러 Logbus를 실행하고 컨텍스트 의미가 없는 로그를 Glob으로 분할하여 Glob에 매칭된 파일을 병렬로 업로드할 수 있습니다
다중 PipeLine 설정
NOTE: 다중 PipeLine에서는 appid가 중복될 수 없습니다
{
"datasource": [
{
"file_patterns": ["/data/log1/*.txt", "/data/log2/*.log"], //파일 Glob 매칭 규칙
"app_id": "app_id", //APPID는 AE 공식 사이트의 token입니다. AE 백엔드의 프로젝트 구성 페이지에서 연동할 프로젝트의 APPID를 확인하여 여기에 입력하십시오
"unit_remove": "day", //파일 삭제 단위, "day", "hour" 지원
"offset_remove": 7,//unit_remove*offset_remove로 최종 삭제 시간을 구함 **offset은 0보다 커야 하며, 그렇지 않으면 적용되지 않음
"remove_dirs": true,//폴더 삭제 활성화 여부, 기본값 false NOTE:폴더 내 모든 파일의 소비가 끝난 후에만 폴더를 삭제함
"http_compress": "gzip"//http 압축 활성화 여부, 기본값 none
},
{
"file_patterns": ["/data/log1/*.txt", "/data/log2/*.log"], //파일 Glob 매칭 규칙
"app_id": "app_id", //APPID는 AE 공식 사이트의 token입니다. AE 백엔드의 프로젝트 구성 페이지에서 연동할 프로젝트의 APPID를 확인하여 여기에 입력하십시오
"unit_remove": "day", //파일 삭제 단위, "day", "hour" 지원
"offset_remove": 7,//unit_remove*offset_remove로 최종 삭제 시간을 구함 **offset은 0보다 커야 하며, 그렇지 않으면 적용되지 않음
"remove_dirs": true,//폴더 삭제 활성화 여부, 기본값 false NOTE:폴더 내 모든 파일의 소비가 끝난 후에만 폴더를 삭제함
"http_compress": "gzip"//http 압축 활성화 여부, 기본값 none
}
],
"cpu_limit": 4, //Logbus2가 사용하는 CPU 코어 수 제한
"push_url": "http://RECEIVER_URL"
}
LogBus2 On Docker
최신 이미지 가져오기
docker pull thinkingdata/ta-logbus-v2:latest
호스트에 영구 저장용 folder를 생성하고 설정 파일 초기화
mkdir -p /your/folder/path/{conf,log,runtime}
touch /your/folder/path/conf/daemon.json
vim /your/folder/path/conf/daemon.json
⚠️경고: runtime 디렉터리의 파일을 임의로 삭제하지 마십시오
설정 템플릿을 수정하여 daemon.json에 쓰기
{
"datasource": [
{
"type":"file",
"app_id": "YOUR APP ID",
"file_patterns": ["/test-data/*.json"]
},
{
"type":"kafka",
"app_id": "YOUR APP ID",
"brokers": ["localhot:9092"],
"topic":"ta-message",
"consumer_group":"ta"
}
],
"push_url": "YOUR PUSH URL WITHOUT SUFFIX OF/logbus"
}
데이터 폴더를 마운트하고 LogBus 시작
docker run -d \
--name logbus-v2 \
--restart=always \
-v /your/data/folder:/test-data/ \
-v /your/folder/path/conf/:/ta/logbus/conf/ \
-v /your/folder/path/log/:/ta/logbus/log/ \
-v /your/folder/path/runtime/:/ta/logbus/runtime/ \
thinkingdata/ta-logbus-v2:latest
LogBus2 On K8s
환경 준비
- kubectl이 k8s 클러스터에 연결할 수 있고 배포 권한이 있어야 합니다.
- 의존성 설치: helm 문서에 따라 로컬 명령줄에 helm을 설치합니다 https://helm.sh/zh/docs/intro/install/
logbus v2 helm 파일 다운로드
📎 ta-logBusv2-2.0.1.8-helm.tar.gz(2 KB)tar xvf logBusv2-helm.tar && cd logbusv2
logbus 설정
준비
- 콘솔에서 업로드할 로그의 pvc를 생성합니다
- pvc 이름을 가져오고 namespace를 확인합니다
- AE의 app id, receiver url을 가져옵니다
values.yaml 수정
pvc:
name: YOUR_PVC_NAME # pvc 이름
logbus_version: 2.1.0.2
namespace: YOUR_NAMESPACE # namespace 이름
logbus_configs:
- push_url: "http://RECEIVER_URL" # AE로 데이터를 업로드하는 receiver 주소
datasource:
- file_patterns:
- "container:파일 상대 경로의 와일드카드" # 주의: "container:" 접두사를 삭제하지 마십시오
- "container:파일 상대 경로의 와일드카드" # 주의: "container:" 접두사를 삭제하지 마십시오
app_id: YOUR_APP_ID # AE 시스템의 app id
렌더링된 yaml 미리보기
helm install --dry-run -f values.yaml logbus .
helm으로 logbusv2 배포
helm install -f values.yaml logbus-v2 .
생성된 statefulset 확인
kubectl get statefulset
생성된 pod 확인
kubectl get pods
K8s 내 LogBus 버전 업데이트
vim values.yaml # 기존 values.yaml 파일 수정
# logbus_version을 최신으로 수정 NOTE:하위 호환성을 고려하여 latest는 사용하지 않는 것이 좋음!
logbus_version:2.0.1.8 -> logbus_version:2.1.0.2
# 저장 후 종료
helm upgrade -f values.yaml logbus .
# 롤링 업데이트 대기
주의
logbusv2에는 마운트한 로그 pvc에 대한 읽기/쓰기 권한이 필요합니다.
logbusv2는 파일 소비 기록과 실행 로그를 pod별로 pvc에 기록합니다. pvc에서 logbus 관련 기록을 삭제하면 데이터가 재전송될 위험이 있습니다.
설정 상세 설명
다음 명령을 실행합니다:
helm show values .
사용 가능한 설정이 표시됩니다:
# Default values for logbusv2.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
pvc:
name: pvc-logbus
logbus_version: 2.1.0.2
namespace: big-data
logbus_configs:
#### pod 1
#### push_url: receiver url, need http:// https:// prefix
- push_url: "http://192.0.2.10:8992/"
datasource:
- file_patterns:
#### target files relative path in pvc
- "container:/ta-logbus-0/data_path/*"
#### AE app_id
app_id: "thinkingAnalyticsAppID"
#### pod 2
- push_url: "http://192.0.2.11:8992/"
datasource:
- file_patterns:
- "container:/ta-logbus-1/data_path/*"
app_id: "thinkingAnalyticsAppID"
#### pod 3
- push_url: "http://192.0.2.11:8992/"
datasource:
- file_patterns:
- "container:/ta-logbus-2/data_path/*"
app_id: "thinkingAnalyticsAppID"
#### logbus pod requests
#requests:
# cpu: 2
# memory: 1Gi
requests 부분은 명시적으로 설정하지 않으면 yaml에 나타나지 않습니다.
pvc 내 단일 디렉터리
pvc:
name: YOUR_PVC_NAME # 실제 pvc 이름 입력
namespace: YOUR_NAMESPACE # 이미 존재하는 namespace
logbus_configs:
- push_url: "http://RECEIVER_URL" # http 또는 https, pod에서 접근할 수 있는 AE receiver URL 입력
datasource:
- file_patterns:
- "container:/ta-logbus-0/data_path/*" # "container:"는 플레이스홀더로, yaml 배포 과정에서 상대 경로가 컨테이너에서 접근할 수 있는 절대 경로로 바뀝니다. 디렉터리를 설정할 때는 container: 접두사를 붙여야 합니다.
app_id: "thinkingAnalyticsAppID" # AE 시스템 app id
pvc 내 여러 디렉터리
pvc 내 여러 디렉터리를 읽을 때는 pod를 나누어 배포하고 각 pod가 폴더 하나를 담당하도록 하는 것을 권장합니다. 이렇게 배포하면 성능과 안전성이 더 좋습니다.
pvc:
name: pvc-logbus
namespace: big-data
logbus_configs:
#### pod 1
#### push_url: receiver url, need http:// https:// prefix
- push_url: "http://192.0.2.10:8992/"
datasource:
- file_patterns:
#### target files relative path in pvc
- "container:/ta-logbus-0/data_path/*"
#### AE app_id
app_id: "thinkingAnalyticsAppID"
#### pod 2
- push_url: "http://192.0.2.11:8992/" # 주의: 각 app id와 push url은 개별적으로 설정해야 합니다
datasource:
- file_patterns:
- "container:/ta-logbus-1/data_path/*"
app_id: "thinkingAnalyticsAppID"
#### pod 3
- push_url: "http://192.0.2.11:8992/"
datasource:
- file_patterns:
- "container:/ta-logbus-2/data_path/*"
app_id: "thinkingAnalyticsAppID"
여러 pvc
현재는 단일 pvc 배포만 지원하며, 여러 pvc를 사용하려면 values.yaml 파일을 여러 번 설정해야 합니다
7. 자주 묻는 질문
Q:폴더 삭제를 활성화했는데 LogBus가 폴더를 삭제하지 않는 이유는 무엇입니까
A:LogBus는 현재 폴더 내 파일을 LogBus가 모두 읽었고 해당 폴더에 파일이 하나도 남아 있지 않을 때에만 폴더 삭제를 실행합니다
Q:로그가 업로드되지 않는 이유는 무엇입니까?
A:LogBus가 읽는 데이터 파일에서 데이터 1건 안에 줄바꿈 문자가 있으면 안 됩니다. 설정하는 데이터 파일은 정규식을 지원하지 않으며 와일드카드(Glob)만 사용할 수 있습니다. 설정한 데이터 파일 규칙이 실제 파일과 매칭되는지 확인하십시오
Q:파일이 중복 업로드되는 이유는 무엇입니까
A:LogBus의 파일 읽기 진행 상황은 runtime 디렉터리에 저장됩니다. 잘못된 조작으로 이 디렉터리를 삭제하면 이미 업로드된 파일이 다시 업로드됩니다.
Q:데이터 스큐가 발생하는 이유는 무엇입니까
A: 현재 AE는 고객의 distinct_id를 데이터 UUID로 사용하여 shuffle합니다. 대량 데이터의 distinct_id에 같은 문자열을 사용하면 단일 노드의 메모리 부담이 커져 데이터 스큐 위험이 높아질 수 있습니다
8. Releases Note
버전:2.1.2.2 --- 2025.11.7
추가
- 파서 데이터 무결성 검증을 선택적으로 건너뛰는 기능 추가
버전:2.1.2.1 --- 2025.9.26
추가
- kafka 연결 타임아웃 설정 추가, 기본값 15000ms
최적화
- kafka 소비 정보 모니터링 지표 조회 빈도 감소
버전:2.1.2.0 --- 2025.5.8
최적화
- franz-go 버전 업데이트
버전:2.1.1.9 --- 2025.3.24
추가
- 행 전체 필터링 기능 추가
버전:2.1.1.8 --- 2025.2.23
최적화
- 빈 줄을 읽었을 때의 대기 처리 로직 최적화
버전:2.1.1.7 --- 2025.1.20
추가
- 필터 타입에 regex 추가, 정규표현식으로 필터링 설정 가능
버전:2.1.1.6 --- 2024.12.20
최적화
- env에 설정한 http 프록시 사용 지원
버전:2.1.1.4 --- 2024.5.15
최적화
- Kafka 소스에서 fetch_max_partition_bytes 지원
- DataSource에서 원격 검증 건너뛰기 지원, 기본값은 비활성화
- SIMD를 사용하여 JSON 처리 가속
버전:2.1.1.3 --- 2024.2.23
최적화
- Kafka Progress 사용 경험 개선
- auto_reset_offset 파라미터 지원
- 로그에 Kafka Client 관련 정보 기록
수정
- 강제 종료 시 Logbus가 잘못된 프로세스를 종료하는 문제
- 메모리 누수 문제
- Goroutine 누수 문제
- Kafka 타임아웃 시 소비하지 않는 문제
- Windows 버전 시작 실패
- Windows 버전 업데이트 불가
버전:2.1.1.2 --- 2024.2.2
최적화
- 로그 형식 및 일부 i18n이 뒤섞이는 문제
버전:2.1.1.1 --- 2024.1.10
최적화
progress명령의 정확성
버전:2.1.1.0 --- 2023.12.11
수정
- 로그 기본값을 7일 보존, 단일 파일 100M 단위 분할, 최대 30개 로그 보존으로 수정. 업그레이드하지 않고 log 설정 항목을 설정해도 됩니다.
영향
- 데이터 소스에서 파싱할 수 없는 오류 데이터가 대량으로 생기면 로그에 오류 데이터가 기록되어 로그 파일이 점점 커집니다.
버전:2.1.0.9 --- 2023.10.26
추가
- 이벤트 필터 지원, 클라이언트 측에서 데이터 필터링
- logbus가 있는 디렉터리의 공간 검사 지원
버전:2.1.0.8 --- 2023.6.06
최적화
- 플러그인이 올바르게 종료되도록 보장
- 프로세스 통신 및 로그 출력 최적화
수정
- cpu limit 로그 출력
- linux arm 아키텍처 컴파일 과정
버전:2.1.0.7 --- 2023.4.07
추가
- kafka 데이터 소스에서 progress 명령 지원
최적화
- 커스텀 태그에서 환경 변수 가져오기 지원
버전:2.1.0.6 --- 2023.3.28
최적화
- 커스텀 태그 지원, 데이터 출처 추적
- 커스텀 플러그인 구분자 지원
버전:2.1.0.5 --- 2023.2.20
최적화
- 데이터 분배 프로젝트에서 배열 지원, 숫자와 문자열 기본 타입 호환
- 모니터링 지표 계산 로직
버전:2.1.0.4 --- 2023.1.12
추가
- 줄바꿈 문자가 없는 파일 데이터 소스 읽기 설정 지원
- 반복 읽기 횟수와 간격 시간 설정 지원
수정
- 모니터링 지표 집계의 동시성 bug 수정
버전:2.1.0.3 --- 2022.12.23
추가
- 설정으로 데이터 내부의 appid 데이터를 덮어쓸 수 있도록 허용
수정
- appid_in_data 사용 시 appid의 기본값 제거
버전:2.1.0.2 --- 2022.12.13
추가
- 플러그인에서 속성 분할 지원
수정
- 다중 pipeline에서 meta_name 생성
버전:2.1.0.1 --- 2022.11.29
추가
- kafka 데이터 소스에서 트랜잭션 read committed 지원
- 플러그인 명령에서 sh 환경 의존 지원
수정
- appid 설정이 없을 때 meta_name 생성
버전:2.1.0.0 --- 2022.11.22
추가
- 데이터 분배: 설정한 appidMap에 따라 데이터를 여러 프로젝트로 분배
- kafka 데이터 소스에서 여러 topic 소비 지원
- 속도 제한기: 전송 속도를 제한하여 서버 측 부하 감소
- 다중 pipeline으로 데이터 전송
- grpc 기반 커스텀 플러그인 파서
- 실시간 성능 모니터링(prometheus, pushgateway, grafana)
수정
- 파일 소비 블로킹 문제
- kafka 데이터 소스에서 logbus가 중지되지 않는 bug 수정
- file 데이터 소스에서 파일 활성도가 높으면 빠져나오지 못하는 bug 수정
- 파일 리스너 종료 문제 수정
버전:2.0.1.8 --- 2022.07.20
추가
- dev(형식 검증 명령)
- Kafka Source
- 멀티 플랫폼 지원
수정
- 파일 전송 진행률 프로세스가 여러 번 깨어나는 문제
- 로그량 감소
Progress를 파일 전송 시간순으로 정렬- 다중 pipeline 최적화
Docker image경량화
버전:2.0.1.7 --- 2022.03.01
최적화
- 실행 효율, 성능 향상
- 파일 삭제 로직
- 오프셋 파일 내보내기 로직
- 메모리 사용량

