-
APM AgentElasticsearch 2025. 5. 20. 20:52
Elasticsearch에 Http Request를 보낼 때 계측하여 모니터링 할 수 있도록 APM을 테스트 및 개발중이다.
복기 겸,, 개발 가능성 유무를 확고히 하기 위해 기록..합니다.
테스트 환경 : 각 노드에 Elastic Agent가 설치
Elastic APM
Fleet 이란?
Agent Server를 관리하며 정책을 부여
Elastic APM 이란?
incoming requests, database queries, caches, external HTTP request, ... 등등 수집
디버깅 시 발생하는 로그 수집
Elastic APM은 APM Agent 역할을 함과 동시에 APM Server 역할도 가능하다.
Kibana에서 확인할 수 있는 로그 저장소 - data_stream
APM은 Metrics를 ILM(Index Lifecycle Management)을 활용하여 데이터를 관리한다.
- Application traces : `traces-apm.internal-<namespace>` → traces-apm-default
- APM internal metrics: `metrics-apm.internal-<namespace>` → metrics-apm.internal-default
- APM transaction metrics: `metrics-apm.transaction.<metricset.interval>-<namespace>`
- APM service destination metrics: `metrics-apm.service_destination.<metricset.interval>-<namespace>`
- APM service transaction metrics: `metrics-apm.service_transaction.<metricset.interval>-<namespace>`
- APM service summary metrics: `metrics-apm.service_summary.<metricset.interval>-<namespace>`
- Application metrics: `metrics-apm.app.<service.name>-<namespace>`
출처 : https://www.elastic.co/guide/en/observability/current/apm-data-streams.htmlData streams | Elastic Docs
APM data follows the <type>-<dataset>-<namespace> naming scheme. The type and dataset are predefined by the Elasticsearch apm-data plugin, but the namespace...
www.elastic.co
Elasticsearch에 Http Request를 날리는 어플리케이션에서 헤더에 특정 id를 포함하여 전송하면 해당 task를 키바나의 트랜잭션(APM -> Servcie -> Transactions)에서 감지 가능할까?
-> NO : Elasticsearch는 Tracer 인스턴스를 상속받아야 인식가능한 Task로 변환된다.
elasticsearch/TRACING.md at main · elastic/elasticsearch
Free and Open Source, Distributed, RESTful Search Engine - elastic/elasticsearch
github.com
어플리케이션 모니터링 - APM Service 생성
환경 : IDE (Intellij)
언어 : Java
설정
- Run/Deug Configurations (IDE)
- Modify options를 통해 환경변수 설정 추가
-javaagent:C:\Users\<사용자>\IdeaProjects\<프로젝트>\src\elastic-apm-agent-1.53.0.jar
(다운받은 agent 주소)
-Delastic.apm.service_name=seonmin (서비스 이름)
-Delastic.apm.server_url=http://192.168.125.69:8200 (apm 서버 주소)
-Delastic.apm.environment=dev
-Delastic.apm.application_packages=controller (source project가 속해 있는 상위 폴더)
주요 코드https://www.elastic.co/guide/en/apm/agent/java/current/public-api.html
https://www.elastic.co/guide/en/apm/agent/java/current/method-api.html
pom.xml<dependency> <groupId>co.elastic.apm</groupId> <artifactId>apm-agent-api</artifactId> <version>1.52.0</version> </dependency>
.javaSpan span = ElasticApm.currentSpan(); Transaction transaction = ElasticApm.startTransaction(); try { transaction.setName("서비스 이름"); transaction.setType(Transaction.TYPE_REQUEST); <code...> } catch(Exception e) { transaction.captureException(e); throw e; } finally { transaction.end(); }
서비스 이름을 임의로 지정하여 테스트
Spring 프레임워크의 경우 더욱 간단하게 어플리케이션 로그를 남길 수 있다.
https://www.elastic.co/guide/en/apm/agent/java/current/setup-attach-api.html
지원되는 프레임워크
https://www.elastic.co/guide/en/apm/agent/java/current/supported-technologies-details.html#supported-java-versions'Elasticsearch' 카테고리의 다른 글
elasticsearch 한글 형태소 분석사전 (0) 2025.04.01 profile을 통해 실제 쿼리가 어떻게 구성되는지 확인해보기 (0) 2025.03.27 인덱스 샤드 설정에 대해 (0) 2025.03.22 Curator를 활용한 Snapshot 테스트 (4) 2025.01.08 docker-compose.yml 활용하여 Elasticsearch Cluster 만들기 (4) 2024.10.25