Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

36.5.5. Curator

관리자는 Curator를 사용하여 프로젝트별로 예약된 Elasticsearch 유지 관리 작업을 자동으로 수행할 수 있습니다. 구성을 기반으로 매일 작업을 수행하도록 예약됩니다. Elasticsearch 클러스터당 하나의 Curator Pod만 권장됩니다. Curator Pod는 cronjob에 명시된 시간에만 실행되며 Pod는 완료 시 종료됩니다. Curator는 다음 구조의 YAML 구성 파일을 통해 구성됩니다.

참고

시간대는 Curator Pod가 실행되는 호스트 노드를 기반으로 설정됩니다.

$PROJECT_NAME:
  $ACTION:
    $UNIT: $VALUE

$PROJECT_NAME:
  $ACTION:
    $UNIT: $VALUE
 ...

사용 가능한 매개변수는 다음과 같습니다.

변수 이름설명

PROJECT_NAME

myapp-devel과 같은 프로젝트의 실제 이름입니다. OpenShift Container Platform 작업 로그의 경우 프로젝트 이름으로 이름 .operations를 사용합니다.

작업

수행할 작업으로, 현재 삭제만 허용됩니다.

UNIT

,몇 주 또는 몇 중 하나.

단위 수의 정수입니다.

.defaults

$PROJECT_NAME 으로 .defaults 를 사용하여 지정되지 않은 프로젝트의 기본값을 설정합니다.

.regex

프로젝트 이름과 일치하는 정규식 목록입니다.

패턴

작은 따옴표로 묶은 유효하고 올바르게 이스케이프 된 정규 표현식 패턴입니다.

예를 들어 Curator를 다음과 같이 구성하려면

  • myapp-dev 프로젝트에서 1 day이 지난 인덱스 삭제
  • 1 week가 지난 myapp-qe 프로젝트에서 인덱스 삭제
  • 8 weeks가 지난 작업 로그 삭제
  • 31 days이 지난 후 다른 모든 프로젝트 인덱스 삭제
  • '^project\..+\-dev.*$' regex와 일치하는 1일이 지난 인덱스 삭제
  • '^project\..+\-test.*$' regex와 일치하는 2일이 지난 인덱스 삭제

다음을 사용하십시오.

config.yaml: |
  myapp-dev:
    delete:
      days: 1

  myapp-qe:
    delete:
      weeks: 1

  .operations:
    delete:
      weeks: 8

  .defaults:
    delete:
      days: 31

  .regex:
    - pattern: '^project\..+\-dev\..*$'
      delete:
        days: 1
    - pattern: '^project\..+\-test\..*$'
      delete:
        days: 2
중요

작업에 대해 $UNIT으로 months을 사용하면 Curator는 현재 달의 현재 날짜가 아니라 현재 달의 첫 날부터 계산을 시작합니다. 예를 들어 오늘이 4월 15일이고 오늘보다 2개월 지난 인덱스를 삭제하려는 경우(삭제: 개월: 2) Curator는 2월 15일 이전의 인덱스를 삭제하지 않습니다. 2월 1일 이전의 인덱스를 삭제합니다. 즉, 현재 달의 첫날로 되돌아간 다음 해당 날짜로부터 총 두 달 전으로 되돌아갑니다. Curator를 정확하게 사용하려면 일(예: 삭제: days)을 사용하는 것이 좋습니다. 30).

36.5.5.1. Curator 작업 파일 사용

OpenShift Container Platform 사용자 정의 구성 파일 형식을 설정하면 내부 인덱스가 실수로 삭제되지 않습니다.

작업 파일을 사용하려면 Curator 구성에 제외 규칙을 추가하여 이러한 인덱스를 유지합니다. 필요한 모든 패턴을 수동으로 추가해야 합니다.

actions.yaml: |
actions:

    action: delete_indices
    description: be careful!
    filters:
    - exclude: false
      kind: regex
      filtertype: pattern
      value: '^project\.myapp\..*$'
    - direction: older
      filtertype: age
      source: name
      timestring: '%Y.%m.%d'
      unit_count: 7
      unit: days
    options:
      continue_if_exception: false
      timeout_override: '300'
      ignore_empty_list: true

    action: delete_indices
    description: be careful!
    filters:
    - exclude: false
      kind: regex
      filtertype: pattern
      value: '^\.operations\..*$'
    - direction: older
      filtertype: age
      source: name
      timestring: '%Y.%m.%d'
      unit_count: 56
      unit: days
    options:
      continue_if_exception: false
      timeout_override: '300'
      ignore_empty_list: true

    action: delete_indices
    description: be careful!
    filters:
    - exclude: true
      kind: regex
      filtertype: pattern
      value: '^project\.myapp\..*$|^\.operations\..*$|^\.searchguard\..*$|^\.kibana$'
    - direction: older
      filtertype: age
      source: name
      timestring: '%Y.%m.%d'
      unit_count: 30
      unit: days
    options:
      continue_if_exception: false
      timeout_override: '300'
      ignore_empty_list: true