최근에 회사에서 Elastic APM을 도입했다 ! 호호 🙉
쌩으로 도입한 후, 1주일 지켜본 결과. 몇가지 튜닝이 필요한듯하여 관련 자료를 찾아보았다!
( 튜닝을 안하니 APM Queue가 가득 찼다는 오류가 난다 🙈 )
1. Sample Rate
APM 에이전트에서 기본적으로 샘플링된 트랜잭션을 수집하긴 하지만, 수집 비율을 조정할 수 있다.
transaction_sample_rate 설정을 조정하면 스토리지 비용과 APM 운영으로 인한 부하를 줄일 수 있다.
100% 샘플링을 하더라도 Agent가 API 응답시간에는 영향을 미치지 않는다.
그리고 샘플링되지 않은 트랜잭션이더라도 응답시간 같은 기본 정보들은 수집된다.
2. Collection of Stack Traces
APM은 5ms 이상걸린 쿼리들을 수집한다.
APM의 스택추적 프로세스가 응답시간을 지연시키지는 않지만, 디스크나 네트워크 비용을 증가시킬 수는 있다.
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
'소프트웨어-이야기 > 인프라' 카테고리의 다른 글
ngrok - 외부에서 로컬 컴퓨터에 접속할 수 있게 만들기 (1) | 2020.03.15 |
---|---|
[Varnish] Vary User-Agent HTTP Header가 캐시 퍼포먼스에 미치는 영향 (0) | 2020.03.08 |
AWS CodeDeploy와 AWS CodeDeploy Agent (2) - B. CodeDeployAgent (0) | 2018.11.17 |
AWS CodeDeploy와 AWS CodeDeploy Agent (1) - 1. CodeDeploy (0) | 2018.11.17 |
(도커) docker component 쓰기 (0) | 2018.03.20 |