Устранение неполадок с метриками хранилища
Важно понимать метрики хранилища, чтобы узнать, какие метрики следует изучить и какие метрики указывают на состояние учетной записи хранения. С помощью метрик службы хранилища Azure можно анализировать тенденции использования приложений и диагностировать возможные проблемы с учетной записью хранения.
В этом уроке вы узнаете о метриках в Azure Monitor, о том, какие сведения он сообщает и как можно использовать метрики, которые он предоставляет для выявления проблем с тем, как приложения используют службу хранилища Azure.
Общие сведения о метриках
Метрики хранилища записываются автоматически, поэтому вам не нужно включить какой-либо параметр, чтобы начать их сбор. Служба хранилища Azure создает эти метрики и хранится на платформе данных Azure Monitor. Azure Monitor собирает емкости метрик и транзакций метрик на уровне учетной записи хранения и уровне службы хранилища (например, хранилище BLOB-объектов или хранилище файлов).
Метрики емкости
Метрики емкости описывают хранилище данных (например, байты, сохраненные, байты по-прежнему доступны для хранилища). Значения метрик емкости обновляются ежедневно (до 24 часов). Период времени, определяемый временным зерном, для которого представлены значения метрик. Поддерживаемый временной интервал для всех метрик производительности составляет один час (PT1H).
Метрики транзакций
Метрики транзакций описывают действия учетной записи (например, количество транзакций или число операций чтения байтов). Метрики транзакций передаются при каждом запросе к учетной записи хранилища из Azure Storage в Azure Monitor. В случае отсутствия активности в учетной записи хранения не будет данных о метриках транзакций за этот период. Временной гранулят определяет интервал времени, в котором отображаются значения метрик. Поддерживаемые интервалы времени для всех метрик транзакций: PT1H и PT1M.
Анатомия значения метрики
Вы можете получить значения метрик, указав диапазон времени, интервал времени, пространство имен метрик, имя метрики и тип агрегирования. Ниже приведено описание каждого элемента:
Элемент | Описание |
---|---|
Диапазон времени | Период времени, который требуется записать (например, вчера или последний месяц). |
Интервал времени | Степень детализации времени, отражаемого значением метрик. (например, значение, которое отражает один час или один день). |
Пространство имен метрик | Пространство имен метрики. Это указывает, следует ли получить метрику на уровне учетной записи хранения или на уровне определенной службы хранилища (например, хранилище файлов). |
Имя метрики | Интересующая вас метрика (например, исходящий трафик). |
Агрегация | Как вы хотите вычислить это значение. В большинстве случаев вы выберете сумму или среднее значение. |
Для метрик, поддерживающих измерения, можно отфильтровать метрики с требуемым значением измерения. Измерения — это пары "имя-значение", которые содержат дополнительные данные для описания значения метрик. Например, тип проверки подлинности — это измерение для транзакций. Если вы заинтересованы в просмотре только транзакций, авторизованных с помощью ключа учетной записи, можно использовать измерение проверки подлинности и фильтровать ключ учетной записи.
Измерение ResponseType показывает частоту успешности и сбоя, а также причины сбоя, такие как время ожидания, регулирование, сетевые ошибки, сбой авторизации и т. д. Эта информация может дать вам хорошее представление о том, почему производительность ваших приложений может страдать. Например, частые ошибки снижения пропускной способности и тайм-ауты могут указывать на высокий уровень конкуренции за ограниченные ресурсы, и может потребоваться переработать вашу систему, чтобы использовать Premium вместо Standard уровня для учетных записей хранения. Вам, возможно, также потребуется распределить нагрузку между несколькими учетными записями хранения и/или выбрать другую схему организации для любых контейнеров и таблиц блобов, которые использует ваше приложение.
Просмотр и анализ метрик
Значения метрик можно получить с помощью портала Azure, PowerShell, Azure CLI или с помощью кода, предназначенного для клиентских библиотек Azure.
Портал Azure
В предыдущем уроке представлены различные способы просмотра метрик на портале Azure. Элементы, которые отображаются в этих представлениях, можно определить с помощью эксплорера метрик. В обозревателе метрик можно указать диапазон времени, интервал времени, пространство имен метрик, метрики и агрегирование для каждого значения, которое требуется проанализировать. Можно также отфильтровать по измерениям. Вы можете создавать диаграммы на основе этих метрик, а затем закреплять их на панелях мониторинга для простого доступа в будущем.
На следующем рисунке показана конфигурация метрик, которая получает общее количество транзакций за последние 24 часа. Каждая точка данных отражает 15 минут данных.
На следующем рисунке показан API параметр, используемый для получения только операций чтения.
Командная строка и скрипты
Вы можете получить метрики, выполнив команды с помощью командной строки или упорядочив команды в скрипте, который можно запустить позже в рамках запланированной задачи (PowerShell) или задания (Azure CLI).
PowerShell
Значения метрик можно получить с помощью cmdlet Get-AzMetric. В этом примере возвращается общее количество транзакций чтения для учетной записи хранения.
$resourceId = "<resource-ID>"
$dimFilter = [String](New-AzMetricFilter -Dimension ApiName -Operator eq -Value "GetBlob" 3> $null)
Get-AzMetric -ResourceId $resourceId -MetricName Transactions -TimeGrain 01:00:00 -MetricFilter $dimFilter -AggregationType "Total"
Azure CLI
Значения метрик можно получить с помощью команды az monitor metrics list. В этом примере возвращается общее количество транзакций чтения для учетной записи хранилища.
az monitor metrics list --resource <resource-ID> --metric "Transactions" --interval PT1H --filter "ApiName eq 'GetBlob' " --aggregation "Total"
Код приложения
Вы можете получить значения метрик, написав код, использующий любой из пакетов SDK Azure. В следующем примере используется Пакет SDK Azure для .NET для получения среднего объема BLOB-хранилища, используемого в учетной записи хранения за указанный период времени.
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}";
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;
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)
{
// process value here.
}
}