Мониторинг Хранилища BLOB-объектов Azure

При наличии критически важных приложений и бизнес-процессов, использующих ресурсы Azure, необходимо отслеживать эти ресурсы на предмет их доступности, производительности и функционирования. В этой статье описаны данные мониторинга, создаваемые службой хранилища BLOB-объектов Azure, и способы использования функций Azure Monitor для анализа оповещений об этих данных.

Общие сведения о мониторинге

Страница Обзор на портале Azure для каждого ресурса хранилища BLOB-объектов содержит краткие сведения об использовании ресурсов, например запросы и данные почасового выставления счетов. Эти сведения полезны, но лишь небольшое количество данных мониторинга доступно. Некоторые из этих данных собираются автоматически. Они становятся доступными для анализа сразу после создания ресурса хранилища. Вы можете включить дополнительные типы сбора данных с помощью определенной конфигурации.

Общие сведения об Azure Monitor

Хранилище BLOB-объектов Azure создает данные мониторинга с помощью службы мониторинга всего стека в Azure под названием Azure Monitor. Azure Monitor предоставляет полный набор функций для мониторинга ресурсов Azure и ресурсов в других облаках, а также в локальной среде.

Начните со статьи Мониторинг ресурсов Azure с помощью Azure Monitor, в которой рассматриваются следующие вопросы:

  • Общие сведения об Azure Monitor
  • затраты, связанные с мониторингом;
  • данные мониторинга, собираемые в Azure;
  • настройка сбора данных;
  • стандартные средства Azure для анализа данных мониторинга и оповещения.

В следующих разделах этой статьи описываются конкретные данные, собранные из службы хранилища Azure. В примерах показано, как настроить сбор данных и анализировать эти данные с помощью средств Azure.

Данные мониторинга

Хранилище BLOB-объектов Azure собирает те же данные мониторинга, что и другие ресурсы Azure, описанные в этом разделе.

Подробные сведения о метриках и журналах, создаваемых Хранилищем BLOB-объектов Azure, см. в справочнике по данным мониторинга Хранилища BLOB-объектов Azure.

Метрики и журналы в Azure Monitor поддерживают только учетные записи хранения Azure Resource Manager. Azure Monitor не поддерживает классические учетные записи хранения. Если вы хотите использовать метрики или журналы в классической учетной записи хранения, необходимо выполнить миграцию в учетную запись хранения Azure Resource Manager. Дополнительные сведения см. в статье об Переход на Azure Resource Manager.

При необходимости вы можете продолжить использование классических метрик и журналов. На самом деле, классические метрики и журналы доступны параллельно с метриками и журналами в Azure Monitor. Предусмотрена та же поддержка, пока в службе хранилища Azure обслуживаются устаревшие метрики и журналы.

Сбор и маршрутизация

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

Чтобы выполнить сбор журналов ресурсов, необходимо создать параметр диагностики. При создании параметра выберите BLOB-объект в качестве типа хранилища, для которого необходимо включить журналы. Затем укажите одну из следующих категорий операций, для которой требуется вести журнал.

Категория Описание
StorageRead Операции чтения для объектов.
StorageWrite Операции записи для объектов.
StorageDelete Операции удаления для объектов.

Примечание

Data Lake Storage 2-го поколения не отображается как тип хранилища. Это объясняется тем, что Data Lake Storage 2-го поколения — это набор возможностей, доступный для хранилища BLOB-объектов.

Запись параметра диагностики

В этом разделе показано, как создать параметр диагностики с помощью портала Azure, PowerShell и Azure CLI. В этом разделе приведены шаги, относящиеся к службе хранилища Azure. Общие рекомендации по созданию параметра диагностики см. в разделе Создание параметров диагностики для сбора журналов платформы и метрик в Azure.

Совет

Параметр диагностики также можно создать с помощью шаблона Azure Resource Manager или определения политики. Определение политики может гарантировать, что для каждой созданной или обновленной учетной записи создан параметр диагностики.

В этом разделе не описываются шаблоны или определения политик.

  1. Войдите на портал Azure.

  2. Войдите в свою учетную запись хранения.

  3. В разделе Мониторинг щелкните Параметры диагностики.

    Портал — журналы диагностики

  4. Выберите BLOB-объект в качестве типа хранилища, для которого необходимо включить журналы.

  5. Щелкните Добавить параметр диагностики.

    Откроется страница Параметры диагностики.

    Страница журналов ресурсов

  6. На странице в поле Имя введите имя для этого параметра журнала ресурсов. Затем выберите операции, которые требуется регистрировать (операции чтения, записи и удаления), а также место, куда необходимо отправлять журналы.

Архивировать в учетной записи хранения

Если вы решили архивировать журналы в учетную запись хранения, вы оплачиваете объем журналов, отправляемых в учетную запись хранения. Конкретные цены см. в разделе Журналы платформы на странице цен на Azure Monitor. Вы не можете отправлять журналы в ту же учетную запись хранения, которую вы отслеживаете с помощью этого параметра. Это привело бы к появлению рекурсивных журналов, в которых одна запись журнала описывает создание другой записи журнала. Необходимо создать учетную запись или использовать другую существующую учетную запись для хранения сведений журнала.

  1. Установите флажок Архивировать в учетной записи хранения, а затем выберите Настроить.

  2. В раскрывающемся списке Учетная запись хранения выберите учетную запись хранения, в которую нужно архивировать журналы, а затем нажмите кнопку Сохранить.

    Важно!

    Нельзя задать политику хранения. Но можно управлять политикой хранения контейнера журнала, определяя политику управления жизненным циклом. Дополнительные сведения см. в разделе Оптимизация затрат путем автоматизации уровней доступа к хранилищу BLOB-объектов Azure.

    Примечание

    Перед тем как выбрать учетную запись хранения в качестве назначения для экспорта, ознакомьтесь с предварительными требованиями к учетной записи хранения в разделе Архивирование журналов ресурсов Azure.

Потоковая передача журналов в Центры событий Azure

Если вы решили выполнить потоковую передачу журналов в концентратор событий, вы оплачиваете объем журналов, отправляемых в концентратор событий. Конкретные цены см. в разделе Журналы платформы на странице цен на Azure Monitor. Вам потребуется доступ к существующему концентратору событий или вам необходимо будет создать его перед выполнением этого шага.

  1. Установите флажок Передать в концентратор событий, а затем щелкните кнопку Настройка.

  2. В области Выберите концентратор событий выберите пространство имен, имя и имя политики концентратора событий, в который будут передаваться журналы.

  3. Нажмите кнопку Сохранить.

Отправка журналов в Azure Log Analytics

  1. Установите флажок Отправить в Log Analytics, выберите рабочую область Log Analytics, а затем нажмите кнопку Сохранить. Вам потребуется доступ к существующей рабочей области Log Analytics или вам необходимо будет создать ее перед выполнением этого шага.

Важно!

Нельзя задать политику хранения. Однако вы можете управлять сроком хранения данных Log Analytics на уровне рабочей области или даже задавать разные параметры хранения по типу данных. Дополнительные сведения см. в разделе Изменение срока хранения данных.

Отправка в решение партнера

Метрики и журналы платформы также можно отправлять определенным партнерам Azure Monitor. Сначала для своей подписки необходимо настроить интеграцию с партнерами. Доступные параметры зависят от партнера. Дополнительные сведения см. в статье Интеграция Azure Monitor с продуктами партнеров.

Анализ метрик

Список всех метрик поддержки Azure Monitor, в том числе Хранилища BLOB-объектов Azure, см. на странице Поддерживаемые метрики Azure Monitor.

Вы можете анализировать метрики для службы хранилища Azure с помощью метрик из других служб Azure, используя обозреватель метрик. Откройте обозреватель метрик, выбрав Метрики в меню Azure Monitor. Подробные сведения об использовании этого средства см. на странице Начало работы с обозревателем метрик Azure.

В этом примере показано, как просмотреть транзакции на уровне учетной записи.

Снимок экрана осуществления доступа к метрикам на портале Azure

Для метрик с поддержкой измерений можно выполнить фильтрацию по нужному значению измерения. В этом примере объясняется, как просмотреть транзакции на уровне учетной записи для определенной операции, выбрав значения для измерения Имя API.

Снимок экрана осуществления доступа к метрикам с поддержкой измерений на портале Azure

Полный список измерений, поддерживаемых службой хранилища Azure, см. в разделе Измерения метрик.

Метрики для Хранилища BLOB-объектов Azure находятся в следующих пространствах имен:

  • Microsoft.Storage/storageAccounts
  • Microsoft.Storage/storageAccounts/blobServices

Анализ метрик с помощью кода

Azure Monitor предоставляет пакет SDK для .NET для считывания определения и значений метрик. Пример кода демонстрирует использование пакета SDK с различными параметрами. Необходимо использовать 0.18.0-preview или более позднюю версию для метрик хранилища.

В этих примерах замените заполнитель <resource-ID> на идентификатор ресурса всей учетной записи хранения или службы хранилища BLOB-объектов. Эти ИД ресурса можно найти на странице Конечные точки учетной записи хранения на портале Azure.

Замените переменную <subscription-ID> на ИД своей подписки. Инструкции по получению значений для <tenant-ID>, <application-ID> и <AccessKey> см. на странице Создание приложения Azure Active Directory и субъекта-службы с доступом к ресурсам с помощью портала.

Отображение определения метрик на уровне учетной записи

В приведенном ниже примере показано, как получить список определений метрик на уровне учетной записи.

    public static async Task ListStorageMetricDefinition()
    {
        var resourceId = "<resource-ID>";
        var subscriptionId = "<subscription-ID>";
        var tenantId = "<tenant-ID>";
        var applicationId = "<application-ID>";
        var accessKey = "<AccessKey>";

        MonitorManagementClient readOnlyClient = AuthenticateWithReadOnlyClient(tenantId, applicationId, accessKey, subscriptionId).Result;
        IEnumerable<MetricDefinition> metricDefinitions = await readOnlyClient.MetricDefinitions.ListAsync(resourceUri: resourceId, cancellationToken: new CancellationToken());

        foreach (var metricDefinition in metricDefinitions)
        {
            // Enumrate metric definition:
            //    Id
            //    ResourceId
            //    Name
            //    Unit
            //    MetricAvailabilities
            //    PrimaryAggregationType
            //    Dimensions
            //    IsDimensionRequired
        }
    }

Считывание значений метрик на уровне учетной записи

В приведенном ниже примере показано, как считать данные UsedCapacity на уровне учетной записи.

    public static async Task ReadStorageMetricValue()
    {
        var resourceId = "<resource-ID>";
        var subscriptionId = "<subscription-ID>";
        var tenantId = "<tenant-ID>";
        var applicationId = "<application-ID>";
        var accessKey = "<AccessKey>";

        MonitorClient readOnlyClient = AuthenticateWithReadOnlyClient(tenantId, applicationId, accessKey, subscriptionId).Result;

        Microsoft.Azure.Management.Monitor.Models.Response Response;

        string startDate = DateTime.Now.AddHours(-3).ToUniversalTime().ToString("o");
        string endDate = DateTime.Now.ToUniversalTime().ToString("o");
        string timeSpan = startDate + "/" + endDate;

        Response = await readOnlyClient.Metrics.ListAsync(
            resourceUri: resourceId,
            timespan: timeSpan,
            interval: System.TimeSpan.FromHours(1),
            metricnames: "UsedCapacity",

            aggregation: "Average",
            resultType: ResultType.Data,
            cancellationToken: CancellationToken.None);

        foreach (var metric in Response.Value)
        {
            // Enumrate metric value
            //    Id
            //    Name
            //    Type
            //    Unit
            //    Timeseries
            //        - Data
            //        - Metadatavalues
        }
    }

Считывание значений многомерных метрик

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

В приведенном ниже примере показано, как считать данные в метрике, поддерживающей многомерные значения.

    public static async Task ReadStorageMetricValueTest()
    {
        // Resource ID for blob storage
        var resourceId = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{storageAccountName}/blobServices/default";
        var subscriptionId = "<subscription-ID}";
        // How to identify Tenant ID, Application ID and Access Key: https://azure.microsoft.com/documentation/articles/resource-group-create-service-principal-portal/
        var tenantId = "<tenant-ID>";
        var applicationId = "<application-ID>";
        var accessKey = "<AccessKey>";

        MonitorManagementClient readOnlyClient = AuthenticateWithReadOnlyClient(tenantId, applicationId, accessKey, subscriptionId).Result;

        Microsoft.Azure.Management.Monitor.Models.Response Response;

        string startDate = DateTime.Now.AddHours(-3).ToUniversalTime().ToString("o");
        string endDate = DateTime.Now.ToUniversalTime().ToString("o");
        string timeSpan = startDate + "/" + endDate;
        // It's applicable to define meta data filter when a metric support dimension
        // More conditions can be added with the 'or' and 'and' operators, example: BlobType eq 'BlockBlob' or BlobType eq 'PageBlob'
        ODataQuery<MetadataValue> odataFilterMetrics = new ODataQuery<MetadataValue>(
            string.Format("BlobType eq '{0}'", "BlockBlob"));

        Response = readOnlyClient.Metrics.List(
                        resourceUri: resourceId,
                        timespan: timeSpan,
                        interval: System.TimeSpan.FromHours(1),
                        metricnames: "BlobCapacity",
                        odataQuery: odataFilterMetrics,
                        aggregation: "Average",
                        resultType: ResultType.Data);

        foreach (var metric in Response.Value)
        {
            //Enumrate metric value
            //    Id
            //    Name
            //    Type
            //    Unit
            //    Timeseries
            //        - Data
            //        - Metadatavalues
        }
    }

анализ журналов;

Доступ к журналам ресурсов можно получить с помощью большого двоичного объекта в учетной записи хранения, данных событий или запросов Log Analytic.

Подробные сведения о полях, которые отображаются в этих журналах, см. в справочнике по данным мониторинга Хранилища BLOB-объектов Azure.

Записи журнала создаются только при получении запроса к конечной точке службы. Например, при обнаружении действия учетной записи хранения в конечной точке службы BLOB-объектов, но не в ее конечных точках служб таблиц или очередей, создаются журналы, которые относятся только к службе хранилища BLOB-объектов. Журналы службы хранилища Azure содержат подробные сведения об успешных и неудачных запросах к службе хранилища. Эта информация может использоваться для мониторинга отдельных запросов и диагностики неполадок в службе хранилища. Запросы вносятся в журнал наилучшим возможным образом.

Ведение журналов запросов, прошедших аутентификацию

Регистрируются запросы, прошедшие аутентификацию, следующих типов:

  • Успешные запросы.
  • Неудачные запросы, в том числе из-за ошибок, связанных с временем ожидания, регулированием, сетью, авторизацией и др.
  • Запросы, в которых используется подписанный URL-адрес (SAS) или OAuth, в том числе неудачные и успешные запросы.
  • Запросы к данным аналитики (классические данные журнала в контейнере $logs и данные метрик класса в таблицах $metric).

Запросы, выполненные самой службой хранилища BLOB-объектов, например создание или удаление журнала, не регистрируются. Полный список регистрируемых данных приведен на страницах об операциях с протоколированием и сообщениях о состоянии службы хранилища и формате журналов службы хранилища.

Ведение журналов анонимных запросов

Регистрируются анонимные запросы следующих типов:

  • Успешные запросы.
  • ошибки сервера;
  • Ошибки времени ожидания для клиента и сервера.
  • Неудачные запросы GET с кодом ошибки 304 (не изменено).

Остальные неудачные анонимные запросы не регистрируются. Полный список регистрируемых данных приведен на страницах об операциях с протоколированием и сообщениях о состоянии службы хранилища и формате журналов службы хранилища.

Получение доступа к журналам в учетной записи хранения

Журналы отображаются как большие двоичные объекты, хранящиеся в контейнере в целевой учетной записи хранения. Данные собираются и хранятся внутри одного большого двоичного объекта в качестве полезных данных JSON с разделителем-строкой. Имя большого двоичного объекта соответствует следующему соглашению об именовании.

https://<destination-storage-account>.blob.core.windows.net/insights-logs-<storage-operation>/resourceId=/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<source-storage-account>/blobServices/default/y=<year>/m=<month>/d=<day>/h=<hour>/m=<minute>/PT1H.json

Ниже приведен пример:

https://mylogstorageaccount.blob.core.windows.net/insights-logs-storagewrite/resourceId=/subscriptions/
208841be-a4v3-4234-9450-08b90c09f4/resourceGroups/myresourcegroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount/blobServices/default/y=2019/m=07/d=30/h=23/m=12/PT1H.json

Получение доступа к журналам в концентраторе событий

Журналы, отправленные в концентратор событий, не сохраняются в виде файла, однако вы можете проверить, получил ли концентратор событий данные журнала. На портале Azure перейдите в концентратор событий и убедитесь, что количество входящих сообщений больше нуля.

Журналы аудита

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

Получение доступа к журналам в рабочей области Log Analytics

Доступ к журналам, отправляемым в рабочую область Log Analytics, можно получить с помощью запросов журналов Azure Monitor.

Дополнительные сведения см. в статье Начало работы с Log Analytics в Azure Monitor.

Данные хранятся в таблице StorageBlobLog. Журналы для Data Lake Storage 2-го поколения не отображаются в выделенной таблице. Это связано с тем, что Data Lake Storage 2-го поколения не является службой. Это набор возможностей, которые можно включить в учетной записи хранения. Если вы включили эти возможности, журналы будут по прежнему отображаться в таблице StorageBlobLog.

Примеры запросов Kusto

Ниже приведены некоторые запросы, которые можно ввести в поле Поиск по журналам, чтобы выполнить мониторинг хранилища BLOB-объектов. Эти запросы поддерживают новый язык.

Важно!

Когда вы выберете Журналы в меню группы ресурсов учетной записи хранения, откроется Log Analytics с областью запроса, для которой задана текущая группа ресурсов. Это означает, что запросы к журналам будут содержать данные только из этого ресурса. Если требуется выполнить запрос, включающий данные из других баз данных или служб Azure, выберите в меню Azure Monitor пункт Журналы. Подробные сведения см. в статье Область запросов журнала и временной диапазон в Azure Monitor Log Analytics.

Используйте следующие запросы для мониторинга учетных записей хранения Azure:

  • Для отображения 10 наиболее распространенных ошибок за последние три дня.

    StorageBlobLogs
    | where TimeGenerated > ago(3d) and StatusText !contains "Success"
    | summarize count() by StatusText
    | top 10 by count_ desc
    
  • Для отображения основных 10 операций, вызвавших наибольшее количество ошибок за последние три дня.

    StorageBlobLogs
    | where TimeGenerated > ago(3d) and StatusText !contains "Success"
    | summarize count() by OperationName
    | top 10 by count_ desc
    
  • Для отображения основных 10 операций с наибольшей сквозной задержкой за последние три дня.

    StorageBlobLogs
    | where TimeGenerated > ago(3d)
    | top 10 by DurationMs desc
    | project TimeGenerated, OperationName, DurationMs, ServerLatencyMs, ClientLatencyMs = DurationMs - ServerLatencyMs
    
  • Для отображения всех операций, вызвавших ошибки регулирования на стороне сервера за последние три дня.

    StorageBlobLogs
    | where TimeGenerated > ago(3d) and StatusText contains "ServerBusy"
    | project TimeGenerated, OperationName, StatusCode, StatusText
    
  • Для отображения всех запросов с анонимным доступом за последние три дня.

    StorageBlobLogs
    | where TimeGenerated > ago(3d) and AuthenticationType == "Anonymous"
    | project TimeGenerated, OperationName, AuthenticationType, Uri
    
  • Для создания круговой диаграммы операций, используемых за последние три дня.

    StorageBlobLogs
    | where TimeGenerated > ago(3d)
    | summarize count() by OperationName
    | sort by count_ desc
    | render piechart
    

Поддерживаемые компоненты

На поддержку данной функции может повлиять включение протокола Data Lake Storage 2-го поколения, протокола сетевой файловой системы (NFS) 3.0 или протокола SFTP.

Если вы включили любую из этих возможностей, см. Сведения о поддержке функций хранилища BLOB-объектов в учетных записях хранения Azure, чтобы оценить поддержку данной функции.

ВОПРОСЫ И ОТВЕТЫ

Поддерживает ли служба хранилища Microsoft Azure метрики для управляемых и неуправляемых дисков?

Нет. Служба "Вычисления Azure" поддерживает метрики на дисках. Дополнительные сведения см. на странице Дисковые метрики для управляемых и неуправляемых дисков.

Дальнейшие действия

Приступайте к работе с использованием любого из этих руководств.

Руководство Описание
Сбор метрик из контейнеров хранилища BLOB-объектов Azure Создание диаграмм, на которых показаны метрики (содержит пошаговые инструкции).
Мониторинг, диагностика и устранение неполадок службы хранилища Azure Устранение неполадок с учетной записью хранения (содержит пошаговые инструкции).
Мониторинг хранилища с помощью аналитики хранилища Azure Monitor Единое представление производительности, емкости и доступности хранилища
Рекомендации по мониторингу Хранилища BLOB-объектов Azure Руководство по общим сценариям мониторинга и устранения неполадок.
Начало работы с обозревателем метрик Azure Знакомство с обозревателем метрик.
Обзор Log Analytics в Azure Monitor Знакомство с Log Analytics.
Обзор метрик в Azure Monitor Основные сведения о метриках и измерениях метрик
Обзор журналов Azure Monitor Основные сведения о журналах и способы их сбора и анализа
Переход на метрики Azure Monitor Переход от метрик Аналитики Службы хранилища на метрики в Azure Monitor.
Справочные материалы по данным мониторинга Хранилища BLOB-объектов Azure Справочные материалы по журналам и метрикам, созданным Хранилищем BLOB-объектов Azure
Устранение проблем с производительностью Распространенные проблемы с производительностью и рекомендации по их устранению.
Устранение неполадок с доступностью Распространенные проблемы с доступностью и рекомендации по их устранению.
Устранение ошибок клиентского приложения Распространенные проблемы с подключением клиентов и способы их устранения.