[Elastic Stack] Kibana에서 ilm 설정

허주환·2023년 1월 11일
0

Elastic Stack

목록 보기
5/6

0. Summary

Elastic Stack 구축 후 많은 로그들이 쌓이면서 EC2 디스크 용량이 가득 차는 현상이 발생하여 Elastic Search Index lifeCycle을 Kibana 인터페이스로 관리하는 방법에 대해 정리해 볼려고 한다.

1. ILM (Index Life Management)

Elastic Search의 Index 생명 주기를 의미한다.
비용, 인덱스 성능, 검색 성능에 따라
Kibana(8.5.2) 에선 Hot > Warn > Cold > Delete 순으로 설정 할 수 있다.

I. 생명주기

단계비용 (디스크 용량)인덱싱 성능검색 성능
Hot가장 많이 듬가장 빠름가장 빠름
Warn중간중간빠름
Cold적음느림느림
  • Delete
    • 인덱스 데이터 제거

II. 단계별 설정 값

  1. Hot
    • Rollover: 인덱스 보관 조건을 설정한다.
      • 기본 값: 30d, 50gb
    • Shrink: Rollover 후 인덱스 사이즈 축소
  2. Warn
    • Move data into phase when: Rollover 후 설정한 후에 Warn 단계로 이동
    • Replicas: 리플리카 수 설정 (복제할 인덱스 수)
    • Shrink: Rollover 후 인덱스 사이즈 축소
  3. Cold
    • Move data into phase when: Rollover 후 설정한 후에 Cold 단계로 이동
    • Replicas: 리플리카 수 설정 (복제할 인덱스 수)
  4. Delete
    • Move data into phase when: Rollover 후 설정한 후에 Delete 단계로 이동

2. Lifecycle Policy 생성

  • 설정한 값

    • Policy 이름: TEST-POLICY
    • Rollover 시점: 30일, 10GB
    • Warn 이동 시점: Rollover 후 5일
    • Delete 이동 시점: Rollover 후 10일
      • Delete 하기 전에 S3와 같은 저장소에 Index를 snapshot을 해둘 수 있다.
    • Cold 단계는 사용하지 않음, 나머지 기본 세팅
  • Name, Hot Setting

  • Warn, Delete Setting

2. Kibana Index Template 생성

I. Logistics

  • 설정한 값
    • Template 명: test-template (소문자만 가능)
    • Index 패턴: test-logs-*
      • 매칭되는 인덱스 명 예시)
        • test-logs-2023-01-09
        • test-logs-2023-01-10
        • test-logs-2023-01-11
    • 나미지 기본 세팅

II. Component template

  • 설정 X

III. Index setting

  • 인덱스 세팅
{
  "index": {
    "lifecycle": {
      "name": "TEST_POLICY", // 설정한 Policy 명
      "rollover_alias": "test-log" // 설정한 롤오버 별명
    }
  }
}

IV. Mappings

  • 설정 X
  • 인덱스의 필드 타입을 지정하는 단계
  • default Type: text
    • text Type은 Full text 검색을 하기 때문에 연산 비용이 비쌈
    • 타입에 맞게 설정하면 더 효율적으로 검색할 수 있다.

V. Aliases

  • 설정 X

VI. Review template

  • 설정한 값 요약본

3. Index Template에 Policy 적용

  • Add policy to index template 버튼 클릭

  • test-template 검색 후 Add policy 버튼 클릭

  • Policy 가 적용된 것을 확인

4. Logstash 설정

  • /etc/logstash/conf.d/logstash.conf
output {
  elasticsearch {
    host => ["elasticsearch-ip:9200"]
    ilm_enabled => true
    ilm_policy => "TEST_POLICY"
    ilm_rollover_alias => "test-log"
    user => "{elastic-user}"
    password => "{elastic-pasword}"
  }
}

5. Reference

  • elastricsearch - ilm 설정하기 (링크)
  • ILM: Manage the index lifecycle - 공홈 (링크)
  • Index lifecycle - 공홈 (링크)
  • Index Management in Kibana - 공홈 (링크)
profile
Junior BE Developer

0개의 댓글