본문 바로가기

공부방/Elasticsearch

Elasticsearch 모니터링 시스템 구축 일지 - 1편 (APM agent?)

1. 모니터링 시스템 구축기


이전에 Spring boot 프로젝트는 Prometheus + Grafana 조합으로 모니터링 시스템을 구축하고

ElasticSearch 모니터링 시스템은 Metricbeats + Elasticsearch + Grafana 조합으로 모니터링 시스템을 구축하였다.

 

위 설계대로 모니터링 시스템을 하면, 모든 정보를 elasticsearch에 저장하지 않아도 된다는 이점과,

서버를 카테고리 별로 나눠서 볼 수 있으며, 이미 잘 만들어진 dashboard template을 이용하여 이쁘게 모니터링 시스템을 구축할 수 있다는 장점을 어필해 보았지만 차장님과 팀장님을 설득하는데는 실패하였습니다.

 

차장님과 팀장님의 의견대로 이번에는 APM agent를 이용하여 모니터링 시스템을 구축해 보려고 합니다.

 

그러나 APM agent에 대한 이해가 없기 때문에 이번에 APM agent는 무엇이고, 어떤 버전을 설치해야 될 지 알아보도록 하겠습니다.

 

 

 

 

 

2. 참고


https://www.elastic.co/kr/downloads/apm

https://www.elastic.co/kr/downloads/past-releases#apm-server

https://www.elastic.co/guide/en/apm/guide/7.17/apm-overview.html

https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/

 

 

 

 

 

3. 오늘 알아보고자 하는 내용


1. AMP agent는 무엇인가?

2. APM agent는 어떤 버전을 설치해야 할까?

 

 

 

 

 

 

 

4. APM agent는 무엇인가?


APM agent를 이해하기 위해 공식문서를 참고하였습니다.

오역이 있을 수 있어 원문을 같이 가지고 와서 살펴보았습니다.

 

 

[ APM server docuemnt ]

 

application performance monitoring system

APM server는 애플리케이션 성능 모니터링 시스템입니다.

 

real-time

time for incoming requests, database queries, calls to caches, external HTTP requests, and more.

수신 요청, 데이터베이스 쿼리, 캐시 호출, 외부 HTTP 요청 등에 대한 응답 시간에 대한 자세한 성능 정보를 수집할 수 있습니다.

 

collects unhandled errors and exceptions

오류와 예외도 수집 가능합니다.

 

APM agent, APM Integration, Elasticsearch, Kibana

Elastic APM은 위 4가지로 구성되어 있다고 합니다.

 

보통 두가지 형태로 구성이 가능한 것 같습니다.

아래 그림을 참고하면 될 것 같습니다.

 

Apm agents on edge machines send data to a centrally hosted APM integration:

APM agent는 APM Integration으로 데이터를 보내는 형태

 

 

Or, APM agents and the APM integration live on edge machines and enroll via a centrally hosted Elastic Agent:

APM Integration을 edge로 보내는 형태로도 사용가능합니다.

 

 

 

 

[ APM agent ]

 

APM agents are open source libraries written in the same language as your service.

서비스와 동일한 언어로 사용 가능

 

You install them into your service as you would install any other library.

다른 라이브러리를 설치하는 것처럼 서비스에 설치합니다.

 

They instrument your code and collect performance data and errors at runtime.

코드를 계측하고 런타임 시 성능 데이터 및 오류를 수집합니다.

 

This data is buffered for a short period and sent on to APM Server.

이 데이터는 짧은 기간 동안 버퍼링되어 APM 서버로 전송됩니다.

 

 

[ Elastic APM Integration ]

 

결론: APM Integration은 APM agent로 부터 데이터를 수신하고 Elasticsearch 문서로 변환하는 작업을 함

Elastic APM integration은 ElasticAgent 위에서 돌아갑니다.

 

The APM integration receives performance data from your APM agents,

APM 통합은 APM 에이전트로부터 성능 데이터를 수신하고

 

 validates and processes it, and then transforms the data into Elasticsearch documents.

이를 검증 및 처리한 다음 데이터를 Elasticsearch 문서로 변환합니다.

 

 Removing this logic from APM agents help keeps them light,

APM 에이전트에서 이 로직을 제거하면 에이전트를 가볍게 유지하고

 

prevents certain security risks, and improves compatibility across the Elastic Stack.

특정 보안 위험을 방지하며 Elastic Stack에서 호환성을 개선하는 데 도움이 됩니다.

 

The Elastic integration runs on Elastic Agent

Elastic 통합은 Elastic Agent에서 실행됩니다.

 

Elastic Agent is a single, unified way to add monitoring for logs, metrics, traces, and other types of data to each host. 

Elastic Agent는 각 호스트에 로그, 지표, 추적 및 기타 유형의 데이터에 대를 하나로 통합하여 모니터링을 하는 방법입니다.

 

A single agent makes it easier and faster to deploy monitoring across your infrastructure. The agent’s single, unified policy makes it easier to add integrations for new data sources.

단일 에이전트를 사용하면 인프라 전체에 모니터링을 더 쉽고 빠르게 배포할 수 있습니다. 에이전트의 단일 통합 정책을 통해 새로운 데이터 소스에 대한 통합을 더 쉽게 추가할 수 있습니다.

 

 

[ Elasticsearch ]

 

Elasticsearch는 APM 성능 지표를 저장하고 집계를 활용하는 데 사용됩니다.

 

 

 

[ Kibana ]

 

시각화 플랫폼

 

Since application performance monitoring is all about visualizing data and detecting bottlenecks, it’s crucial you understand how to use the APM app in Kibana.

애플리케이션 성능 모니터링은 데이터 시각화 및 병목 현상 감지에 관한 것이므로 Kibana에서 APM 앱을 사용하는 방법을 이해하는 것이 중요합니다. 

 

 

 

 

 

5. Elasticseach 버전 결정


호환되는 버전을 아래에서 확인할 수 있습니다.

elasticsearch 버전을 결정하기 위해 현재 프로젝트의 버전을 확인해 봅니다.

 

 

 

spring data elasticsearch 버전은 4.4.2 입니다.

 

 

spring boot 버전은 2.7.2 입니다.

 

 

spring 버전은 5.3.22 입니다.

 

 

7.17.3 버전을 사용하면 될 것 같습니다.

APM agent manual도 7.17 버전 부터 상세히 나와있습니다.