azure метрики хранения на уровне контейнера - PullRequest
0 голосов
/ 03 апреля 2020

Я имею в виду документацию, предоставленную azure на

https://docs.microsoft.com/en-us/azure/storage/common/storage-metrics-in-azure-monitor#read -метрия c -значения-с-net -sdk

Я внес изменения и заставил код работать для java, используя зависимость azure -mgmt-monitor. Вот код

public void listStorageMetricDefinition() {
    String resourceId = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{storageAccountName}";
    String subscriptionId = "*****************************";
    String tenantId = "*****************************";
    String applicationId = "*****************************";
    String accessKey = "*****************************";

    ApplicationTokenCredentials credentials = (ApplicationTokenCredentials) new ApplicationTokenCredentials(
            applicationId, tenantId, accessKey, AzureEnvironment.AZURE).withDefaultSubscriptionId(subscriptionId);
    MonitorManagementClientImpl clientImpl = new MonitorManagementClientImpl(credentials);

    Date startTime = DateTime.now().minusMinutes(30).toDate();
    Date endTime = DateTime.now().toDate();
    //DateTime must be in below format
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
    String startInterval = dateFormat.format(startTime);
    String endInterval = dateFormat.format(endTime);
    String timespan = startInterval + "/" + endInterval;
    Period interval = Period.minutes(1);
    String metricNames = "Egress";
    String aggregation = "Total";
    Integer top = null;
    String orderby = null;
    String filter = null;
    String metricNamespace = null;

    ResponseInner response = clientImpl.metrics().list(resourceId, timespan, interval, metricNames, aggregation,
            top, orderby, filter, null, metricNamespace);
    List<MetricInner> value = response.value();
    for (MetricInner metric : value) {
        System.out.println("id " + metric.id());
        System.out.println("name " + metric.name().value());
        System.out.println("type " + metric.type());
        System.out.println("unit " + metric.unit());
        List<TimeSeriesElement> timeseries = metric.timeseries();
        timeseries.forEach(ts -> {
            ts.data().forEach(dt -> {
                System.out.println(dt.timeStamp() + "--" + dt.total());
            });
        });
    }
}

Используя выше, я могу читать значения метрик на уровне учетной записи хранения, но как я могу найти метрики на уровне контейнера? например, если у меня есть 3 контейнера в моей учетной записи хранения, мне нужно найти метрики для каждого контейнера вместо полной учетной записи хранения.

Пожалуйста, предложите, если есть другие способы поиска метрик на уровне контейнера.

1 Ответ

0 голосов
/ 07 апреля 2020

Нет прямого способа сделать это, но этого можно добиться, настроив мониторинг для учетной записи хранения. Для настройки мониторинга перейдите по приведенной ниже ссылке:

https://docs.microsoft.com/en-us/azure/storage/common/storage-monitor-storage-account

После настройки учетной записи хранения для мониторинга в вашем хранилище будет создан новый контейнер с именем $ logs. Счет. Этот новый контейнер не отображается на портале azure, но вы можете просмотреть и изучить этот новый контейнер с помощью инструмента Azure Storage Explorer. Ссылка для загрузки инструмента приведена ниже.

https://azure.microsoft.com/en-us/features/storage-explorer/

Журналы внутри контейнера $ logs разделены на основе даты и времени в отдельных папках ,

/ blob / гггг / мм / дд / ччмм / 000000.log

/ blob / гггг / мм / дд / ччмм / 000001.log

где мм всегда будет 00.

enter image description here

Схему для журналов можно найти в документации azure на месте.

https://docs.microsoft.com/en-us/rest/api/storageservices/storage-analytics-log-format

Можно прочитать файл журнала, используя формат схемы, и создать полезные метрики, если он есть.

...