Status | Authors | Coach | DRIs | Owning Stage | Created |
---|---|---|---|---|---|
proposed |
@igorwwwwwwwwwwwwwwwwwwww
@reprazent
|
@nduff
@stejacks-gitlab
@abrandl
| devops platforms | 2024-02-02 |
Cells: 플리트 내 Cells의 관측성
요약
여러 개의 Cells를 배포할 때, 우리는 하나의 Cell의 상태를 파악할 수 있어야 하지만, 전체 플리트의 상황도 파악할 수 있어야 합니다. 우리는 Cell의 관측성과 플리트 전체의 관측성 간에 충분한 격리를 유지해야 하며, 전역 또는 Cell 로컬 관측 스택이 고민할 때에도 Cell을 계속해서 모니터링할 수 있어야 합니다.
이를 위해 우리가 배포하는 모니터링 도구는 모든 Cells에 대해 일관되어야 하며, 우리가 가하는 모든 변경은 크기나 개수에 관계없이 모든 Cells에 적용 가능해야 합니다.
본 문서에서는 그러한 시스템에 대한 요구 사항에 대해 논의합니다. 이는 Cells 1.0 반복을 대상으로 합니다.
동기
목표
- 이해관계자에게 경보 및 관측성 데이터 (로그 및 메트릭)에 대한 액세스 제공.
- Cell 로컬 관측성 스택 제공.
비목표
- Cell 사용자(예: 조직 관리자)에게 관측성 데이터를 제공하지 않을 것이며, 이는 운영 목적으로만 사용될 예정입니다.
제안
요구사항
-
각 Cell은 완전히 로컬 관측성 스택을 갖추어야 하며, 독립적으로 액세스하고 독립적으로 작동해야 합니다.
- 로그에 대한 별도의 액세스 (예: BigQuery, Google의 로그 탐색기, Elasticsearch, GCS 아카이브).
- 메트릭에 대한 별도의 액세스.
- 경보는 Cell별로 평가됩니다.
- 용량 계획.
- 오류 예산 메트릭.
- SIRT: Devo로 로그 전송.
- Cell 메트릭 구성은 Cell의 아키텍처와 예상 워크로드에 기반한 기본값을 사용해야 합니다. 이는 Cell의 구성의 일부입니다.
- Cell 로컬 관측성 스택의 프로비저닝 및 변경 관리는 표준 Cells 배포 프로세스와 통합되어야 합니다. 이는 반복성을 보장합니다. 배포에는 관측성 구성 및 인프라에 대한 변경만 포함될 수 있습니다.
- 전역 구성요소에 대한 관측성 (예: Cells 라우터, AI 게이트웨이)은 기존의 전역 관측성 스택에서 관리됩니다.
- Cell의 관측성이 Dedicated Tenant와 동일하게 구성되어야 합니다: 메트릭 카탈로그를 사용합니다.
있으면 좋을 것들
다음은 Cells 1.0의 범위 내에서 있으면 좋을 것들입니다. Cells 배포를 확대함에 따라 이러한 요소들이 강제적인 요구사항이 될 수 있습니다.
- 각 Cell로 번진 전체적인 글로벌 (교차-Cell) 뷰. 이를 통해 중복 데이터 저장을 피하며 이해관계자들은 초기에 각 Cell 기반의 로컬 관측성 데이터에 액세스할 수 있을 것입니다.
- 오류 예산 보고서는 초기 구현의 범위를 벗어납니다. 메트릭은 기록될 수 있지만, 단계 그룹에 대한 오류 예산 보고서에는 아직 포함되지 않을 것입니다.
-
이는 GitLab Dedicated 메트릭을 글로벌 관측성 스택에서 이용 가능하게 하는 길을 열 것입니다. 그러나 처음에는 Cell 로컬 액세스에 초점을 맞추고 있기 때문에 이는 Cells의 관측성의 이번 반복의 범위에 포함되지 않습니다.
이유: 글로벌 관측성이 필요하기 때문에 GitLab Dedicated에서 모든 메트릭은 대시보드 액세스가 가능해야 합니다. 그러나 모든 Dedicated 메트릭에 대해 이를 허용할 수 있는 것은 아닐 수 있습니다. 따라서 단계 그룹의 오류 예산을 포함하는 글로벌 스택에 이러한 메트릭을 통합하기 전에 이를 처리하는 방법에 대해 검토해야 할 것입니다.
디자인 및 구현 세부사항
해달하는 솔루션의 구현 세부사항을 논의할 때, 다음 질문에 대한 답변을 확인해야 합니다.
- Cell 로컬 스택을 어떻게 어디에 배포하고, Kubernetes를 사용합니까?
- 구성을 어떻게 관리합니까?
- 유지 정책은 어떻습니까?
- 확장성, 신뢰성, 재해 복구 특성은 무엇입니까?
- 이 시스템의 비용은 무엇에 영향을 받습니까?
- 대시보드와의 통합은 어떻게 이루어지나요?
- 검색 및 인증은 어떻게 작동합니까?
메트릭
- 메트릭 스크래핑, 저장, 규칙 평가, 경보에 대해 어떤 기술을 사용합니까?
- 예: GCP 관리 vs Self-Hosted Prometheus, Mimir 등.
- 사용자에게 이러한 메트릭을 어떻게 노출합니까?
- 도구 및 자동화를 위해 이러한 메트릭을 어떻게 노출합니까?
로깅
- 로그 수집 및 전달을 위해 어떤 기술을 사용합니까?
- 예: fluentd, vector
- 로그 흡수 및 저장을 위해 어떤 기술을 사용합니까?
- 예: Stackdriver, Beats, ELK 등.
대안적 솔루션
후보들 간의 트레이드오프를 고려하고 특정 기술(technology)을 선택한 이유를 명시해야 합니다.