자동 감지 및 모니터링

자동 탐색 및 모니터링 기능은 효율적이고 유연한 시스템 관리를 제공하여, 대규모 애플리케이션의 물리적, 논리적, 비즈니스 구성 요소 전반에 걸쳐 포괄적인 관리 범위를 확보하는 데 기여합니다. 이 방식은 이상 징후를 실시간으로 감지하여 장애로 인한 영향을 최소화합니다. 이 첨단 모니터링 솔루션은 현대적이고 역동적인 애플리케이션의 안정성과 성능을 유지하는 데 필수적인, 철저하고 유연한 시스템 관리 방식을 제공합니다.

기존의 애플리케이션 성능 관리( Application Performance Management, APM) 도구는 데이터를 수동으로 분석하고 상호 연관성을 파악하여 운영 환경의 병목 현상과 오류를 탐지하는 데 도움을 줍니다. 그러나 기존의 APM 도구는 대규모 환경의 복잡성과 현대 시스템의 동적 특성으로 인해 발생하는 문제를 해결하는 데 어려움을 겪고 있습니다. 문제를 파악하려면 상호 연관된 구성 요소와 지표 간의 관계를 분석해야 합니다.

머신러닝 기반의 접근 방식은 시스템 관리에 상당한 개선을 가져옵니다. 최적의 결과를 얻기 위해서는, 이 접근 방식의 기반이 견고하고 포괄적인 핵심 모델 위에 구축되어야 합니다. 마이크로서비스 애플리케이션은 끊임없이 진화하는 수많은 구성 요소로 이루어져 있습니다. 따라서 모든 블록과 그 상호 의존 관계를 파악해야 하며, 이를 위해서는 정교한 탐색 방식이 필요합니다.

자동 탐지 및 모니터링의 구성 요소

자동 탐색 및 모니터링은 물리적 구성 요소, 논리적 구성 요소 및 비즈니스 구성 요소를 포괄합니다.

실제 구성요소

다음 표는 물리적 구성 요소와 그 설명을 요약한 것입니다:

컴포넌트 설명
데이터센터 또는 가용성 영역 각 대륙과 지역마다 구역이 존재합니다. 이들은 서로 다른 성능 특성을 가질 수 있습니다.
호스트 또는 컴퓨터 물리적, 가상 또는 서비스 형태로 제공되는 것. 각 호스트에는 CPU, 메모리, I/O와 같은 리소스가 있으며, 이러한 리소스가 병목 현상을 일으킬 수 있습니다. 각 호스트는 하나의 구역에서 실행됩니다.
컨테이너 호스트 환경에서 실행되며, 컨테이너를 관리하기 위해 ` Kubernetes `와 같은 스케줄러가 필요합니다.
프로세스 컨테이너 내에서 또는 호스트에서 실행됩니다. 이러한 프로세스에는 Java 이나 PHP 과 같은 런타임 환경과, Tomcat, Oracle, Elasticsearch 과 같은 미들웨어가 포함될 수 있습니다.
클러스터 많은 서비스가 그룹이나 클러스터로 작동하여 외부에서는 하나의 통합된 분산 프로세스로 보이게 할 수 있습니다. 클러스터 내의 인스턴스 수는 변경될 수 있으며 클러스터 성능에 영향을 줄 수 있습니다.

논리 구성요소

다음 표는 논리적 구성 요소와 그 설명을 요약한 것입니다:

컴포넌트 설명
서비스 앞서 언급한 물리적 구성 요소 위에서 실행되는, 여러 인스턴스와 서로 다른 버전을 가질 수 있는 논리적 작업 단위.
엔드포인트 시스템의 다른 부분에 특정 명령을 노출하기 위한 서비스의 공개 인터페이스( API ).
응용 분야 또는 응용 프로그램 태그를 사용하여 선언된, 공통된 컨텍스트로 정의된 일련의 서비스 및 엔드포인트에 대한 관점.
추적 서비스 간 동기 및 비동기 통신의 순서. 서비스는 서로 통신하고 사용자 요청에 대한 결과를 전달합니다. 데이터 플로우에서 데이터를 변환하는 프로세스에는 많은 서비스가 포함될 수 있습니다.
호출 두 서비스 간의 요청. 추적은 하나 이상의 호출로 구성됩니다.

비즈니스 컴포넌트

다음 표는 비즈니스 구성 요소와 그 설명을 요약한 것입니다:

컴포넌트 설명
비즈니스 서비스 독보적인 비즈니스 가치와 서비스를 제공하는 서비스 및 애플리케이션의 조합.
비즈니스 프로세스 프로세스를 구성하는 기술적 요소들의 조합. 예를 들어, 전자상거래에서의 “구매” 이력을 나타낸 다음, ERP 시스템 내의 주문 이력이 이어지고, 이어서 고객에게 배송되는 과정에서 FedEx's 의 물류 이력이 표시될 수 있습니다.

여러 지역과 대륙에 걸쳐 수백 대의 호스트에서 다양한 버전의 수천 개 서비스 인스턴스가 실행되어 사용자에게 애플리케이션을 제공하는 것은 흔한 일입니다. 이는 애플리케이션의 서비스 품질이 보장되고 비즈니스 가치가 전달되도록 완벽하게 함께 작동해야 하는 컴포넌트 간의 종속성 네트워크를 작성합니다. 일반적인 모니터링 도구는 단일 구성요소가 임계값을 초과할 때 경보를 보낼 수 있습니다. 그러나 이러한 컴포넌트 중 하나 또는 다수가 실패한다고 해서 애플리케이션의 품질이 확실히 영향을 받는 것은 아닙니다. 따라서 현대적인 모니터링 도구는 서비스 품질을 효과적으로 모니터링하고 분석하며 예측하기 위해 구성 요소 전체 네트워크와 그 상호 의존성을 파악해야 합니다.

변경 사항 파악 및 목록화

현대 애플리케이션의 서비스 수와 상호 의존성은 서비스 지향 아키텍처(SOA) 기반 애플리케이션보다 더 많아, 모니터링 도구에 있어 난제가 되고 있습니다. 지속적 배포 방법론, 자동화 도구, 컨테이너 플랫폼으로 인해 애플리케이션의 변경 빈도가 높아지면서 이 문제는 더욱 악화되고 있다. 이러한 급변하는 환경에서 수동으로 변경 사항을 파악하고 새로 배포된 블록에 대해 모니터링 도구를 계속해서 구성하는 것은 비현실적입니다.

이러한 과제를 해결하기 위해, 현대적인 모니터링 솔루션은 모든 블록을 분석하고 파악하기 전에 이를 자동으로, 그리고 즉각적으로 탐지해야 합니다. 이러한 기능을 통해 이후의 변경 사항이 연동되도록 하여, 사고 조사를 위해 언제든지 특정 시점의 모드를 재구성할 수 있습니다.

변경사항은 다음 이미지에 표시된 대로 언제든지 빌딩 블록에서 발생할 수 있습니다.

그림 1. 자동 발견
변경사항

Instana 의 포괄적인 발견 절차

Instana Dynamic APM은 센서를 사용하는 Instana 에이전트 아키텍처를 기반으로 합니다. 센서는 특정 대상을 모니터링하도록 설계된 소형 자동화 프로그램입니다. 호스트당 하나씩 배포되는 단일 에이전트(호스트당 1개)가 이러한 센서를 관리하며, 이 에이전트는 호스트에서 독립 실행형 프로세스로 또는 컨테이너 스케줄러를 통해 컨테이너 형태로 배포됩니다.

에이전트는 AWS 가용 영역, Docker 호스트에서 실행되는 컨테이너 또는 Kubernetes, HAProxy, Nginx, JVM, Spring Boot, Postgres, Cassandra, Elasticsearch 와 같은 프로세스, 심지어 Cassandra 클러스터와 같은 이러한 프로세스들의 클러스터에 이르기까지 다양한 물리적 구성 요소를 자동으로 감지하고 모니터링합니다. 탐지된 각 구성 요소에 대해 에이전트는 해당 구성 데이터를 수집하고 변경 사항을 모니터링하기 시작합니다. 또한 매초마다 각 구성 요소에 대한 핵심 지표를 전송합니다. 에이전트는 JMX 또는 Dropwizard 와 같이 서비스에서 제공하는 메트릭을 자동으로 감지하여 사용합니다.

그림 2. 에이전트 자동 검색
에이전트

그 후, 에이전트는 서비스 코드에 추적 함수를 삽입합니다. 예를 들어, HTTP 호출, 데이터베이스 호출 및 Elasticsearch에 대한 조회를 가로챕니다. 에이전트는 스택 추적이나 페이로드와 같은 각 호출의 컨텍스트를 캡처합니다.

수집된 데이터를 처리하고 분석하여 트레이스로 변환하며, 종속 관계와 서비스를 식별하고, 이상 징후와 문제를 탐지하는 작업은 서버에서 수행됩니다. 따라서 이 에이전트는 크기가 작아 수천 대의 호스트에 배포할 수 있습니다.

Instana 차세대 모니터링 솔루션을 위해 자동적이고 즉각적이며 지속적인 탐지 기능을 제공하도록 설계되었습니다.

데이터 수집

Instana 수백 가지 이상의 기술을 지원하는, 단일 에이전트에 여러 센서를 결합한 모니터링 솔루션입니다. 센서는 자동으로 탐지 및 모니터링되며, 데이터는 에이전트로 전송됩니다. 이 에이전트는 Instana 서비스 품질 엔진과의 모든 통신을 관리합니다. 탐지 후, 센서는 해당 구성 요소의 상태에 대한 상세한 데이터를 수집하며, 이 데이터는 특정 기술에 맞춰 수집됩니다. 센서는 에이전트에 의해 업데이트, 로드 및 로드 해제됩니다. 선택 사항인 명령줄 인터페이스를 통해 에이전트 상태, 개별 센서 및 에이전트 로그에 접근할 수 있습니다. 자세한 내용은 ‘지원되는 기술 구성 및 모니터링’을 참조하십시오.

센서는 다음 데이터를 수집합니다.

  • 구성: 변경사항을 추적하기 위한 현재 설정 및 상태를 카탈로그합니다.
  • 이벤트: 초기 감지, 상태 변경 (온라인 및 오프라인), 엔티티의 실패 상태 규칙을 기반으로 문제 또는 인시던트를 트리거하는 기본 제공 이벤트 및 엔티티의 개별 지표의 임계값을 기반으로 문제 또는 인시던트를 트리거하는 사용자 정의 이벤트입니다.
  • 추적: 프로그래밍 언어 플랫폼을 기반으로 추적을 캡처합니다.
  • 지표: 성능을 표시하는 기술의 잠정적 속성입니다.

Instana 의 센서는 재귀적 탐색 기능을 수행합니다. 예를 들어, ‘ Java Machine’ 센서는 스택을 거슬러 올라가 Tomcat이나 SpringBoot 과 같은 프레임워크를 탐지합니다. 탐지 결과를 바탕으로, 이 센서는 요원이 적절한 추가 센서를 장착할 수 있도록 지원합니다. 또한, Instana 의 데이터 처리 및 분석 기능을 통해 종속 관계와 서비스를 파악하고, 서버에서 발생하는 이상 징후와 문제를 탐지합니다. 따라서 이 에이전트는 가볍기 때문에 수천 대의 호스트에 배포할 수 있습니다.

그림 3. 데이터 수집
파이프라인

Instana 의 백엔드는 스트리밍 기술을 사용하며, 에이전트에서 전송되는 초당 수백만 건의 이벤트를 처리할 수 있습니다. 이 스트리밍 엔진은 효과적으로 실시간이며 상황을 처리하고 사용자에게 표시하는 데 3초밖에 걸리지 않습니다.