時系列の取得
次のサンプルコードは、時系列テーブルで、メトリック名が cpu で、値が Ubuntu
で始まる接頭辞を持つ os タグを持つすべての時系列をクエリする方法の例を示しています。
// 時系列テーブルの名前を指定します。
String tableName = "<TIME_SERIES_TABLE>";
QueryTimeseriesMetaRequest queryTimeseriesMetaRequest = new QueryTimeseriesMetaRequest(tableName);
// メトリック名が cpu で、値が Ubuntu で始まる接頭辞を持つ os タグを持つすべての時系列をクエリします。measurement_name="cpu" and have_prefix(os, "Ubuntu")
CompositeMetaQueryCondition compositeMetaQueryCondition = new CompositeMetaQueryCondition(MetaQueryCompositeOperator.OP_AND);
compositeMetaQueryCondition.addSubCondition(new MeasurementMetaQueryCondition(MetaQuerySingleOperator.OP_EQUAL, "cpu"));
compositeMetaQueryCondition.addSubCondition(new TagMetaQueryCondition(MetaQuerySingleOperator.OP_PREFIX, "os", "Ubuntu"));
queryTimeseriesMetaRequest.setCondition(compositeMetaQueryCondition);
queryTimeseriesMetaRequest.setGetTotalHits(true);
// 1 回のリクエストで返される時系列メタデータエントリの最大数を指定します。
queryTimeseriesMetaRequest.setLimit(100);
// クエリを開始します。
QueryTimeseriesMetaResponse queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
// クエリ条件を満たす時系列の総数を表示します。
System.out.println(queryTimeseriesMetaResponse.getTotalHits());
// リクエスト結果を保存します。
List<TimeseriesMeta> timeseriesMetas = new ArrayList<TimeseriesMeta>();
timeseriesMetas.addAll(queryTimeseriesMetaResponse.getTimeseriesMetas());
// レスポンスに NextToken が含まれている場合は、新しいリクエストを開始して残りの結果を取得できます。
while (queryTimeseriesMetaResponse.getNextToken() != null) {
queryTimeseriesMetaRequest.setNextToken(queryTimeseriesMetaResponse.getNextToken());
queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
timeseriesMetas.addAll(queryTimeseriesMetaResponse.getTimeseriesMetas());
// 返される時系列の最大数を指定します。
if (timeseriesMetas.size() >= 1000) {
break;
}
}
System.out.println(timeseriesMetas.size());
for (TimeseriesMeta timeseriesMeta : timeseriesMetas) {
System.out.println(timeseriesMeta.getTimeseriesKey().getMeasurementName());
System.out.println(timeseriesMeta.getTimeseriesKey().getDataSource());
System.out.println(timeseriesMeta.getTimeseriesKey().getTags());
System.out.println(timeseriesMeta.getAttributes());
System.out.println(timeseriesMeta.getUpdateTimeInUs());
}
時系列メタデータの更新
次のサンプルコードは、時系列テーブル内の複数の時系列のメタデータのプロパティを更新する方法の例を示しています。
// 複数の時系列のメタデータのプロパティを更新する例
private static void updateTimeseriesMeta(TimeseriesClient client) {
List<TimeseriesMeta> timeseriesMetaList = new ArrayList<TimeseriesMeta>();
for (int i = 0; i < 10; i++) {
Map<String, String> tags = new HashMap<String, String>();
tags.put("region", "hangzhou");
tags.put("os", "Ubuntu16.04");
// 時系列の識別子を構築します。
TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_" + i, tags);
TimeseriesMeta meta = new TimeseriesMeta(timeseriesKey);
// 時系列のプロパティの値を指定します。
Map<String, String> attrs = new HashMap<String, String>();
attrs.put("status", "online");
meta.setAttributes(attrs);
timeseriesMetaList.add(meta);
}
// 時系列テーブルの名前を指定します。
String tableName = "<TIME_SERIES_TABLE>";
UpdateTimeseriesMetaRequest updateTimeseriesMetaRequest = new UpdateTimeseriesMetaRequest(tableName);
updateTimeseriesMetaRequest.setMetas(timeseriesMetaList);
UpdateTimeseriesMetaResponse updateTimeseriesMetaResponse = client.updateTimeseriesMeta(updateTimeseriesMetaRequest);
// すべての時系列のプロパティが更新されたかどうかを確認します。
if (!updateTimeseriesMetaResponse.isAllSuccess()) {
for (UpdateTimeseriesMetaResponse.FailedRowResult failedRowResult : updateTimeseriesMetaResponse.getFailedRows()) {
System.out.println(failedRowResult.getIndex());
System.out.println(failedRowResult.getError());
}
}
}
時系列メタデータの削除
次のコードは、時系列テーブル内の一部の時系列のメタデータを削除する方法の例を示しています。
// 時系列テーブル内の一部の時系列のメタデータを削除する例
private static void deleteTimeseriesMeta(TimeseriesClient client) {
List<TimeseriesKey> timeseriesKeyList = new ArrayList<TimeseriesKey>();
for (int i = 0; i < 10; i++) {
Map<String, String> tags = new HashMap<String, String>();
tags.put("region", "hangzhou");
tags.put("os", "Ubuntu16.04");
// 時系列識別子を構築します。
TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_" + i, tags);
timeseriesKeyList.add(timeseriesKey);
}
// 時系列テーブルの名前を指定します。
String tableName = "<TIME_SERIES_TABLE>";
DeleteTimeseriesMetaRequest deleteTimeseriesMetaRequest = new DeleteTimeseriesMetaRequest(tableName);
deleteTimeseriesMetaRequest.setTimeseriesKeys(timeseriesKeyList);
DeleteTimeseriesMetaResponse deleteTimeseriesMetaResponse = client.deleteTimeseriesMeta(deleteTimeseriesMetaRequest);
// 時系列のメタデータが削除されたかどうかを確認します。
if (!deleteTimeseriesMetaResponse.isAllSuccess()) {
for (DeleteTimeseriesMetaResponse.FailedRowResult failedRowResult : deleteTimeseriesMetaResponse.getFailedRows()) {
System.out.println(failedRowResult.getIndex());
System.out.println(failedRowResult.getError());
}
}
}