본문 바로가기
Observability/Logs

[Elastic APM] APM Index 날짜 별 관리

by dev_ss 2024. 6. 4.

 

 

사내에서 애플리케이션 모니터링을 위하여, 쿠버네티스 클러스터 내 Apm Server를 구축하고, 마이크로 서비스의 Agent에서 집계한 데이터를 엘라스틱서치로 전송하는 파이프라인을 구축하였다.

 

 

처음에는 별 문제가 없었으나, Apm 데이터가 점점 쌓이며 관리에 대한 방법에 대하여 필요성이 느껴졌다.

 

 

그리하여 Index Lifecycle Policies를 적용하려고 했고, 여기서 각 Index에 Apm이 생성된 날짜가 있으면 더 효율적으로 관리할 수 있을 것으로 판단하여 관련 옵션을 찾아보았고, 다음과 같이 적용하였다.

 

 

 

아래는 Apm Server의 apm-server.yml(설정 값)으로 이용되는 ConfigMap의 예제 파일이다.

 

# APM Server : 7.12.1 버전 기준

apiVersion: v1
kind: ConfigMap
metadata:
  name: apm-server-config
  labels:
    app: apm-server
data:
  apm-server.yml: |-
    logging.level: #<로깅레벨 : INFO / ERROR 등>
    apm-server:
      max_event_size: "307200"
      flush_interval: "10"
      max_queue_size: "100"
      host: "0.0.0.0:8200"
      kibana:
        enabled: true
        protocol: #<프로토콜 : http / https>
        username: #<엘라스틱서치 사용자 이름>
        password: #<엘라스틱서치 비밀번호>
        host: #<구축한 키바나 URL /포트 5601>
    output.elasticsearch:
      index: "apm-%{[observer.version]}-%{+yyyy.MM.dd}"
      indices:
        - index: "apm-%{[observer.version]}-sourcemap"
          when.contains:
            processor.event: "sourcemap"
        - index: "apm-%{[observer.version]}-error-%{+yyyy.MM.dd}"
          when.contains:
            processor.event: "error"
        - index: "apm-%{[observer.version]}-transaction-%{+yyyy.MM.dd}"
          when.contains:
            processor.event: "transaction"
        - index: "apm-%{[observer.version]}-span-%{+yyyy.MM.dd}"
          when.contains:
            processor.event: "span"
        - index: "apm-%{[observer.version]}-metric-%{+yyyy.MM.dd}"
          when.contains:
            processor.event: "metric"
        - index: "apm-%{[observer.version]}-onboarding-%{+yyyy.MM.dd}"
          when.contains:
            processor.event: "onboarding"
      hosts: #<구축한 엘라스틱서치 URL Array>
      protocol: #<프로토콜 : http / https>
      username: #<엘라스틱서치 사용자 이름>
      password: #<엘라스틱서치 비밀번호>
    setup.template.name: "apm"
    setup.template.pattern: "apm-*"

 

 

위 내용에서 핵심적인 부분은 output.elasticsearch의 하위에 존재하는 index와 indices부분이며, 여기서 선언된 내용을 기준으로 엘라스틱서치에 인덱스가 생성될 때, 날짜 부분을 포함하게 된다.

 

 

 

 

 

아래는 위 내용을 기반으로 생성된 Apm의 Index 목록이다.

 

 

 

 

 

Index의 후미에 생성된 날짜가 함께 기입된 부분을 볼 수 있다.

 

 

 

 

반응형