Skip to content

Commit cd34d12

Browse files
Merge pull request #21 from BSjaeyoung-kim/main
feature update
2 parents 5917635 + e8beb22 commit cd34d12

File tree

9 files changed

+86
-3986
lines changed

9 files changed

+86
-3986
lines changed

.env

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,6 @@ COST_PROCESS_ABNORMAL_CRON_SCHEDULE=0 0 1,7 * * ?
3434
COST_SELECTOR_URL=http://costselector:8083
3535
ALARM_URL=http://alarmservice:9000
3636
# AssetCollector
37+
COST_BE_URL=http://be:9090
3738
ASSET_MONITORING_SERVER=http://asset.mornitor.server:8080
38-
ASSET_COLLECT_BATCH_CRON_SCHEDULE=0 0 0 * * ?
39+
ASSET_COLLECT_BATCH_CRON_SCHEDULE=0 10 * * * ?

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ This repository provides a Multi-Cloud Cost Management and Optimizing Framework.
3737
## 3. DDL/DML execution
3838
### sql file path : /mc-cost-optimizer/mysql
3939
### running script
40-
mysql -u mcmpcostopti -p < init_cost_db.sql
40+
mysql -u mcmpcostopti -p < init_cost_db_ddl.sql
4141
mysql -u mcmpcostopti -p < init_mail_db.sql
4242
mysql -u mcmpcostopti -p < init_slack_db.sql
4343
```
@@ -72,7 +72,7 @@ This repository provides a Multi-Cloud Cost Management and Optimizing Framework.
7272
- mysql version : 8
7373
- run script
7474
```
75-
- /mc-cost-optimizer/mysql/init_cost_db.sql
75+
- /mc-cost-optimizer/mysql/init_cost_db_ddl.sql
7676
- /mc-cost-optimizer/mysql/init_mail_db.sql
7777
- /mc-cost-optimizer/mysql/init_slack_db.sql
7878
```

assetCollector/src/main/java/com/mcmp/assetcollector/batch/AssetCollect.java

+8
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ public class AssetCollect {
5252
@Autowired
5353
private AssetCollectService assetCollectService;
5454

55+
@Autowired
56+
private UpdateMetaBeforeAssetJob updateMetaBeforeAssetJob;
57+
5558
@Bean
5659
public SkipLogListener skipLogListener(){
5760
return new SkipLogListener();
@@ -61,6 +64,7 @@ public SkipLogListener skipLogListener(){
6164
public Job assetCollectJob(JobRepository jobRepository, Step assetCollectStep) {
6265
return new JobBuilder("assetCollectJob", jobRepository)
6366
.start(assetCollectStep)
67+
.listener(updateMetaBeforeAssetJob)
6468
.build();
6569
}
6670

@@ -127,6 +131,10 @@ public ItemProcessor<RunningInstanceModel, List<RSRCAssetComputeMetricModel>> pr
127131
OffsetDateTime offsetDateTime = OffsetDateTime.parse(timestampString, DateTimeFormatter.ISO_DATE_TIME);
128132
Timestamp timestamp = Timestamp.valueOf(offsetDateTime.atZoneSameInstant(ZoneOffset.UTC).toLocalDateTime());
129133

134+
if(value.get(valueIndex) == null){
135+
log.warn("item : {}'s value is null when {}", item, timestamp);
136+
continue;
137+
}
130138
Double asset_idle_Value = (Double) value.get(valueIndex);
131139
Double roundedValue = Math.round(asset_idle_Value * 100.0) / 100.0;
132140
Double usageValue = 100 - roundedValue;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.mcmp.assetcollector.batch;
2+
3+
import com.mcmp.assetcollector.service.MetaService;
4+
import lombok.extern.slf4j.Slf4j;
5+
import org.apache.catalina.core.ApplicationContext;
6+
import org.springframework.batch.core.JobExecution;
7+
import org.springframework.batch.core.JobExecutionListener;
8+
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
10+
import org.springframework.stereotype.Component;
11+
12+
@Component
13+
@Slf4j
14+
public class UpdateMetaBeforeAssetJob implements JobExecutionListener {
15+
16+
@Autowired
17+
private MetaService metaService;
18+
19+
@Override
20+
public void beforeJob(JobExecution jobExecution){
21+
try{
22+
metaService.updateSvcGrpMeta();
23+
} catch (Exception e){
24+
log.error("[AssetCollect] Update ServiceGroup Meta Error : {}", e.getMessage());
25+
e.printStackTrace();
26+
}
27+
28+
}
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.mcmp.assetcollector.service;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.springframework.beans.factory.annotation.Value;
5+
import org.springframework.http.HttpEntity;
6+
import org.springframework.http.HttpHeaders;
7+
import org.springframework.http.HttpMethod;
8+
import org.springframework.stereotype.Service;
9+
import org.springframework.web.client.RestTemplate;
10+
11+
@Service
12+
@Slf4j
13+
public class MetaService {
14+
@Value("${costopti.be.url}")
15+
private String costoptiBEUrl;
16+
17+
public void updateSvcGrpMeta() {
18+
RestTemplate restTemplate = new RestTemplate();
19+
String apiUrl = String.format("%s/api/costopti/be/updateRscMeta", costoptiBEUrl);
20+
21+
HttpHeaders httpHeaders = new HttpHeaders();
22+
HttpEntity<?> httpEntity = new HttpEntity<>(httpHeaders);
23+
24+
restTemplate.exchange(apiUrl, HttpMethod.GET, httpEntity, Void.class);
25+
}
26+
}

assetCollector/src/main/resources/application.properties

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ spring.datasource.hikari.batch.remove-abandoned-timeout=30
1717
logging.level.org.springframework.batch=DEBUG
1818
logging.level.org.mybatis=DEBUG
1919

20-
asset.collect.url=http://monitoring.server:8080
20+
costopti.be.url=http://localhost:9090
21+
asset.collect.url=http://observability.server:8080
2122

22-
assetCollectBatchCronSchedule=0 0 0 * * ?
23+
assetCollectBatchCronSchedule=0 10 * * * ?

docker-compose.yml

+9-15
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ version: '3'
22
services:
33
be:
44
restart: always
5-
build:
6-
context: ./BackEnd
5+
image: cloudbaristaorg/mc-costopti-api:edge
76
networks:
87
- mcmp_cost_network
98
ports:
@@ -22,16 +21,14 @@ services:
2221
costopti.costselector.url: ${COST_SELECTOR_URL}
2322
fe:
2423
restart: always
25-
build:
26-
context: ./cost-fe
24+
image: cloudbaristaorg/mc-costopti-ui:edge
2725
networks:
2826
- mcmp_cost_network
2927
ports:
30-
- "8080:80"
28+
- "80:80"
3129
costcollector:
3230
restart: always
33-
build:
34-
context: ./costCollector
31+
image: cloudbaristaorg/mc-costopti-costcollector:edge
3532
networks:
3633
- mcmp_cost_network
3734
ports:
@@ -48,8 +45,7 @@ services:
4845
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
4946
costprocessor:
5047
restart: always
51-
build:
52-
context: ./costProcessor
48+
image: cloudbaristaorg/mc-costopti-costprocessor:edge
5349
networks:
5450
- mcmp_cost_network
5551
ports:
@@ -64,8 +60,7 @@ services:
6460
opti.alarm.url: ${ALARM_URL}
6561
costselector:
6662
restart: always
67-
build:
68-
context: ./costSelector
63+
image: cloudbaristaorg/mc-costopti-costselector:edge
6964
networks:
7065
- mcmp_cost_network
7166
ports:
@@ -77,8 +72,7 @@ services:
7772
opti.alarm.url: ${ALARM_URL}
7873
alarmservice:
7974
restart: always
80-
build:
81-
context: ./AlarmService
75+
image: cloudbaristaorg/mc-costopti-alarm:edge
8276
networks:
8377
- mcmp_cost_network
8478
ports:
@@ -95,8 +89,7 @@ services:
9589
spring.datasource.hikari.history.password: ${COST_DB_PW}
9690
assetcollector:
9791
restart: always
98-
build:
99-
context: ./assetCollector
92+
image: cloudbaristaorg/mc-costopti-assetcollector:edge
10093
networks:
10194
- mcmp_cost_network
10295
ports:
@@ -105,6 +98,7 @@ services:
10598
spring.datasource.hikari.batch.jdbc-url: ${COST_DB_URL}
10699
spring.datasource.hikari.batch.username: ${COST_DB_USERNM}
107100
spring.datasource.hikari.batch.password: ${COST_DB_PW}
101+
costopti.be.url: ${COST_BE_URL}
108102
asset.collect.url: ${ASSET_MONITORING_SERVER}
109103
assetCollectBatchCronSchedule: ${ASSET_COLLECT_BATCH_CRON_SCHEDULE}
110104
networks:

0 commit comments

Comments
 (0)