모니터링
모니터링 (Monitoring)
벡터 DB도 운영 중에는 상태를 눈으로 확인할 수 있어야 해요. Weaviate는 Prometheus 호환 형식으로 메트릭을 노출하고, Grafana 대시보드와 결합해 리소스·객체 연산·벡터 인덱스 상태를 한눈에 볼 수 있게 해 줍니다. 기본 설정은 환경변수 하나로 끝나요.
모니터링 구성 (Configure Monitoring)
Weaviate에서 활성화
메트릭을 수집해 Prometheus 호환 형식으로 노출하라고 Weaviate에 알리려면 다음 환경변수만 설정하면 됩니다.
PROMETHEUS_MONITORING_ENABLED = true
기본적으로 Weaviate는 <hostname>:2112/metrics에서 메트릭을 노출해요. 다음 환경변수로 포트를 바꿀 수 있습니다.
PROMETHEUS_MONITORING_PORT = 3456
Weaviate에서 메트릭 스크레이프
공식 문서에는 Docker Compose로 완전한 구성을 한 번에 띄우는 방법이 있어요.
- Docker Compose로 단일 명령으로 시작되는 완전 구성 세트 제공
- Weaviate가 위에서 설명한 대로 Prometheus 메트릭을 노출하도록 구성
- Prometheus 인스턴스가 구성에 포함되고, Weaviate에서 15초마다 메트릭을 스크레이프
- Grafana 인스턴스도 시작되고, Prometheus 인스턴스를 메트릭 제공자로 사용. 몇 개의 샘플 대시보드를 담은 대시보드 제공자도 실행
멀티테넌시
멀티테넌시를 쓸 때는 PROMETHEUS_MONITORING_GROUP 환경변수를 true로 설정하는 걸 권장해요. 그러면 모든 테넌트의 데이터가 모니터링용으로 묶입니다.
얻을 수 있는 메트릭 (Obtainable Metrics)
세분성(granularity)이 'shard'라면 같은 'class'(컬렉션)의 모든 'shard' 메트릭을 집계해 클래스 메트릭을 얻거나, 전부 집계해 전체 Weaviate 인스턴스 메트릭을 얻을 수 있어요.
일반·빌드 정보
| 메트릭 | 설명 | 레이블 | 타입 |
|---|---|---|---|
weaviate_runtime_config_hash |
현재 활성 런타임 구성의 해시 값. 새 구성이 언제 효과를 발휘했는지 추적에 유용 | sha256 |
Gauge |
weaviate_runtime_config_last_load_success |
마지막 로드 시도가 성공했는지 여부(1=성공, 0=실패) |
없음 | Gauge |
객체·쿼리 연산
쿼리 연산
| 메트릭 | 설명 | 레이블 | 타입 |
|---|---|---|---|
requests_total |
성공·실패 여부를 판정하는 모든 사용자 요청 추적 | status, class_name, api, query_type |
Gauge |
시스템 리소스
시작
| 메트릭 | 설명 | 레이블 | 타입 |
|---|---|---|---|
startup_durations_ms |
개별 시작 연산의 지속 시간(ms). 연산 자체는 operation 레이블로 정의 |
operation, class_name, shard_name |
Summary |
샘플 대시보드 (Sample Dashboards)
| 대시보드 | 용도 |
|---|---|
| Importing Data Into Weaviate | 가져오기 연산 속도 시각화(객체 스토어, 역색인, 벡터 인덱스 등 구성 요소 포함) |
| Object Operations | GET, PUT 등 전체 객체 연산 속도 시각화 |
| Vector Index | HNSW 벡터 인덱스의 현재 상태와 연산 시각화 |
| LSM Stores | Weaviate 내부 여러 LSM 스토어의 내부(세그먼트 포함) 인사이트 |
| Startup | 복구 연산을 포함한 시작 과정 시각화 |
| Usage | 가져온 객체 수 등 사용 메트릭 확보 |
| Async index queue | 인덱스 큐 활동 관찰 |
쿼리 프로파일링 (Query profiling)
쿼리별 성능 분석이 필요하면 Weaviate는 query profiling을 제공해요. Prometheus 메트릭이 집계 성능을 보여주는 반면, 쿼리 프로파일링은 개별 쿼리에 대한 샤드별 타이밍 분해를 제공해서 특정 느린 쿼리를 진단하는 데 유용합니다.
nodes API 엔드포인트
컬렉션 정보를 프로그래밍 방식으로 가져오려면 nodes REST 엔드포인트를 사용합니다. nodes 엔드포인트는 노드 배열을 반환하고, 각 노드의 필드는 다음과 같아요.
name— 노드 이름status— 노드 상태(HEALTHY,UNHEALTHY,UNAVAILABLE,INDEXING중 하나)version— 노드에서 실행 중인 Weaviate 버전gitHash— 노드에서 실행 중인 Weaviate 최신 커밋의 짧은 git 해시stats— 노드 통계
추가로 shards 아래에는:
objectCount— 샤드에 인덱싱된 객체 수vectorQueueLength— 샤드에서 인덱싱 대기 중인 객체 수. (ASYNC_INDEXING이 켜진 경우 Weaviate1.22부터 사용 가능)