Kubernetes 모니터링
이 가이드를 따르면 Kubernetes 시스템에서 로그와 메트릭을 수집하여 시각화 및 분석을 위해 ClickStack으로 전송할 수 있습니다. 데모 데이터에는 필요에 따라 공식 OpenTelemetry 데모의 ClickStack 포크를 사용할 수 있습니다.
사전 준비 사항
이 가이드를 따라 진행하려면 다음이 필요합니다.
- Kubernetes 클러스터(v1.20+ 권장) 1개: 하나의 노드에 ClickHouse용으로 최소 32 GiB RAM과 100 GB 디스크 공간이 있어야 합니다.
- helm v3+
- 클러스터와 통신하도록 설정된
kubectl
배포 옵션
이 가이드는 다음 두 가지 배포 옵션 중 하나를 사용하여 진행할 수 있습니다.
-
오픈 소스 ClickStack: 다음 구성 요소를 포함하여 ClickStack 전체를 Kubernetes 클러스터 내에 배포합니다.
- ClickHouse
- HyperDX
- MongoDB(대시보드 상태 및 구성을 저장하는 용도)
-
Managed ClickStack: ClickHouse와 ClickStack UI(HyperDX)를 ClickHouse Cloud에서 관리합니다. 이를 통해 클러스터 내에서 ClickHouse나 HyperDX를 직접 운영할 필요가 없습니다.
애플리케이션 트래픽을 시뮬레이션하려는 경우, 선택적으로 OpenTelemetry Demo Application의 ClickStack 포크를 배포할 수 있습니다. 이 애플리케이션은 로그, 메트릭, 트레이스를 포함한 텔레메트리 데이터를 생성합니다. 이미 클러스터에서 워크로드를 실행 중인 경우에는 이 단계를 건너뛰고 기존 파드, 노드 및 컨테이너를 모니터링하면 됩니다.
OpenTelemetry 데모 배포하기 (선택 사항)
이 단계는 선택 사항이며 모니터링할 기존 파드가 없는 경우를 위한 것입니다. Kubernetes 환경에 배포된 기존 서비스가 있는 경우 건너뛸 수 있지만, 이 데모에는 트레이스 및 세션 재생 데이터를 생성하는 계측된 마이크로서비스가 포함되어 있어 사용자가 ClickStack의 모든 기능을 탐색할 수 있습니다.
다음은 관측성 테스트 및 계측 시연을 위해 맞춤 구성된 OpenTelemetry Demo Application 스택의 ClickStack 포크를 Kubernetes 클러스터 내에 배포합니다. 백엔드 마이크로서비스, 부하 생성기, 텔레메트리 파이프라인, 지원 인프라(예: Kafka, Redis) 및 ClickStack과의 SDK 통합이 포함됩니다.
모든 서비스는 otel-demo 네임스페이스에 배포됩니다. 각 배포에는 다음이 포함됩니다:
- 트레이스, 메트릭, 로그를 위한 OTel 및 ClickStack SDKS를 사용한 자동 계측.
- 모든 서비스는 계측 데이터를
my-hyperdx-hdx-oss-v2-otel-collector라는 OpenTelemetry collector(현재는 배포되지 않음)로 전송합니다 OTEL_RESOURCE_ATTRIBUTES환경 변수를 통해 로그, 메트릭 및 트레이스를 연관시키기 위한 리소스 태그 전달.
데모를 배포한 후, 모든 파드가 성공적으로 생성되었고 Running 상태인지 확인하세요:
데모 아키텍처
이 데모는 서로 다른 프로그래밍 언어로 작성된 마이크로서비스로 구성되며, 이들 간에는 gRPC와 HTTP를 통해 통신합니다. 또한 Locust를 사용하여 사용자 트래픽을 시뮬레이션하는 로드 생성기가 포함됩니다. 이 데모의 원본 소스 코드는 ClickStack instrumentation을 사용하도록 수정되었습니다.

출처: https://opentelemetry.io/docs/demo/architecture/
데모에 대한 추가 세부 정보는 다음에서 확인할 수 있습니다.
ClickStack 배포하기
Helm 차트를 설치한 후 클러스터에 ClickStack을 배포할 수 있습니다. ClickHouse와 HyperDX를 포함한 모든 구성 요소를 Kubernetes 환경 내에서 실행하거나, 수집기만 배포하고 ClickHouse 및 HyperDX UI는 Managed ClickStack을 사용할 수 있습니다.
ClickStack 오픈 소스(자가 관리형)
다음 명령은 ClickStack을 otel-demo 네임스페이스에 설치합니다. Helm 차트는 다음 구성 요소를 배포합니다:
- ClickHouse 인스턴스
- HyperDX
- ClickStack 배포판의 OTel collector
- HyperDX 애플리케이션 상태 저장을 위한 MongoDB
Kubernetes 클러스터 구성에 따라 storageClassName 값을 조정해야 할 수 있습니다.
OTel 데모를 배포하지 않는 사용자는 적절한 네임스페이스를 선택하도록 이 값을 수정할 수 있습니다.
이 차트는 ClickHouse와 OTel collector도 함께 설치합니다. 운영 환경에서는 ClickHouse 및 OTel collector operator를 사용하거나 Managed ClickStack을 사용할 것을 권장합니다.
ClickHouse와 OTel collector를 비활성화하려면 다음 값을 설정하십시오:
Managed ClickStack
Managed ClickStack를 사용하고자 한다면 ClickStack를 배포하면서 포함된 ClickHouse를 비활성화할 수 있습니다.
현재 차트는 항상 HyperDX와 MongoDB를 함께 배포합니다. 이 컴포넌트들은 대체 접근 경로를 제공하기는 하지만, ClickHouse Cloud 인증과는 통합되어 있지 않습니다. 이 컴포넌트들은 이 배포 모델에서는 관리자용으로 사용되며, 배포된 OTel collector를 통해 데이터를 수집하는 데 필요한 보안 수집 키에 접근할 수 있도록 제공되지만, 최종 사용자에게는 노출되지 않아야 합니다.
배포 상태를 확인하려면 다음 명령을 실행하고 모든 구성 요소가 Running 상태인지 확인하세요. Managed ClickStack을 사용하는 경우 ClickHouse는 표시되지 않습니다:
HyperDX UI에 접근하기
Managed ClickStack을 사용하는 경우에도 Kubernetes 클러스터에 배포된 로컬 HyperDX 인스턴스는 여전히 필요합니다. 로컬 인스턴스는 HyperDX와 함께 번들로 제공되는 OpAMP 서버가 관리하는 수집 키를 제공하며, 배포된 OTel collector를 통한 안전한 수집을 보장합니다. 이 기능은 현재 Managed ClickStack에서 제공되지 않습니다.
보안을 위해 서비스는 클러스터 IP를 사용하며 기본적으로 외부에 노출되지 않습니다.
HyperDX UI에 접근하려면 포트 3000을 로컬 포트 8080으로 포워드하세요.
http://localhost:8080으로 이동하여 HyperDX UI에 접근하세요.
복잡도 요구사항을 충족하는 사용자 이름과 비밀번호를 제공하여 사용자를 생성하세요.

수집 API key 검색하기
ClickStack collector에서 배포한 OTel collector로의 수집은 수집 키를 통해 보호됩니다.
Team Settings로 이동하여 API Keys 섹션에서 Ingestion API Key를 복사하십시오. 이 API key는 OpenTelemetry collector를 통한 데이터 수집을 안전하게 보장합니다.

API 키 Kubernetes Secret 생성하기
수집 API key를 포함하는 새로운 Kubernetes secret과 ClickStack Helm 차트로 배포된 OTel collector의 위치를 포함하는 config map을 생성하세요. 이후 구성 요소들은 이를 사용하여 ClickStack Helm 차트로 배포된 collector로 수집할 수 있습니다:
수집 API Key를 반영하기 위해 OpenTelemetry Demo Application 파드를 재시작하세요.
이제 데모 서비스의 트레이스 및 로그 데이터가 HyperDX로 유입됩니다.

OpenTelemetry Helm 저장소 추가하기
Kubernetes 메트릭을 수집하기 위해 표준 OTel collector를 배포하고, 위에서 생성한 수집 API key를 사용하여 ClickStack collector로 데이터를 안전하게 전송하도록 구성하세요.
이를 위해서는 OpenTelemetry Helm 저장소를 설치해야 합니다:
Kubernetes 수집기 구성 요소 배포하기
클러스터 자체와 각 노드에서 로그 및 메트릭을 수집하려면 각각 고유한 매니페스트를 가진 두 개의 개별 OpenTelemetry 수집기를 배포해야 합니다. 제공된 두 매니페스트(k8s_deployment.yaml 및 k8s_daemonset.yaml)는 함께 작동하여 Kubernetes 클러스터에서 포괄적인 텔레메트리 데이터를 수집합니다.
-
k8s_deployment.yaml은 단일 OpenTelemetry Collector 인스턴스를 배포하며, 이 인스턴스는 클러스터 전체의 이벤트와 메타데이터를 수집합니다. Kubernetes 이벤트와 클러스터 메트릭을 수집하고, 파드 레이블과 어노테이션을 활용해 텔레메트리 데이터를 보강합니다. 이 Collector는 데이터 중복을 방지하기 위해 단일 레플리카로 구성된 독립적인 배포로 실행됩니다. -
k8s_daemonset.yaml은(는) 클러스터의 모든 노드에서 실행되는 데몬셋 기반 수집기를 배포합니다. 이 수집기는kubeletstats,hostmetrics, Kubernetes Attribute Processor와 같은 구성 요소를 사용하여 노드 수준 및 파드 수준 메트릭과 컨테이너 로그를 수집합니다. 이러한 수집기는 로그에 메타데이터를 추가하고, 이를 OTLP exporter를 통해 HyperDX로 전송합니다.
이러한 매니페스트를 함께 사용하면 인프라부터 애플리케이션 수준의 텔레메트리까지 클러스터 전체에 걸친 풀스택 관측성을 구현할 수 있으며, 수집된 데이터를 ClickStack으로 전송하여 중앙 집중식 분석을 수행합니다.
먼저, 컬렉터를 Deployment로 설치하세요:
k8s_deployment.yaml
다음으로, 노드 및 파드 수준의 메트릭과 로그를 수집하기 위해 컬렉터를 데몬셋으로 배포하세요:
k8s_daemonset.yaml
k8s_daemonset.yamlHyperDX에서 Kubernetes 데이터 탐색
HyperDX UI로 이동하세요 - Kubernetes에 배포된 인스턴스를 사용하거나 Managed ClickStack을 통해 접근할 수 있습니다.
관리형 ClickStack을 사용하는 경우 ClickHouse Cloud 서비스에 로그인한 후 왼쪽 메뉴에서 「ClickStack」을 선택하면 됩니다. 자동으로 인증되므로 별도의 사용자 생성은 필요하지 않습니다. 로그, 메트릭, 트레이스용 데이터 소스가 미리 생성되어 있습니다. 로컬에 배포된 HyperDX에 접속하려면 아래 로컬 명령으로 포트 포워딩을 수행한 뒤 http://localhost:8080에서 HyperDX에 접속합니다. 프로덕션 환경에서는 Managed ClickStack을 사용하지 않는 경우 TLS를 적용한 인그레스를 사용할 것을 권장합니다. 예를 들어 다음과 같습니다:관리형 ClickStack
ClickStack 오픈 소스
Kubernetes 데이터를 탐색하려면 /kubernetes 경로의 전용 대시보드로 이동하세요(예: http://localhost:8080/kubernetes).
파드(Pods), 노드(Nodes), 네임스페이스(Namespaces) 각 탭에 데이터가 채워져야 합니다.
