일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- blue/green
- keda
- argocd
- Pulumi
- Kopf
- gitops
- nginx ingress
- Argo
- seldon core
- opensearch
- mlops
- Kubernetes 인증
- CI/CD
- Kubernetes
- eBPF
- kubernetes operator
- Continuous Deployment
- tekton
- serving
- opentelemetry
- CANARY
- Kubeflow
- 카오스 엔지니어링
- Model Serving
- knative
- Litmus
- 오퍼레이터
- MLflow
- operator
- xdp
- Today
- Total
Kubernetes 이야기
OpenTelemetry 본문
OpenTelemetry란
애플리케이션이 정상적으로 운영되고 있는지, 의도한 대로 작동하고 있는지 여부를 확인하는데 필요한 정보를 원격 분석 데이터라고 한다. Java Web Application Server에서 ( Tomcat 또는 WebLogic 등 ) 우리가 만든 Web Application ( 예를 들어 Spring Framework app등 ) 을 올려 운영을 한다고 가정해보자. 해당 애플리케이션이 정상적으로 되고 있는지를 확인하기 위해서는 실제 브라우저에서 확인해 보거나 ( 모든 페이지를 확인하는 것은 거의 불가능하다. ) Web access log ( 2xx, 4xx, 5xx code ) 분석, WAS Log 등을 분석하여 오류가 있는지 확인하게 된다.
특히, 에러가 없고 모두 200 ok 라고 해도, 응답 시간 또한 중요하다. 응답 시간이 길어지게 되면 어느 구간에서 오래 걸리는지 확인해야 하는데 로그로는 분석이 어렵게 된다.
그래서, 원격 분석 데이터를 수집하기 위해 보통 에이전트를 삽입하여 데이터를 수집하게 된다. ( 예를 들어 APM agent)하지만, agent는 agent를 만든 제공업체가 아닌 다른 제공업체를 이용할 수 없게 된다. OpenTelemetry는 원격 분석 데이터를 위한 단일 개방형 표준과 클라우드 기반 애플리케이션에서 데이터가 모니터링되고 분석할 수 있도록 데이터를 수집하고 내보내기 위한 기술이다.
OpenTelemetry는 추적, 메트릭 및 로그와 같은 원격 측정 데이터의 생성 및 관리를 위해 설계된 API, SDK, 도구 및 통합 세트이다 . 이 프로젝트는 원격 분석 데이터를 선택한 백엔드로 보내도록 구성할 수 있는 공급업체에 구애받지 않는 구현을 제공한다. Jaeger 및 Prometheus를 비롯한 다양한 인기 오픈 소스 프로젝트를 지원한다.
아키텍쳐
확장성 포인트
1) Collector
내보내기를 통해 다양한 백엔드와 통신할 수 있다. 수집기에는 두 가지 배포 모델이 있다.
- 애플리케이션과 동일한 호스트에 있는 에이전트 ( 사이트카, DaemonSet 등 )
- 애플리케이션과 완전히 분리된 독립 실행형 프로세스
2) Processing & Exporter
전송하려는 백엔드를 구성할 수 있다. Exporter는 백엔드 구성과 계측을 분리하는 기능을 수행한다.
3) SDK
샘플링, 필터링, 강화와 같은 다양한 확장을 허용한다.
4) API
언어별 ( Java, Python, .Net 등 ) 구성요소가 있다.
제공 기능
- 자동 및 수동 계측을 모두 지원하는 언어당 단일 공급업체에 구애받지 않는 계측 라이브러리
- 에이전트 또는 게이트웨이를 포함하여 다양한 방식으로 배포할 수 있는 단일 수집기 바이너리
- 원격 측정 데이터를 생성, 방출, 수집, 처리 및 내보내기 위한 종단 간 구현
- 구성을 통해 병렬로 여러 대상에 데이터를 보낼 수 있는 기능으로 데이터를 완벽하게 제어
- 공급업체에 구애받지 않는 데이터 수집을 보장하는 개방형 표준 의미론적 규칙
- 표준이 발전함에 따라 마이그레이션을 지원하기 위해 병렬로 여러 컨텍스트 전파 형식을 지원하는 기능
- 다양한 오픈 소스 및 상용 프로토콜, 형식 및 컨텍스트 전파 메커니즘을 지원하고 OpenTracing 및 OpenCensus 프로젝트에 shim을 제공하므로 OpenTelemetry를 쉽게 채택할 수 있다.
사양
- API: 추적, 메트릭 및 로깅 데이터를 생성하고 상호 연관시키기 위한 데이터 유형 및 작업을 정의
- SDK: API의 언어별 구현에 대한 요구 사항을 정의
- 데이터: 원격 분석 백엔드가 지원할 수 있는 OTLP(OpenTelemetry Protocol) 및 공급업체에 구애받지 않는 의미 규칙을 정의
측정항목
- counter : 시간이 지남에 따라 합산되는 값 – 이것을 자동차의 주행 거리계와 같이 생각할 수 있습니다. 그것은 단지 올라갑니다.
- measure : 시간이 지남에 따라 집계된 값입니다. 이것은 자동차의 주행 거리계와 더 유사하며 일부 정의된 범위에 대한 값을 나타냅니다.
- observer : 차량의 연료 게이지와 같이 특정 시점의 현재 값 집합을 캡처합니다.
세 가지 측정 도구 외에도 집계 개념 을 이해하는 것이 중요하다. 집계는 많은 수의 측정이 특정 기간 동안 발생한 메트릭 이벤트에 대한 정확한 통계 또는 추정된 통계로 결합되는 기술이다. OpenTelemetry API 자체에서는 이러한 집계를 지정할 수 없지만 몇 가지 기본 집계를 제공한다. 일반적으로 OpenTelemetry SDK는 시각화 도우미 및 원격 분석 백엔드에서 지원되는 공통 집계(예: 합계, 개수, 마지막 값 및 히스토그램)를 제공한다.
참고자료
https://medium.com/opentelemetry/opentelemetry-beyond-getting-started-5ac43cd0fe26
'Kubernetes > 모니터링' 카테고리의 다른 글
Prometheus-operator를 사용하여 Prometheus 및 Grafana 설치 (0) | 2022.05.09 |
---|---|
Prometheus에서 주요 alert rule (0) | 2022.05.06 |
OpenTelemetry auto-instrumentation (0) | 2022.04.16 |
host 서버에서 pod내부의 외부 통신 상태 (netstat) 조회 (0) | 2022.03.22 |
Robusta 를 활용한 Kubernetes 문제점 해결하기 (0) | 2022.02.27 |