From f815165fbb5fd5c4cb389ab69fa0a2662ea3343b Mon Sep 17 00:00:00 2001 From: yjp8842 Date: Wed, 14 Oct 2026 22:04:59 +0900 Subject: [PATCH] feat(cost-optimizer): add resource batch cron and NCP demand type env The K8s/Object Storage cost feature in mc-cost-optimizer reads these env: - NCP collector: NCP_RESOURCE_BATCH_CRON_SCHEDULE, NCP_K8S_DEMAND_TYPE_CODES (VNKS), NCP_OBJSTG_DEMAND_TYPE_CODES (OSSM) - Azure collector: AZURE_RESOURCE_BATCH_CRON_SCHEDULE (AKS resource cost) Compose falls back to defaults so an existing .env without these keys still runs the resource batches in the morning (KST) instead of the code default 00:45, and keeps NCP K8s/Object Storage collection enabled. --- conf/docker/.env.setup | 7 +++++++ conf/docker/docker-compose.yaml | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/conf/docker/.env.setup b/conf/docker/.env.setup index 50e59fc..80ebfac 100644 --- a/conf/docker/.env.setup +++ b/conf/docker/.env.setup @@ -251,6 +251,8 @@ MC_COST_OPTIMIZER_AZURE_SUBSCRIPTION_ID=azure-subscriptionid MC_COST_OPTIMIZER_AZURE_SERVICE_BATCH_CRON_SCHEDULE=0 35 9 * * ? MC_COST_OPTIMIZER_AZURE_VM_BATCH_CRON_SCHEDULE=0 40 9 * * ? MC_COST_OPTIMIZER_AZURE_VM_RIGHTSIZER_SCHEDULE=0 45 9 * * ? +# 비-VM 자원(AKS) 비용 수집. VM 배치 뒤 15분(Cost Management 스로틀링 분산) +MC_COST_OPTIMIZER_AZURE_RESOURCE_BATCH_CRON_SCHEDULE=0 55 9 * * ? ## Cost-NCP-Collector MC_COST_OPTIMIZER_COST_NCP_COLLECTOR_URL=http://mc-cost-optimizer-cost-ncp-collector:8094 @@ -259,6 +261,11 @@ MC_COST_OPTIMIZER_NCP_IAM_SECRET_KEY=ncp-iamsecretkey MC_COST_OPTIMIZER_NCP_SERVICE_BATCH_CRON_SCHEDULE=0 15 9 * * ? MC_COST_OPTIMIZER_NCP_VM_BATCH_CRON_SCHEDULE=0 10 9 * * ? MC_COST_OPTIMIZER_NCP_VM_RIGHTSIZER_SCHEDULE=0 5 9 * * ? +# 비-VM 자원(NKS, Object Storage) 비용 수집. NCP 청구 데이터가 매일 08시경 갱신되므로 그 뒤 +MC_COST_OPTIMIZER_NCP_RESOURCE_BATCH_CRON_SCHEDULE=0 40 9 * * ? +# NCP 청구 유형 코드(getContractDemandCostList demandTypeCode). K8S=VNKS(NKS VPC), Object Storage=OSSM. 쉼표로 여러 개 가능 +MC_COST_OPTIMIZER_NCP_K8S_DEMAND_TYPE_CODES=VNKS +MC_COST_OPTIMIZER_NCP_OBJSTG_DEMAND_TYPE_CODES=OSSM ## Cost-ML-Scorer (rightsizing score API, reads cost.asset_compute_metric) MC_COST_OPTIMIZER_ML_SCORER_URL=http://mc-cost-optimizer-ml-scorer:8096 diff --git a/conf/docker/docker-compose.yaml b/conf/docker/docker-compose.yaml index 0bb95c3..1a96748 100644 --- a/conf/docker/docker-compose.yaml +++ b/conf/docker/docker-compose.yaml @@ -681,6 +681,8 @@ services: AZURE_SERVICE_BATCH_CRON_SCHEDULE: ${MC_COST_OPTIMIZER_AZURE_SERVICE_BATCH_CRON_SCHEDULE} AZURE_VM_BATCH_CRON_SCHEDULE: ${MC_COST_OPTIMIZER_AZURE_VM_BATCH_CRON_SCHEDULE} + # 비-VM 자원(AKS) 수집. 컨테이너 TZ(Asia/Seoul) 기준이라 .env 에 없으면 코드 기본값(00:45)으로 새벽에 돌므로 기본값을 둔다 + AZURE_RESOURCE_BATCH_CRON_SCHEDULE: ${MC_COST_OPTIMIZER_AZURE_RESOURCE_BATCH_CRON_SCHEDULE:-0 55 9 * * ?} COSTOPTI_ALARMSERVICE_URL: ${MC_COST_OPTIMIZER_ALARM_URL} COSTOPTI_ASSETCOLLECTOR_URL: ${MC_COST_OPTIMIZER_COST_ASSET_COLLECTOR_URL} @@ -760,6 +762,11 @@ services: NCP_SERVICE_BATCH_CRON_SCHEDULE: ${MC_COST_OPTIMIZER_NCP_SERVICE_BATCH_CRON_SCHEDULE} NCP_VM_BATCH_CRON_SCHEDULE: ${MC_COST_OPTIMIZER_NCP_VM_BATCH_CRON_SCHEDULE} + # 비-VM 자원(NKS, Object Storage) 수집. 컨테이너 TZ(Asia/Seoul) 기준이라 .env 에 없으면 코드 기본값(00:45)으로 새벽에 돌므로 기본값을 둔다 + NCP_RESOURCE_BATCH_CRON_SCHEDULE: ${MC_COST_OPTIMIZER_NCP_RESOURCE_BATCH_CRON_SCHEDULE:-0 40 9 * * ?} + # NCP 청구 유형 코드(getContractDemandCostList demandTypeCode). 빈 값이면 해당 유형 수집을 건너뛰므로 기본값을 둔다 + NCP_K8S_DEMAND_TYPE_CODES: ${MC_COST_OPTIMIZER_NCP_K8S_DEMAND_TYPE_CODES:-VNKS} + NCP_OBJSTG_DEMAND_TYPE_CODES: ${MC_COST_OPTIMIZER_NCP_OBJSTG_DEMAND_TYPE_CODES:-OSSM} COSTOPTI_ALARMSERVICE_URL: ${MC_COST_OPTIMIZER_ALARM_URL} COSTOPTI_ASSETCOLLECTOR_URL: ${MC_COST_OPTIMIZER_COST_ASSET_COLLECTOR_URL}