본문 바로가기

Observability

(29)
[Observability]기반기술 이해하기 복원성 복원성 구현의 두 가지 접근 방법 복원성이란 시스템이 장애를 겪었을 때, 원래 상태로 복귀할 수 있는 능력을 의미합니다. 이를 구현하는 방법은 크게 애플리케이션 관점과 인프라 관점으로 나눌 수 있습니다. 1. 애플리케이션 관점에서의 복원성 구현 애플리케이션 내부에서 예외 처리, 재시도, 타임아웃 등을 구현하여 복원력을 강화하는 방법입니다. 에러 분류: 비즈니스 로직에서 발생할 수 있는 에러와 시스템 에러를 구분하여, 각 에러 유형에 맞는 적절한 처리 방법을 적용합니다. 재시도 정책: 일정 간격을 두고 오류 발생 시 재시도를 진행합니다. 이는 일시적인 문제로 인한 요청 실패에 효과적으로 대응할 수 있게 합니다. 2. 인프라 관점에서의 복원성 구현 서비스 메시와 메시징 시스템을 활용하여 인프라 수준에..
[Promtail]Install promtail with helm chart Fetch promtail helm chart ➜ helm repo add grafana ➜ helm repo update ➜ helm fetch grafana/promtail ➜ tar zxvf promtail-6.15.5.tgz ➜ helm upgrade --install promtail . -f ./values.yaml --namespace loki --create-namespace Deploy helm chart Edit values.yaml daemonset: enabled: true # DaemonSet을 사용하여 Promtail을 배포할지 여부를 결정합니다. Kubernetes 클러스터의 모든 노드에 Promtail을 배포하려면 true로 설정합니다. serviceAccount: create..
[Database]Buffer Cache Hit Ratio 감소 "Buffer Cache Hit Ratio"는 데이터베이스에서 캐시된 데이터를 얼마나 효율적으로 활용하는지를 나타내는 중요한 지표입니다. 이 비율이 감소하는 것은 여러 원인에 의해 발생할 수 있으며, 각 원인에 따라 적절한 해결 방법을 적용해야 합니다. 다음은 Buffer Cache Hit Ratio 감소의 일반적인 원인과 해결책입니다. 캐시 크기 부족: 데이터베이스 시스템이 캐시에 저장할 데이터의 양보다 더 많은 데이터를 요청할 때 발생합니다. 이 경우 일부 데이터는 디스크에서 직접 로드해야 하므로 캐시 히트 비율이 낮아집니다. 해결 방법: 이 문제는 캐시 크기를 늘리거나 효율적으로 관리하여 해결할 수 있습니다. 인덱스 부재: 적절한 인덱스가 없거나 올바르게 작성되지 않은 경우 데이터를 검색할 때 더 ..
[Mimir]Grafana Mimir Architecture Architecture Grafana Mimir는 개별적으로 또는 병렬로 실행할 수 있는 수평 확장 가능한 여러 개의 마이크로서비스로 구성됩니다. 그리고 이러한 마이크로서비스를 컴포넌트라고 합니다. Grafana Mimir 스토리지 format은 Prometheus TSDB 스토리지를 기반으로 합니다. 그리고 스토리지 format은 각 테넌트의 시계열을 자체 TSDB에 저장하여 온디스크 블록에 지속시킵니다. 기본적으로 각 블록의 범위는 2시간이며, 각 온디스크 블록 디렉터리에는 인덱스 파일, 메타데이터 파일, 시계열 청크가 포함되어 있습니다. TSDB 블록 파일에는 여러 시리즈에 대한 샘플이 포함되어 있습니다. 블록 내부의 시리즈는 블록별 인덱스로 색인되며, 이 인덱스는 메트릭 이름과 레이블을 모두 블록..
[Loki]Install Grafana loki-distributed with helm chart Service Account 설정 AWS EKS에서 S3를 사용할 수 있도록 Kubernetes의 Service Account 생성하고 AWS IAM Role을 설정하여 Kubernetes Service Account + AWS IAM Policy + Trust Relationship를 연결합니다. 아래 설명에 따라 Role을 생성한 뒤 helm chart의 `serviceAccount.annotations` 에 내용을 작성하여 사용할 수 있습니다. IAM Policy 생성 cat >Loki-S3-policy.json trust-relationship.json
[Loki]Grafana Loki Architecture Architecture Architecture에서는 아래의 핵심 개념에 대하여 자세히 설명합니다. 핵심 개념 Read Path와 Write Path: Loki는 로그 데이터 처리를 위한 읽기 경로(Read Path)와 쓰기 경로(Write Path)를 구분합니다. 이러한 분리는 데이터 처리의 효율성을 극대화하며, 각 경로는 특정 작업에 최적화된 컴포넌트로 구성됩니다. Consistent Hash Rings: 클러스터 내에서 데이터를 균등하게 분배하고 고가용성을 보장하는 메커니즘입니다. 이는 클러스터의 스케일링을 용이하게 하며, 데이터 샤딩과 복제를 통한 안정성을 제공합니다. Multi-tenancy: Loki는 다중 테넌시를 지원하여, 하나의 Loki 인스턴스를 여러 사용자나 팀이 공유할 수 있게 합니다..
[Loki]What is Grafana Loki? Concept Grafana Loki는 로그 집계 도구로, 모든 기능을 갖춘 로깅 컴포넌트 집합입니다. Indexed Loki는 다른 로깅 시스템과 달리 아래와 같이 로그 스트림의 메타데이터인 레이블(Prometheus의 레이블과 같은)만 인덱싱한다는 개념에 기반해 구축되므로 원본 로그 메시지는 색인되지 않습니다. 그런 다음 로그 데이터 자체는 압축되어 S3나 GCS와 같은 object stores에 chunks로 저장되거나 파일 시스템에 저장됩니다. 작은 인덱스와 압축된 chunks는 간결하면서도 효율적인 쿼리 실행을 가능하게하고 Loki의 비용을 크게 낮추게 됩니다. Agent 에이전트(클라이언트)는 로그를 수집하고, 로그를 스트림으로 변환한 다음, HTTP API를 통해 스트림을 Loki로 푸시합니..
[Tempo]What is Grafana Tempo? Architecture Grafana Tempo는 Distributor, Ingester, Query Frontend, Querier, Compactor, Metrics Generator(option)를 포함합니다. 각 컴포넌트는 트레이스 수집, 처리, 조회, 그리고 메트릭스 생성 등의 역할을 담당하며, 이들은 전체 trace 데이터의 라이프사이클을 관리합니다. Distributor Distributor는 Jaeger, OpenTelemetry, Zipkin을 포함한 여러 형식의 스팬을 허용합니다. traceID를 해싱하고 분산되고 일관된 해시 링을 사용하여 스팬을 Ingester로 라우팅합니다. 최상의 성능을 위해 OTel Proto를 수집하는 것이 권장됩니다. 스팬(span): 시작 시간과 종료 시간..