다음을 통해 공유


다중 테넌트 모니터링

적용 대상: Azure Cosmos DB for PostgreSQL(PostgreSQL에 대한 Citus 데이터베이스 확장 기반)

Important

Citus 11.3 및 최신 버전에 적용 가능

테넌트 모니터링은 다중 테넌트 SaaS 플랫폼을 관리하는 데 중요한 요소입니다. 이 기능은 특정 테넌트에 따른 CPU 사용량 및 전체 쿼리 볼륨에 대한 인사이트를 제공합니다. 통계 추적은 테넌트가 상주하는 노드에서 로컬로 수행되며 테넌트 및 노드 세분성 수준에서 모두 액세스할 수 있습니다. 수집된 통계를 사용하면 시끄러운 이웃을 빠르게 식별할 수 있으며 클러스터에서 리소스 사용량을 더 잘 최적화하는 데 도움이 됩니다.

개념적 모델

Azure Cosmos DB for PostgreSQL은 코어에서 행 기반 분할을 사용합니다. 즉, 각 분산 테이블에는 테넌트 키로 표시되는 분산 열이 포함되어 있습니다. 테넌트 키를 사용하면 각 분할된 데이터베이스에 하나 이상의 테넌트가 포함된 분할된 데이터베이스 간에 데이터를 분할할 수 있습니다. 분할된 데이터베이스 자체는 클러스터의 노드에 분산되어 데이터베이스의 수평 크기 조정을 가능하게 합니다.

다이어그램은 citus_stat_tenants 보기에서 추적된 CPU_in_seconds 및 전체 쿼리 수의 상위 3개 테넌트 사용량이 있는 3개의 노드 클러스터 호스팅 테넌트가 표시됩니다.

CPU 시간은 클러스터의 노드에 있는 사용 가능한 모든 코어에서 테넌트가 소비하는 초 단위로 측정됩니다. 클러스터에서 사용할 수 있는 총 CPU 시간은 number_of_vcores * citus.stat_tenants_period * number_of_nodes로 추정할 수 있습니다.

노드 매개 변수

citus.stat_tenants_log_level(텍스트)

서버 로그에 기록되는 메시지 수준을 제어합니다. 유효한 값은 DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, DEBUG, LOG, INFO, NOTICE, WARNING, ERROR입니다. 기본값은 LOG입니다.

citus.stat_tenants_limit(정수)

단일 기간 내에 추적되는 테넌트 수(상위 N)를 제어합니다. 기본값은 100입니다.

citus.stat_tenants_period(정수)

테넌트 통계가 할당되는 기간(초)을 제어합니다. 기본값은 초입니다 60 .

citus.stat_tenants_track(부울)

테넌트 통계 추적을 사용하거나 사용하지 않도록 설정합니다. 기본값은 None입니다. 노드 매개 변수를 수정하려면 다시 시작해야 합니다.

통계 보기

pg_catalog.citus_stat_tenants

citus_stat_tenants 보기는 시간 버킷 내에서 이러한 통계를 추적합니다. 하나의 기간이 끝나면 해당 통계가 마지막 기간에 저장되어 지속적이고 완성된 기간 인사이트를 제공합니다. 현재 보기 내에서 추적되는 메트릭에는 읽기 쿼리 수, 노드에서 사용되는 전체 쿼리 수 및 CPU 주기, 공동 배치 그룹 및 테넌트 세분성이 포함됩니다.

ColumnName Type 설명
nodeid INTEGER 개별 노드에 대한 자동 생성된 식별자입니다.
colocation_id INTEGER 이 테이블이 속한 공동 배치 그룹입니다.
tenant_attribute TEXT 배포 열\분할 키입니다.
read_count_in_this_period INTEGER 현재 citus.stat_tenants_period의 SELECT 쿼리입니다.
read_count_in_last_period INTEGER 완료된 citus.stat_tenants_period의 SELECT 쿼리입니다.
query_count_in_this_period INTEGER 현재 citus.stat_tenants_period의 SELECT, INSERT, UPDATE 및 DELETE 쿼리입니다.
query_count_in_last_period INTEGER 완료된 citus.stat_tenants_period의 SELECT, INSERT, UPDATE 및 DELETE 쿼리입니다.
cpu_usage_in_this_period DOUBLE PRECISION 현재 기간에 사용된 CPU 시간(초)입니다.
cpu_usage_in_last_period DOUBLE PRECISION 완료된 기간에 사용된 CPU 시간(초)입니다.

참고 항목

보기에 대한 권한(execute, select)은 pg_monitor 역할에 부여됩니다.

테넌트 수준 통계를 추적하면 오버헤드 및 by default is disabled가 추가됩니다.

pg_catalog.citus_stat_tenants_reset()

이 함수는 citus_stat_tenants 보기 내에서 수집된 메트릭을 다시 설정합니다.

추적된 작업

이 기능을 사용하도록 설정하면 INSERT, UPDATE, DELETESELECT와 같은 SQL 명령에 대해 계정이 활성화됩니다. 이 계정은 single tenant를 위해 특별히 설계되었습니다. 쿼리 플래너가 쿼리를 단일 분할된 데이터베이스 또는 단일 테넌트로 제한할 수 있는 경우 쿼리는 단일 테넌트 쿼리가 될 수 있습니다.

다중 테넌트 환경에서 각 테넌트는 일반적으로 자체 데이터 세트에 액세스할 수 있으므로 쿼리는 테넌트 키를 기준으로 필터링됩니다. 테넌트 전체에서 작동하는 이러한 시스템의 모든 쿼리는 시스템 관리자에 의해 시작되며 개별 테넌트로 다시 추적되지 않습니다. 예를 들어, 모든 테넌트의 집계된 데이터를 포함하는 보고서를 생성하려면 특정 테넌트에 귀속될 수 없는 테넌트 간 쿼리가 필요합니다.

CREATE TABLE organizations (id BIGSERIAL PRIMARY KEY, name TEXT);

SELECT create_distributed_table ('organizations', 'id');

INSERT INTO organizations (name) VALUES ('Teleflora'); -- tracked
INSERT INTO organizations (name) VALUES ('BloomThat'); -- tracked
INSERT INTO organizations (name) VALUES ('UrbanStems');-- tracked

SELECT COUNT(*) FROM organizations where id = 1; -- tracked
 count 
-------
     1
(1 row)
SELECT COUNT(*) FROM organizations where id IN (1,2); -- untracked
 count
-------
     1
(1 row)
UPDATE organizations SET name = 'Bloomers' WHERE id = 2; -- tracked
UPDATE 1
DELETE FROM organizations WHERE id = 3; -- tracked
DELETE 1
SELECT tenant_attribute,
       read_count_in_this_period,
       query_count_in_this_period,
       cpu_usage_in_this_period
FROM citus_stat_tenants;
 tenant_attribute | read_count_in_this_period | query_count_in_this_period | cpu_usage_in_this_period 
------------------+---------------------------+----------------------------+--------------------------
 1                |                         2 |                          3 |                        0
 2                |                         0 |                          2 |                        0
 3                |                         0 |                          2 |                        0
(3 rows)

참고 항목

\COPY 명령 모두 COPY 기능으로 추적되지 않습니다.

다음 단계

다중 테넌트 스키마 모델링 및 통계 검토에 대해 자세히 알아봅니다.