👏 프로젝트 소개
- 프로젝트 개요
- 프로젝트 이름: Elasticsearch Logstash 2.4.0 -> 7.9.2 버전 업그레이드 및 구조 개선
- 프로젝트 기간: 2020년 10월 ~ 2020년 12월
- 역할: 개발 및 시스템 엔지니어
- 오픈 소스 솔루션 리서치
- 솔루션 도입 소스 개발
- 서버 선정 및 구축
✍️ 프로젝트 배경
- 도입 이전 상황
- Elasticsearch
- Elasticsearch 2.4.0의 힙 메모리 관리 불안정으로 인한 빈번한 클러스터 노드 다운 (OOM)
- 신규 7.7 버전의 힙 메모리 관리 개선 및 성능 향상 기사 확인 후 업그레이드 필요성 인식
- 방화벽의 로그를 월마다 하나의 인덱스로 사용, type을 일단위로 쪼개서 관리
- Logstash
- 템플릿 관리 기능 미사용으로 OS crontab 스크립트를 통해 하루 한번 배치성으로 미리 정의된 맵핑 템플릿으로 인덱스를 생성
- 만약 cron이 어떠한 이유로 동작하지 않으면 해당일 로그 수집은 불가하여 로그 유실 발생
- 도입 이유 및 목표
- 도입 이유:
- 힙 메모리 관리 개선 및 성능 향상
- 최신 기능과 보안 패치 적용을 통한 시스템 안정성 강화
- 템플릿 관리 기능 도입으로 배치성 인덱스 생성 제거
- 목표:
- Elasticsearch와 Logstash의 최신 버전(7.9.2)으로 업그레이드
- 시스템 성능 및 안정성 향상
🔦 기술 스택 및 주요 기능 구현
- 기술 스택
- 주요 기술:
- Elasticsearch 7.9.2
- Logstash 7.9.2
- Python
- Node.js
- 주요 기능 및 구현 내용
- 데이터 적재:
- Elasticsearch 7.9.2 기반의 인덱스 구조 재설계
- Logstash output template 적용
- 데이터 집계:
- Python과 Node.js의 Elasticsearch 라이브러리 업데이트 및 쿼리 수정
🔦 도입 과정
- 주요 변경 사항 체크
항목 | Elasticsearch 2.4.0 | Elasticsearch 7.9.2 (OSS) |
출시일 | 2016년 9월 | 2020년 8월 |
힙 메모리 관리 | 기본 힙 메모리 관리 | 개선된 힙 메모리 관리 |
힙 메모리 사용량 감소 | 힙:저장 공간 비율 ~ 1:600 이하 | 힙:저장 공간 비율 ~1:4000 (약 7배 개선) |
type 필드 | 지원 | 삭제 |
필드 타입 변경 | string 단일 | keyword, text |
검색 성능 | 표준 검색 기능 | 성능 최적화 |
보안 기능 | 제한적 | 기본 보안 기능 포함 |
클러스터 관리 도구 | 기본 도구 제공 | Kibana 통합 관리 도구 |
인덱스 수명 주기 관리 | 제한적 | ILM (Index Lifecycle Management) 지원 |
분산 환경 성능 | 기본 지원 | 성능 최적화 및 확장성 강화 |
업그레이드 용이성 | 수동 업그레이드 필요 | 롤링 업그레이드 지원 |
- 서버 설치 및 환경 구성
- 설치 정보
- 설치
- Elasticsearch 및 Logstash 업그레이드
- Elasticsearch 7.9.2 설치 및 설정
- 인덱스 template 설계
- 형태소 분석 미진행 필드 type String에서 keyword로 변경
- Logstash 7.9.2 설치 및 설정
- template 파일 작성 (필드 사전 정의)
- 파싱 config 수정 manage_template, template 추가
- template 기능 추가로 배치성 인덱스를 미리 생성하지 않고 로그가 들어오면 자동으로 인덱스가 미리 설정된 맵핑 정보로 생성되도록 개선
- 멀티 type 기능 삭제로 방화벽 일단위 인덱스로 적재되도록 개선
- 데이터 집계 및 검색 스크립트 수정 개발
- 월단위 인덱스의 일자별 type에서 데이터를 검색하여 집계하던 방식 개선
- 일자별 인덱스를 조회해서 적재하도록 개선
- 서버 환경 설정
- Elasticsearch와 Logstash 간의 데이터 파이프라인 설정
- 클러스터 안정성을 위한 설정 최적화
소프트웨어 | 버전 |
Elasticsearch | 7.9.2 |
Logstash | 7.9.2 |
🔦 결과 및 성과
- 성과 및 결과
- 도입 후 성과
- 시스템 성능 및 안정성 향상
- Elasticsearch 7.9.2의 개선된 힙 메모리 관리 덕분에 시스템 안정성이 크게 향상되었습니다.
- 데이터 검색 및 집계 효율성 증대
- Python과 Node.js를 사용한 데이터 집계 및 검색 기능으로 효율성이 높아졌습니다.
- 향후 계획
- 정기적인 시스템 업데이트 및 유지보수
댓글