Skip to content

Commit 28f63fb

Browse files
committed
🚧 index delete schedule adding
1 parent f300d39 commit 28f63fb

File tree

1 file changed

+48
-4
lines changed

1 file changed

+48
-4
lines changed

src/main/java/scouter/plugin/server/elasticsearch/HttpClient.java

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,27 @@
1010
import org.apache.http.impl.client.BasicCredentialsProvider;
1111
import org.apache.http.ssl.SSLContextBuilder;
1212
import org.apache.http.ssl.SSLContexts;
13+
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
1314
import org.elasticsearch.action.bulk.BulkProcessor;
1415
import org.elasticsearch.action.bulk.BulkRequest;
1516
import org.elasticsearch.action.bulk.BulkResponse;
1617
import org.elasticsearch.action.index.IndexRequest;
18+
import org.elasticsearch.action.support.master.AcknowledgedResponse;
1719
import org.elasticsearch.client.RequestOptions;
1820
import org.elasticsearch.client.RestClient;
1921
import org.elasticsearch.client.RestHighLevelClient;
22+
import org.elasticsearch.client.indices.GetIndexRequest;
2023
import org.elasticsearch.common.unit.ByteSizeUnit;
2124
import org.elasticsearch.common.unit.ByteSizeValue;
2225
import org.elasticsearch.common.unit.TimeValue;
2326
import scouter.server.Configure;
2427
import scouter.server.Logger;
28+
import scouter.util.DateUtil;
2529

2630
import java.io.IOException;
27-
import java.util.Arrays;
28-
import java.util.List;
29-
import java.util.Map;
31+
import java.util.*;
32+
import java.util.stream.Collectors;
33+
import java.util.stream.IntStream;
3034

3135

3236
/**
@@ -146,8 +150,48 @@ public void flush() {
146150
this.bulkProcessor.flush();
147151
}
148152

149-
public void deleteIndex(List<String> strings, int esIndexDuration) {
153+
public void deleteIndex(List<String> indexPattern, int esIndexDuration) {
150154

151155

156+
final int _start = esIndexDuration * 2; // before endDay
157+
final int _end = esIndexDuration; // total counter;
158+
final Calendar cal = GregorianCalendar.getInstance();
159+
IntStream.iterate(_start, n -> n-1 )
160+
.limit(_end)
161+
.mapToObj(x ->{
162+
// 현재 기준 이전 날짜를 가져오기
163+
cal.add(5, x > 0 ? (x * -1) : x);
164+
return cal.getTime().getTime();
165+
})
166+
.map(_ts -> DateUtil.format(_ts,"yyyy-MM-dd"))
167+
.collect(Collectors.toList())
168+
.stream()
169+
.map(_day -> {
170+
List<String> pattern = new ArrayList<>();
171+
for(String pt : indexPattern) {
172+
pattern.add(String.join("", pt, "*", _day, "*"));
173+
}
174+
return pattern;
175+
} )
176+
.flatMap(List::stream)
177+
.forEach(_indexName ->{
178+
try {
179+
180+
GetIndexRequest getRequest = new GetIndexRequest(_indexName);
181+
DeleteIndexRequest delRequest = new DeleteIndexRequest(_indexName);
182+
183+
if(this.highLevelClient.indices().exists(getRequest, RequestOptions.DEFAULT)) {
184+
AcknowledgedResponse acknowledgedResponse= this.highLevelClient.indices().delete(delRequest,RequestOptions.DEFAULT);
185+
if(acknowledgedResponse.isAcknowledged()){
186+
Logger.println("index pattern delete : success",_indexName);
187+
}
188+
189+
}
190+
}catch (Throwable e){
191+
Logger.printStackTrace("ES-DELETE-ERROR", e);
192+
}
193+
});
152194
}
195+
196+
153197
}

0 commit comments

Comments
 (0)