26Y01a1

Young-Kyoo Kim·약 19시간 전
def get_finops_promql_queries(selector):
    """
    Thanos 쿼리용 PromQL 매크로 딕셔너리를 생성합니다.
    selector 예시: '{container!="", namespace=~"prod-.*"}'
    """
    # PV 메트릭은 container 라벨이 없으므로 selector에서 container 필터를 제거하는 안전망 마련
    pv_selector = selector.replace('container!="", ', '').replace(', container!=""', '')

    return {
        # 1. CPU 도메인 (기존 + Throttling 추가)
        "cpu_request":   f'kube_pod_container_resource_requests{selector.replace("container!=", "resource=\"cpu\", container!=")}',
        "cpu_limit":     f'kube_pod_container_resource_limits{selector.replace("container!=", "resource=\"cpu\", container!=")}',
        "cpu_usage":     f'rate(container_cpu_usage_seconds_total{selector}[1m])',
        "cpu_throttled": f'rate(container_cpu_cfs_throttled_periods_total{selector}[1m])', # ◀ [신규] CPU 스로틀링 비율
        
        # 2. Memory 도메인 (기존 + RSS 추가)
        "mem_request":   f'kube_pod_container_resource_requests{selector.replace("container!=", "resource=\"memory\", container!=")}',
        "mem_limit":     f'kube_pod_container_resource_limits{selector.replace("container!=", "resource=\"memory\", container!=")}',
        "mem_usage":     f'container_memory_working_set_bytes{selector}',
        "mem_rss":       f'container_memory_rss{selector}', # ◀ [신규] 순수 물리 메모리 RSS 점유량
        
        # 3. 가용성 장애 도메인
        "oom_event":     f'kube_pod_container_status_terminated_reason{selector.replace("container!=", "reason=\"OOMKilled\", container!=")}',
        
        # 4. 스토리지 PV 도메인 (◀ [신규] 볼륨 실효 효율화 지표)
        "pv_capacity":   f'kubelet_volume_stats_capacity_bytes{pv_selector}',
        "pv_used":       f'kubelet_volume_stats_used_bytes{pv_selector}'
    }

0개의 댓글