사내에서 애플리케이션 모니터링을 위하여, 쿠버네티스 클러스터 내 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의 후미에 생성된 날짜가 함께 기입된 부분을 볼 수 있다.
반응형
'Observability > Elastic' 카테고리의 다른 글
[ELK/EFK] 로그 수집 - Filebeat / Logstash / Fluentd / Fluent-bit (0) | 2024.03.20 |
---|---|
[ELK] Kubernetes 환경에서 Elasticsearch / Kibana 설치 (0) | 2024.02.21 |
[ELK] Elasticsearch (0) | 2024.01.14 |
[ELK] Logstash - Postgresql 연결 실패 (Docker Network) (0) | 2023.02.24 |