본문 바로가기

소프트웨어-이야기/인프라

[APM]Elastic APM Agent 튜닝하기

최근에 회사에서 Elastic APM을 도입했다 ! 호호 🙉

쌩으로 도입한 후, 1주일 지켜본 결과. 몇가지 튜닝이 필요한듯하여 관련 자료를 찾아보았다!

( 튜닝을 안하니 APM Queue가 가득 찼다는 오류가 난다 🙈 )

 

1. Sample Rate

APM 에이전트에서 기본적으로 샘플링된 트랜잭션을 수집하긴 하지만, 수집 비율을 조정할 수 있다.

transaction_sample_rate 설정을 조정하면 스토리지 비용과 APM 운영으로 인한 부하를 줄일 수 있다.

100% 샘플링을 하더라도 Agent가 API 응답시간에는 영향을 미치지 않는다.

그리고 샘플링되지 않은 트랜잭션이더라도 응답시간 같은 기본 정보들은 수집된다. 

 

https://www.elastic.co/guide/en/apm/agent/java/master/config-core.html#config-transaction-sample-rate

 

 

2. Collection of Stack Traces

APM은 5ms 이상걸린 쿼리들을 수집한다. 

 

APM의 스택추적 프로세스가 응답시간을 지연시키지는 않지만, 디스크나 네트워크 비용을 증가시킬 수는 있다.

 

span_frames_min_duration 설정을 조정하면 스택 수집 주기 및 스택 수집 여부를 조정할 수 있다. 

 

https://www.elastic.co/guide/en/apm/agent/java/current/config-stacktrace.html#config-span-frames-min-duration

  

 

3. Recording of Headers and Cookies

APM agent는 기본적으로 쿠키와 헤더정보를 수집한다. capture_headers 설정값을 False으로 변경하면 대역폭 및 디스크 사용량을 줄일 수 있다.

 

https://www.elastic.co/guide/en/apm/agent/java/master/config-core.html#config-capture-headers

 

 

번외 - Elasticsearch APM Cloud를 사용하는 Django에서 환경설정 추가하기 

# https://www.elastic.co/guide/en/apm/agent/python/current/configuration.html
# 위의 도큐먼트에 있는 환경설정값을 Django settings에 설정한 ELASTIC_APM 상수값에 반영해주면 된다.
ELASTIC_APM = {
    'SERVICE_NAME': 'my-app',
    'SECRET_TOKEN': 'changeme',
    'TRANSACTION_SAMPLE_RATE': 0.5
}

 

 

참고

https://www.elastic.co/kr/blog/performance-tuning-of-the-elastic-apm-java-agent

https://www.elastic.co/guide/en/apm/agent/python/current/configuration.html