All about NexClipper’s observability architecture

What is NexClipper?

NexClipper는 OSS 기반(예: Prometheus) 옵저버빌리티 솔루션으로 메트릭 대시보드 및 로그/추적 탐색 기능을 주요 기능으로 제공하여 능동적인 장애 처리 활동을 지원합니다. 간편한 설치, 운영 자동화, Exporter의 지속적인 확장으로 낮은 운영비를 보장합니다. 아래에서 NexClipper의 애플리케이션 아키텍처를 자세히 살펴보겠습니다!

NexClipper의 서버는 대시보드, 메트릭 옵스 (얼럿 허브, 인시던트 관리, 그룹/사용자/채널 관리, 이상징후 포착), 운영 관리 및 자동화, 청구 및 지불 관리와 같은 기술 구성 요소로 구성됩니다. 또한 NexClipper의 OSS인 Sudory Server가 설치되어 있습니다.

NexClipper는 Kubernetes가 설치된 노드와 모니터링 대상인 노드에 Sudory Agent를 설치하기 위한 스크립트를 제공합니다.

노드에서 스크립트를 실행한 후 사용자는 Prometheus, Grafana 등과 같은 OSS 프로젝트를 설치 및 설정하여 대시보드를 즉시 실행할 수 있습니다.

NexClipper의 또 다른 OSS 프로젝트인 ExporterHub는 추가적인 Exporter 를 설치할 수 있도록 도와 주는데 이는 모니터링 메트릭 뿐만 아니라 선별 된 Alert rule set 및 Grafana 대시보드 설치를 포함하고 있습니다.

Key application stacks

Proven OSS projects

NexClipper는 해당 분야에서 검증된 동급 최고의 OSS 프로젝트로 구성되어 있습니다

  • Prometheus는 클라우드 네이티브 산업과 Kubernetes 생태계에서 널리 사용되는 CNCF의 대표적인 오픈 소스 모니터링 솔루션이자 검증된 프로젝트입니다
  • Grafana는 오픈 소스 모니터링 시각화를 위한 사실상의 표준으로, 맞춤형 대시보드와 광범위한 메트릭 및 로그 데이터베이스 지원을 제공합니다.
  • Grafana Loki & Tempo는 대규모의 로그를 저장 및 관리하, application의 trace 정보를 로그와 함께 추적하는 검증된 도구입니다.
  • OpenTelemetry는 사용자의 클라우드 네이티브 애플리케이션 및 인프라에서 application trace 정보를 수집하는 단일 오픈 소스 표준 및 기술 세트를 제공합니다.
  • 또한 Sudory(분산 Kubernetes 실행기), ExporterHub (큐레이트 된 Exporter 허브)는 오픈소스의 단점을 보완하여 NexClipper에서 사용된 OSS의 효율성을 향상시키는 기술입니다.

오픈 소스 커뮤니티 정신에 따라 NexClipper는 vendor Lock-in 을 거부합니다. 아키텍처의 모든 OSS 구성 요소는 사용자의 시스템에 설치 및 구성되므로 어느 시점에서 NexClipper 구독을 중지하더라도 모든 것이 작동할 수 있습니다.

Long-term storage

NexClipper는 Prometheus가 수집한 장기 metrics의 저장을 위해 Cortex를 사용합니다 Cortex는 작은 규모의 resource를 사용하지만 대용량의 metric 시계열 데이터베이스를 관리할 수 있도록 microservice 아키텍처로 구성되어 있으며, Prolabs에서 수행한 PromQL 호환성 테스트를 100% 통과 했습니다. 앞으로 NexClipper는 Cortex에 대한 hosting 서비스를 제공하여 장기간의 metric 정보를 손쉽게 관리할 수 있도록 지원할 예정입니다.

Log and trace

옵저버빌리티의 핵심 목표인 장애의 근본 원인을 식별하기 위해 NexClipper는 사용자가 Promtail/Loki를 사용하여 애플리케이션 로그를 수집하고 분석할 수 있도록 도와줍니다. 또한 OpenTelemetry/Tempo를 활용하여 분산된 마이크로서비스 간의 추적 수집 및 분석을 가능하게 합니다. 로그 수집을 위해 사용자는 Promtail (로그 수집 agent) 를 설치하여 Loki에 로그를 제공할 수 있습니다. 유사한 방식으로 Application Trace 정보를 수집하기 위해 사용자는 마이크로 서비스의 OpenTelemetry Library/Agent를 통해 추적 데이터를 만들고 공급할 수 있습니다. NexClipper는 로그와 트레이스 정보를 연결하기 위한 Trace_id를 미리 설정하여, Grafana의 “탐색” 옵션을 통해 사용자가 로그와 트레이스 간의 상관관계를 쉽게 분석할 수 있도록 도와 줍니다.

MetricOps for Alert Hub, Incident Management, and Group/User/Channel Management

NexClipper의 옵저버빌리티는 장애 해결과 관련하여 실질적인 도움을 주기 위해 보다 정교하고 지능적인 Alert 정보 관리 체계를 제공합니다. 여기에는 인시던트에 대한 360도 보기가 포함되며 궁극적으로 장애 해결 솔루션에 대한 제안이 포함될 것입니다. 관련 인시던트를 해결하기 위한 현상 분석, 원인 조사,분류 및 해결 과정등 (triage-related histories)은 메트릭을 기반으로 유지되며 향후 문제를 해결할 때 적절한 정보를 제공합니다.

NexClipper는 향후 머신러닝 기반 이상징후 포착 및 해결방안 제안 기능을 추가하여 장애추정 모델 및 문제 해결 템플릿(예: 롤백 자동화 및 노드 또는 포드 재시작)을 통해 장애를 빠른 시간 내에 해결할 수 있도록 지원할 계획입니다.

ExporterHub (http://exporterhub.io)

NexClipper의 OSS ExporterHub는 지속적인 검토와 큐레이션을 기반으로 사용자와 커뮤니티를 위해 검증된 Exportr에 대한 정보를 제공합니다. Github의 10,000개 이상의 Exporter 중에서 ExporterHub는 최적의 Exporter 선택하고 주요 메트릭 소개, 설치를 위한 Helm 차트, Alert 규칙, Grafana 대시보드 JSON 및 스크린샷과 함께 지속적인 큐레이션을 통해 제공합니다. NexClipper 사용자는 유저 인터페이스를 통해 직접 해당 Exporter, Alert 구성 및 Grafana 대시보드의 설치를 자동화할 수 있습니다.

Guided Dashboard with Grafana

옵저버빌리티 아키텍처에는 Grafana의 대시보드와 연결된 NexClipper의 대시보드가 포함되어 있어 Grafana의 OSS 이점을 극대화하면서 NexClipper 대시보드를 통해 가이드 투어를 제공합니다. NexClipper의 가이디드 대시보드는 시스템 토폴로지에 대한 조감도와 상태 정보를 제공하여 사용자가 한 눈에 모든 상황을 볼 수 있도록 합니다. 또한 클러스터 아래의 노드 및 마이크로 서비스의 계층적 목록과 상태가 표시됩니다. 그런 다음 Grafana 대시보드를 여는 링크를 사용하여 자세한 모니터링을 수행할 수 있습니다.

Distributed cloud resource management with Klevr and ProvBee

Sudory는 원격으로 Kubernetes API, Helm, http 명령을 실행할 수 있도록 도와 주는 k8s 명령 실행기입니다. 이 기능은 클라우드 네이티브 환경에서 분산된 Kubernetes 자원을 저비용으로 오류 없이 관리하는 데 필수적입니다. Prometheus, Alertmanager 등의 운영에 필수적인 서비스 템플릿을 통해 Observability 관리를 손쉽게 할 수 있도록 도와 줍니다. 또한 동일한 서비스 템플릿을 여러 Kubernetes cluster에게 적용할 수 있게 지원하여 대규모 Kubernetes cluster를 효율적으로 관리할 수 있도록 지원합니다.