LogKit 소개
LogKit은 로그와 메트릭을 수집하고 전송하는 강력한 서버 에이전트로, 직관적인 웹 콘솔을 통해 쉽게 관리할 수 있습니다. 이 도구는 다양한 환경에서 로그 데이터를 중앙 집중식으로 처리할 수 있도록 설계되어 있으며, 대규모 분산 시스템부터 소규모 서버까지 유연하게 적용 가능합니다.
저장소 디렉터리 구조
LogKit 저장소를 클론한 후 확인할 수 있는 주요 디렉터리 구성은 다음과 같습니다:
|-- cmd # 애플리케이션 진입점(main.go 포함) |-- deploy # 배포 스크립트 및 매니페스트(Kubernetes 등) |-- doc # 사용 설명서 및 기술 문서 |-- examples # 실제 활용 예제 |-- internal # 내부 전용 패키지 및 유틸리티 |-- pkg # 재사용 가능한 공통 패키지 |-- scripts # 빌드, 테스트, 배포 자동화 스크립트 |-- tools # 보조 개발 도구 모음 |-- .gitignore # 제외할 파일 정의 |-- LICENSE # 오픈소스 라이선스 정보 |-- README.md # 기본 사용법 및 프로젝트 개요 |-- Makefile # 빌드 및 실행 자동화 명령어 |-- Dockerfile # 컨테이너 이미지 빌드 정의 |-- go.mod / go.sum # Go 모듈 종속성 관리 |-- logkit.conf.example # 설정 파일 샘플
- cmd/logkit/main.go: 애플리케이션 시작 지점으로, CLI 인수 파싱 및 서비스 초기화 담당.
- examples/: 다양한 입출력 소스를 활용한 구성 예시 제공.
- deploy/: 클라우드 또는 쿠버네티스 환경에 배포하기 위한 YAML 파일 포함.
실행 방법
1. 소스 코드 기반 실행
Go 환경이 준비된 경우, 다음 명령어로 직접 빌드 및 실행 가능합니다:
go build -o logkit-agent cmd/logkit/main.go
./logkit-agent -f ./config/logkit.conf
여기서 -f 옵션은 사용자 정의 설정 파일 경로를 지정합니다.
2. Docker 컨테이너로 실행
Docker를 사용하는 경우, 아래와 같이 공식 이미지를 가져와 실행합니다:
docker pull wonderflow/logkit:v1.8.0
컨테이너 실행 명령어:
docker run -d \
--name logkit-container \
-p 3000:3000 \
-v $(pwd)/confs:/app/confs \
-v /var/logs:/host/logs \
wonderflow/logkit:v1.8.0
- 포트 3000을 호스트에 노출하여 웹 대시보드 접근 가능.
/app/confs는 설정 파일 마운트 경로이며,/host/logs는 로그 원본 위치입니다.
설정 파일 구성
LogKit의 핵심은 logkit.conf 파일에 있으며, JSON 형식으로 작성됩니다. 주요 구성 요소는 다음과 같습니다:
1. 데이터 소스 (Source)
로그가 어디서 오는지 정의합니다. 예: 파일 경로, 표준 출력, TCP 입력 등.
{
"source": {
"file": {
"paths": ["/host/logs/app.log"],
"read_from": "oldest"
}
}
}
2. 데이터 처리기 (Processor)
수집된 로그를 필터링하거나 변환합니다. 예: 정규 표현식 추출, 특정 필드 삭제, 시간 파싱 등.
"processors": [
{
"type": "regex",
"pattern": "(?P<time>\\d{4}-\\d{2}-\\d{2}).*(?P<level>ERROR|WARN|INFO)"
}
]
3. 전송 대상 (Destination)
처리된 데이터를 어디로 보낼지 결정합니다. 지원 대상 예시:
- HTTP 엔드포인트
- Elasticsearch
- Kafka 토픽
- 파일 저장
"destinations": [
{
"type": "elasticsearch",
"hosts": ["http://es-host:9200"],
"index": "logkit-logs-%Y.%m.%d"
}
]
웹 콘솔 사용
서비스가 시작되면 http://localhost:3000 에서 웹 인터페이스에 접속할 수 있습니다. 여기서는 실시간 로그 스트림 확인, 설정 수정, 상태 모니터링 등을 수행할 수 있습니다.
참고 사항
- 실제 운영 환경에서는 TLS 및 인증을 통한 보안 설정이 권장됩니다.
- 성능 최적화를 위해 버퍼 크기 및 전송 주기를 조정할 수 있습니다.
- 샘플 설정 파일인
logkit.conf.example을 기반으로 사용자 정의 설정을 생성하세요.