시스템 메트릭 추출: Airflow와 Docker를 활용한 ClickHouse 모니터링
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
데이터 분석
대상자
- 대상자: 데이터 엔지니어, DevOps 개발자, 시스템 모니터링 담당자
- 난이도: 중간 (Airflow, Docker, Python 기초 지식 필요)
핵심 요약
- Airflow DAG를 활용해 시간당 ClickHouse 시스템 메트릭(예:
system.metrics
) 수집 자동화 - Docker를 통해 ClickHouse + Airflow 환경을 로컬에서 구축 및 분리 가능
- Python 스크립트와
clickhouse-connect
라이브러리로 실시간 메트릭 쿼리 및 CSV 파일에 저장
섹션별 세부 요약
1. Airflow DAG 구조
- 시간 기반 스케줄링: DAG 설정을 통해
system.metrics
테이블 쿼리 시간당 실행 - DAG 트리거: Airflow가 Python 스크립트 실행을 자동으로 트리거
- 에러 처리: Airflow가 로깅 및 재시도 기능으로 실패 시 복구 가능
2. Python 스크립트 실행
- ClickHouse 연결:
clickhouse-connect
라이브러리를 사용해 DB 연결 및 쿼리 실행 - 메트릭 수집:
system.metrics
테이블에서 실시간 메트릭(예: Query, Merge) 추출 - CSV 파일 작성: 결과를 시간戳 기반 CSV 파일(예:
metrics-2025-06-21.csv
)에 추가 저장
3. Docker 환경 구성
- Docker Compose:
docker-compose.yaml
파일로 ClickHouse + Airflow 컨테이너 동시 실행 - 파일 저장 구조:
output/
폴더에 일별 메트릭 로그 저장,logs/
폴더에 Airflow 로그 저장 - 의존성 관리:
requirements.txt
로 Python 라이브러리 설치 명시
4. CSV 파일 형식 및 확장성
- CSV 구조:
timestamp,metric_name,value
형식으로 시간戳 + 메트릭 이름 + 값 저장 - 확장성: CSV를 ClickHouse/PostgreSQL에 저장, S3/GCP에 업로드, Grafana/Streamlit으로 시각화 가능
5. 학습 포인트
- 모니터링 자동화의 중요성: 시스템 건강도 추적을 통한 DB/파이프라인/인프라 상태 분석
- 모듈화된 DAG 설계: 리usable, maintainable한 데이터 파이프라인 구축
- 로그 관리: 시간戳 기반 로깅으로 문제 발생 시 빠른 디버깅 가능
결론
- Docker로 환경 분리 및 Airflow DAG 설계를 통해 확장 가능한 모니터링 파이프라인 구축
- CSV 대신 ClickHouse/PostgreSQL 저장 및 Grafana 시각화 도구 활용으로 분석 효율성 극대화
- 시간戳 기반 CSV 저장으로 시계열 데이터 분석 가능, 모듈화된 DAG 설계로 유지보수성 향상