diff --git a/conf/docker/.env.setup b/conf/docker/.env.setup index 3a40c7e..4e67af1 100644 --- a/conf/docker/.env.setup +++ b/conf/docker/.env.setup @@ -195,15 +195,17 @@ MC_COST_OPTIMIZER_MAIL_DB_URL=jdbc:mariadb://mc-cost-optimizer-db:3306/${MC_COST MC_COST_OPTIMIZER_COST_ASSET_COLLECTOR_URL=http://mc-cost-optimizer-asset-collector:8091 MC_COST_OPTIMIZER_COST_COLLECTOR_URL=http://mc-cost-optimizer-cost-collector:8081 MC_COST_OPTIMIZER_COST_PROCESSOR_URL=http://mc-cost-optimizer-cost-processor:8082 +MC_COST_OPTIMIZER_AZURE_RIGHTSIZER_URL=http://mc-cost-optimizer-azure-vm-rightsizer:8092 +MC_COST_OPTIMIZER_NCP_RIGHTSIZER_URL=http://mc-cost-optimizer-ncp-vm-rightsizer:8095 -MC_COST_OPTIMIZER_COST_GCP_COLLECTOR_URL=http://mc-cost-optimizer-cost-gcp-collector:8095 +MC_COST_OPTIMIZER_COST_GCP_COLLECTOR_URL=http://mc-cost-optimizer-gcp-collector:8095 MC_COST_OPTIMIZER_GCP_PROJECT_ID=gcp-projectid MC_COST_OPTIMIZER_GCP_CLIENT_EMAIL=gcp-clientemail MC_COST_OPTIMIZER_GCP_PRIVATE_KEY_ID=gcp-privatekeyid MC_COST_OPTIMIZER_GCP_PRIVATE_KEY=gcp-privatekey MC_COST_OPTIMIZER_GCP_BQ_DATASET=gcp-datasetname MC_COST_OPTIMIZER_GCP_BQ_TABLE=gcp-bigguerytable -MC_COST_OPTIMIZER_GCP_BATCH_CRON_SCHEDULE=0 0 8 * * ? +MC_COST_OPTIMIZER_GCP_BATCH_CRON_SCHEDULE=0 20 9 * * ? ## Cost Collector MC_COST_OPTIMIZER_COST_COLLECT_UNUSED_CRON_SCHEDULE=0 30 0,6 * * ? @@ -230,17 +232,17 @@ MC_COST_OPTIMIZER_AZURE_TENANT_ID=azure-tenantid MC_COST_OPTIMIZER_AZURE_CLIENT_ID=azure-clientid MC_COST_OPTIMIZER_AZURE_CLIENT_SECRET=azure-clientsecret MC_COST_OPTIMIZER_AZURE_SUBSCRIPTION_ID=azure-subscriptionid -MC_COST_OPTIMIZER_AZURE_SERVICE_BATCH_CRON_SCHEDULE=0 0 0 * * ? -MC_COST_OPTIMIZER_AZURE_VM_BATCH_CRON_SCHEDULE=0 10 0 * * ? -MC_COST_OPTIMIZER_AZURE_VM_RIGHTSIZER_SCHEDULE=0 20 0 * * ? +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 * * ? ## Cost-NCP-Collector MC_COST_OPTIMIZER_COST_NCP_COLLECTOR_URL=http://mc-cost-optimizer-cost-ncp-collector:8094 MC_COST_OPTIMIZER_NCP_IAM_ACCESS_KEY=ncp-iamaccesskey MC_COST_OPTIMIZER_NCP_IAM_SECRET_KEY=ncp-iamsecretkey -MC_COST_OPTIMIZER_NCP_SERVICE_BATCH_CRON_SCHEDULE=0 0 0 * * ? -MC_COST_OPTIMIZER_NCP_VM_BATCH_CRON_SCHEDULE=0 10 0 * * ? -MC_COST_OPTIMIZER_NCP_VM_RIGHTSIZER_SCHEDULE=0 20 0 * * ? +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 * * ? ## 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 017bb6f..f34bb24 100644 --- a/conf/docker/docker-compose.yaml +++ b/conf/docker/docker-compose.yaml @@ -399,7 +399,7 @@ services: mc-cost-optimizer-fe: restart: unless-stopped container_name: mc-cost-optimizer-fe - image: cloudbaristaorg/mc-costopti-ui:0.6.0 + image: cloudbaristaorg/mc-costopti-ui:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -417,7 +417,7 @@ services: mc-cost-optimizer-be: restart: on-failure container_name: mc-cost-optimizer-be - image: cloudbaristaorg/mc-costopti-api:0.6.0 + image: cloudbaristaorg/mc-costopti-api:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -429,6 +429,7 @@ services: volumes: - ./tool/mcc:/app/tool/mcc environment: + TZ: Asia/Seoul spring.datasource.hikari.cost.optimize.jdbc-url: ${MC_COST_OPTIMIZER_COST_DB_URL_NEW} spring.datasource.hikari.cost.optimize.username: ${MC_COST_OPTIMIZER_MYSQL_USER} spring.datasource.hikari.cost.optimize.password: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} @@ -440,8 +441,17 @@ services: costopti.costcollector.url: ${MC_COST_OPTIMIZER_COST_COLLECTOR_URL} costopti.costprocessor.url: ${MC_COST_OPTIMIZER_COST_PROCESSOR_URL} costopti.costselector.url: ${MC_COST_OPTIMIZER_COST_SELECTOR_URL} + costopti.azurerightsizer.url: ${MC_COST_OPTIMIZER_AZURE_RIGHTSIZER_URL} + costopti.ncprightsizer.url: ${MC_COST_OPTIMIZER_NCP_RIGHTSIZER_URL} + costopti.gcpcollector.url: ${MC_COST_OPTIMIZER_COST_GCP_COLLECTOR_URL} + costopti.azurecollector.url: ${MC_COST_OPTIMIZER_COST_AZURE_COLLECTOR_URL} + costopti.ncpcollector.url: ${MC_COST_OPTIMIZER_COST_NCP_COLLECTOR_URL} ml.rightsize.base-url: ${MC_COST_OPTIMIZER_ML_SCORER_URL} llm.key.master: ${MC_COST_OPTIMIZER_LLM_KEY_MASTER} + OPENBAO_ENABLED: ${MC_COST_OPTIMIZER_OPENBAO_ENABLED} + OPENBAO_ADDRESS: ${MC_COST_OPTIMIZER_OPENBAO_ADDRESS} + OPENBAO_TOKEN: ${MC_COST_OPTIMIZER_OPENBAO_TOKEN} + healthcheck: test: [ "CMD", "/app/tool/mcc", "rest", "get", "http://localhost:9090/api/costopti/be/readyz" ] <<: *default-health-check @@ -449,7 +459,7 @@ services: mc-cost-optimizer-cost-collector: restart: on-failure container_name: mc-cost-optimizer-cost-collector - image: cloudbaristaorg/mc-costopti-costcollector:0.6.0 + image: cloudbaristaorg/mc-costopti-costcollector:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -465,9 +475,11 @@ services: volumes: - ./tool/mcc:/app/tool/mcc environment: + TZ: Asia/Seoul spring.datasource.hikari.batch.jdbc-url: ${MC_COST_OPTIMIZER_COST_DB_URL} spring.datasource.hikari.batch.username: ${MC_COST_OPTIMIZER_MYSQL_USER} spring.datasource.hikari.batch.password: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} + ALARM_SERVICE: ${MC_COST_OPTIMIZER_ALARM_URL} OPENBAO_ENABLED: ${MC_COST_OPTIMIZER_OPENBAO_ENABLED} OPENBAO_ADDRESS: ${MC_COST_OPTIMIZER_OPENBAO_ADDRESS} @@ -483,7 +495,7 @@ services: mc-cost-optimizer-cost-processor: restart: on-failure container_name: mc-cost-optimizer-cost-processor - image: cloudbaristaorg/mc-costopti-costprocessor:0.6.0 + image: cloudbaristaorg/mc-costopti-costprocessor:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -499,6 +511,7 @@ services: volumes: - ./tool/mcc:/app/tool/mcc environment: + TZ: Asia/Seoul spring.datasource.hikari.batch.jdbc-url: ${MC_COST_OPTIMIZER_COST_DB_URL} spring.datasource.hikari.batch.username: ${MC_COST_OPTIMIZER_MYSQL_USER} spring.datasource.hikari.batch.password: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} @@ -506,11 +519,12 @@ services: abnormalProcessCronSchedule: ${MC_COST_OPTIMIZER_COST_PROCESS_ABNORMAL_CRON_SCHEDULE} cost.selector.url: ${MC_COST_OPTIMIZER_COST_SELECTOR_URL} opti.alarm.url: ${MC_COST_OPTIMIZER_ALARM_URL} + mc-cost-optimizer-cost-selector: restart: on-failure container_name: mc-cost-optimizer-cost-selector - image: cloudbaristaorg/mc-costopti-costselector:0.6.0 + image: cloudbaristaorg/mc-costopti-costselector:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -526,6 +540,7 @@ services: volumes: - ./tool/mcc:/app/tool/mcc environment: + TZ: Asia/Seoul spring.datasource.hikari.cost.optimize.jdbc-url: ${MC_COST_OPTIMIZER_COST_DB_URL} spring.datasource.hikari.cost.optimize.username: ${MC_COST_OPTIMIZER_MYSQL_USER} spring.datasource.hikari.cost.optimize.password: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} @@ -537,7 +552,7 @@ services: mc-cost-optimizer-alarm-service: restart: on-failure container_name: mc-cost-optimizer-alarm-service - image: cloudbaristaorg/mc-costopti-alarm:0.6.0 + image: cloudbaristaorg/mc-costopti-alarm:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -549,6 +564,7 @@ services: volumes: - ./tool/mcc:/app/tool/mcc environment: + TZ: Asia/Seoul spring.datasource.hikari.slack.jdbc-url: ${MC_COST_OPTIMIZER_SLACK_DB_URL} spring.datasource.hikari.slack.username: ${MC_COST_OPTIMIZER_MYSQL_USER} spring.datasource.hikari.slack.password: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} @@ -562,7 +578,7 @@ services: mc-cost-optimizer-asset-collector: restart: on-failure container_name: mc-cost-optimizer-asset-collector - image: cloudbaristaorg/mc-costopti-assetcollector:0.6.0 + image: cloudbaristaorg/mc-costopti-assetcollector:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -578,6 +594,7 @@ services: volumes: - ./tool/mcc:/app/tool/mcc environment: + TZ: Asia/Seoul spring.datasource.hikari.batch.jdbc-url: ${MC_COST_OPTIMIZER_COST_DB_URL} spring.datasource.hikari.batch.username: ${MC_COST_OPTIMIZER_MYSQL_USER} spring.datasource.hikari.batch.password: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} @@ -588,7 +605,7 @@ services: mc-cost-optimizer-cost-azure-collector: restart: on-failure container_name: mc-cost-optimizer-cost-azure-collector - image: cloudbaristaorg/mc-costopti-azure-collector:0.6.0 + image: cloudbaristaorg/mc-costopti-azure-collector:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -604,6 +621,7 @@ services: volumes: - ./tool/mcc:/app/tool/mcc environment: + TZ: Asia/Seoul SPRING_DATASOURCE_URL: ${MC_COST_OPTIMIZER_COST_DB_URL} SPRING_DATASOURCE_USERNAME: ${MC_COST_OPTIMIZER_MYSQL_USER} SPRING_DATASOURCE_PASSWORD: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} @@ -629,7 +647,7 @@ services: mc-cost-optimizer-gcp-collector: restart: on-failure container_name: mc-cost-optimizer-gcp-collector - image: cloudbaristaorg/mc-costopti-gcpcollector:0.6.0 + image: cloudbaristaorg/mc-costopti-gcpcollector:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -645,7 +663,7 @@ services: volumes: - ./tool/mcc:/app/tool/mcc environment: - + TZ: Asia/Seoul spring.datasource.url: ${MC_COST_OPTIMIZER_COST_DB_URL} spring.datasource.username: ${MC_COST_OPTIMIZER_MYSQL_USER} spring.datasource.password: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} @@ -670,7 +688,7 @@ services: mc-cost-optimizer-cost-ncp-collector: restart: on-failure container_name: mc-cost-optimizer-cost-ncp-collector - image: cloudbaristaorg/mc-costopti-ncp-collector:0.6.0 + image: cloudbaristaorg/mc-costopti-ncp-collector:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -686,6 +704,7 @@ services: volumes: - ./tool/mcc:/app/tool/mcc environment: + TZ: Asia/Seoul SPRING_DATASOURCE_URL: ${MC_COST_OPTIMIZER_COST_DB_URL} SPRING_DATASOURCE_USERNAME: ${MC_COST_OPTIMIZER_MYSQL_USER} SPRING_DATASOURCE_PASSWORD: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} @@ -706,13 +725,10 @@ services: COSTOPTI_COSTPROCESSOR_URL: ${MC_COST_OPTIMIZER_COST_PROCESSOR_URL} COSTOPTI_COSTSELECTOR_URL: ${MC_COST_OPTIMIZER_COST_SELECTOR_URL} - ##timezone setting - TZ: Asia/Seoul - mc-cost-optimizer-azure-vm-rightsizer: restart: on-failure container_name: mc-cost-optimizer-azure-vm-rightsizer - image: cloudbaristaorg/mc-costopti-azure-vm-rightsizer:0.6.0 + image: cloudbaristaorg/mc-costopti-azure-vm-rightsizer:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -728,6 +744,7 @@ services: volumes: - ./tool/mcc:/app/tool/mcc environment: + TZ: Asia/Seoul SPRING_DATASOURCE_URL: ${MC_COST_OPTIMIZER_COST_DB_URL} SPRING_DATASOURCE_USERNAME: ${MC_COST_OPTIMIZER_MYSQL_USER} SPRING_DATASOURCE_PASSWORD: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} @@ -753,7 +770,7 @@ services: mc-cost-optimizer-ncp-vm-rightsizer: restart: on-failure container_name: mc-cost-optimizer-ncp-vm-rightsizer - image: cloudbaristaorg/mc-costopti-ncp-vm-rightsizer:0.6.0 + image: cloudbaristaorg/mc-costopti-ncp-vm-rightsizer:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -769,6 +786,7 @@ services: volumes: - ./tool/mcc:/app/tool/mcc environment: + TZ: Asia/Seoul SPRING_DATASOURCE_URL: ${MC_COST_OPTIMIZER_COST_DB_URL} SPRING_DATASOURCE_USERNAME: ${MC_COST_OPTIMIZER_MYSQL_USER} SPRING_DATASOURCE_PASSWORD: ${MC_COST_OPTIMIZER_MYSQL_PASSWORD} @@ -780,7 +798,7 @@ services: NCP_CREDENTIAL_IAM_ACCESS_KEY: ${MC_COST_OPTIMIZER_NCP_IAM_ACCESS_KEY} NCP_CREDENTIAL_IAM_SECRET_KEY: ${MC_COST_OPTIMIZER_NCP_IAM_SECRET_KEY} - AZURE_RIGHTSIZER_BATCH_CRON_SCHEDULE: ${MC_COST_OPTIMIZER_AZURE_VM_RIGHTSIZER_SCHEDULE} + AZURE_RIGHTSIZER_BATCH_CRON_SCHEDULE: ${MC_COST_OPTIMIZER_NCP_VM_RIGHTSIZER_SCHEDULE} COSTOPTI_ALARMSERVICE_URL: ${MC_COST_OPTIMIZER_ALARM_URL} COSTOPTI_ASSETCOLLECTOR_URL: ${MC_COST_OPTIMIZER_COST_ASSET_COLLECTOR_URL} @@ -794,7 +812,7 @@ services: mc-cost-optimizer-ml-scorer: restart: on-failure container_name: mc-cost-optimizer-ml-scorer - image: cloudbaristaorg/mc-costopti-ml-scorer:0.6.0 + image: cloudbaristaorg/mc-costopti-ml-scorer:0.6.3 pull_policy: always networks: - mc-cost-optimizer-network @@ -832,7 +850,7 @@ services: restart: "no" mc-cost-optimizer-db: - image: mariadb:latest + image: mariadb:12.3.2 container_name: mc-cost-optimizer-db depends_on: mc-cost-optimizer-init-volume: