여러 개의 StarRocks 클러스터가 Namespace별로 파티셔닝되어 운영 중인 멀티테넌시(Multi-tenancy) 환경이라면, 어떤 네임스페이스(즉, 어떤 사용자/부하)가 MinIO를 몰아치고 있는지 찾아내는 것이 핵심입니다.
MinIO AIStor 환경에서 이를 특정하기 위한 현실적인 3단계 접근법을 제언해 드립니다.
mc)를 이용한 User-Agent 기반 식별MinIO의 감사 로그(Audit Log)나 트레이스에는 요청을 보낸 클라이언트의 정보가 남습니다. StarRocks는 버전이나 설정에 따라 User-Agent에 고유한 식별자를 포함하거나, 요청 헤더에 테넌트 정보를 남길 수 있습니다.
# 특정 클러스터에 대해 실시간 트레이스를 걸고, 어떤 IP가 요청을 많이 보내는지 확인
mc admin trace --all --verbose alias/ | grep "GetObject"
RemoteAddr (Source IP).kubectl get pods -A -o wide | grep [IP]와 대조하면 해당 Pod가 어느 Namespace에 속해 있는지 즉시 알 수 있습니다.StarRocks는 대량의 데이터를 읽을 때 BE(Backend) Pod들이 직접 MinIO와 통신합니다.
# 모든 namespace에서 starrocks-be pod의 IP와 Namespace 출력
kubectl get pods -A -l app=starrocks-be -o custom-columns="NAMESPACE:.metadata.namespace,POD_IP:.status.podIP"
위 명령어로 만든 리스트와 MinIO의 mc admin trace 또는 Prometheus의 minio_s3_requests_total 메트릭에 찍히는 Client IP를 대조하세요. 특정 Namespace에 속한 BE IP들이 압도적으로 많이 찍힌다면 그 녀석이 범인입니다.
StarRocks 자체적으로 어느 쿼리가 S3 데이터를 많이 읽었는지 확인하는 방법입니다. 각 Namespace별로 StarRocks FE(Frontend)에 접속하여 관리자 권한으로 아래 쿼리를 수행해 보세요.
-- 실행 중인 쿼리 중 스캔 데이터가 많은 순서로 확인
SELECT query_id, user, start_time, query_time, scan_bytes, scan_rows
FROM information_schema.active_queries
ORDER BY scan_bytes DESC;
-- 최근 완료된 쿼리 중 부하가 컸던 쿼리 확인
SELECT query_id, user, scan_bytes, cpu_cost_seconds
FROM information_schema.query_log
WHERE start_time > now() - interval 1 hour
ORDER BY scan_bytes DESC;
scan_bytes가 테라바이트(TB) 단위로 찍히는 쿼리가 있다면, 그 StarRocks가 bond1(내부)로 데이터를 당겨와서 bond0(외부)로 결과를 쏘고 있는 것입니다.이미 Grafana를 사용 중이시라면, MinIO 메트릭 중 minio_s3_requests_total을 remote_ip 레이블로 그룹화하여 시각화하세요.
topk(10, sum(rate(minio_s3_requests_total{api="getobject"}[5m])) by (remote_ip))
이 그래프에서 상위권을 차지하는 remote_ip들을 확보한 뒤, Kubernetes의 Pod IP와 매핑하는 자동화된 대시보드를 만들면 향후 같은 상황이 발생했을 때 어느 Namespace의 StarRocks인지 1초 만에 파악할 수 있습니다.
mc admin trace를 띄워 가장 많이 들어오는 Remote IP 3~4개를 적습니다.kubectl get pods -A -o wide | grep [해당IP]를 실행합니다.show processlist나 query_log를 통해 어떤 쿼리가 돌고 있는지 확인합니다.현재 bond1 RX가 높다는 것은 StarRocks BE들이 분산해서 병렬로 데이터를 긁어가고 있다는 의미이므로, 특정 BE 하나가 아니라 특정 Namespace 전체를 타겟으로 조사하시는 것이 효율적입니다.