로그 적재 & 수집 개선 Elasticsearch,Logstash
로그 적재 & 수집 개선 Elasticsearch,Logstash

로그 적재 & 수집 개선 Elasticsearch,Logstash

gubun
Solution
Stack
ElasticSearch
Logstash
Node.js
Python
진행기간
2020년 10월 ~ 2020년 12월
작성일
2020년 10월 01일 00시 00분
Author

👏 프로젝트 소개


  • 프로젝트 개요
    • 프로젝트 이름: Elasticsearch Logstash 2.4.0 -> 7.9.2 버전 업그레이드 및 구조 개선
    • 프로젝트 기간: 2020년 10월 ~ 2020년 12월
    • 역할: 개발 및 시스템 엔지니어
      • 오픈 소스 솔루션 리서치
      • 솔루션 도입 소스 개발
      • 서버 선정 및 구축

✍️ 프로젝트 배경


  • 도입 이전 상황
    • Elasticsearch
    • 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 라이브러리 업데이트 및 쿼리 수정

🔦 도입 과정


  1. 주요 변경 사항 체크
    1. 항목
      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) 지원
      분산 환경 성능
      기본 지원
      성능 최적화 및 확장성 강화
      업그레이드 용이성
      수동 업그레이드 필요
      롤링 업그레이드 지원
  1. 서버 설치 및 환경 구성
    1. 설치 정보
      1. 소프트웨어
        버전
        Elasticsearch
        7.9.2
        Logstash
        7.9.2
    2. 설치
      1. Elasticsearch 및 Logstash 업그레이드
        1. Elasticsearch 7.9.2 설치 및 설정
          1. 인덱스 template 설계
            1. 형태소 분석 미진행 필드 type String에서 keyword로 변경
        2. Logstash 7.9.2 설치 및 설정
          1. template 파일 작성 (필드 사전 정의)
          2. 파싱 config 수정 manage_template, template 추가
          3. template 기능 추가로 배치성 인덱스를 미리 생성하지 않고 로그가 들어오면 자동으로 인덱스가 미리 설정된 맵핑 정보로 생성되도록 개선
          4. 멀티 type 기능 삭제로 방화벽 일단위 인덱스로 적재되도록 개선
      2. 데이터 집계 및 검색 스크립트 수정 개발
        1. 월단위 인덱스의 일자별 type에서 데이터를 검색하여 집계하던 방식 개선
          1. 일자별 인덱스를 조회해서 적재하도록 개선
      3. 서버 환경 설정
        1. Elasticsearch와 Logstash 간의 데이터 파이프라인 설정
        2. 클러스터 안정성을 위한 설정 최적화

🔦 결과 및 성과


  • 성과 및 결과
    • 도입 후 성과
      • 시스템 성능 및 안정성 향상
        • Elasticsearch 7.9.2의 개선된 힙 메모리 관리 덕분에 시스템 안정성이 크게 향상되었습니다.
      • 데이터 검색 및 집계 효율성 증대
        • Python과 Node.js를 사용한 데이터 집계 및 검색 기능으로 효율성이 높아졌습니다.
  • 향후 계획
    • 정기적인 시스템 업데이트 및 유지보수

댓글

guest