Monitoramento, diagnóstico e solução de problemas de Armazenamento do Microsoft AzureMonitor, diagnose, and troubleshoot Microsoft Azure Storage

Visão geralOverview

Questões de diagnóstico e de solução de problemas em um aplicativo distribuído hospedado em um ambiente de nuvem podem ser mais complexas que em ambientes tradicionais.Diagnosing and troubleshooting issues in a distributed application hosted in a cloud environment can be more complex than in traditional environments. Aplicativos podem ser implantados em uma infraestrutura PaaS ou IaaS, no local, em um dispositivo móvel ou em alguma combinação desses ambientes.Applications can be deployed in a PaaS or IaaS infrastructure, on premises, on a mobile device, or in some combination of these environments. Normalmente, o tráfego de rede do seu aplicativo pode passar por redes privadas e públicas e o seu aplicativo pode usar múltiplas tecnologias de armazenamento tais como: Tabelas de Armazenamento, Blobs, Filas e Arquivos do Microsoft Azure, além de outros repositórios de dados, tais como: bancos de dados de documentos e relacionais.Typically, your application's network traffic may traverse public and private networks and your application may use multiple storage technologies such as Microsoft Azure Storage Tables, Blobs, Queues, or Files in addition to other data stores such as relational and document databases.

Para gerenciar esses aplicativos com êxito, monitore-os de forma proativa e entenda todos os aspectos de como se faz o diagnóstico e a solução de problemas deles e de suas tecnologias dependentes.To manage such applications successfully you should monitor them proactively and understand how to diagnose and troubleshoot all aspects of them and their dependent technologies. Como usuário dos serviços de Armazenamento do Azure, monitore continuamente o serviços de Armazenamento que o seu aplicativo utiliza para qualquer mudança inesperada em comportamento (como um tempo maior de resposta do que o normal) e faça o login para coletar mais dados detalhados para analisar o problema em profundidade.As a user of Azure Storage services, you should continuously monitor the Storage services your application uses for any unexpected changes in behavior (such as slower than usual response times), and use logging to collect more detailed data and to analyze a problem in depth. As informações de diagnósticos que você obtiver tanto do monitoramento como do registro em log irão ajudá-lo a determinar a raiz do problema que o seu aplicativo encontrou.The diagnostics information you obtain from both monitoring and logging will help you to determine the root cause of the issue your application encountered. Você poderá solucionar o problema e determinar as etapas apropriadas que você pode tomar para corrigi-lo.Then you can troubleshoot the issue and determine the appropriate steps you can take to remediate it. O Armazenamento do Azure é um serviço básico do Azure e é parte importante da maioria das soluções que os clientes implantam para a infraestrutura Azure.Azure Storage is a core Azure service, and forms an important part of the majority of solutions that customers deploy to the Azure infrastructure. O Armazenamento do Azure inclui capacidades de simplificar questões de monitoramento, diagnóstico e de soluções de problemas de armazenamento em seus aplicativos em nuvem.Azure Storage includes capabilities to simplify monitoring, diagnosing, and troubleshooting storage issues in your cloud-based applications.

Observação

O Arquivos do Azure não dá suporte ao registro em log neste momento.Azure Files does not support logging at this time.

Para obter um guia prático para solução de problemas de ponta a ponta em aplicativos de armazenamento do Azure, consulte Solução de problemas de ponta a ponta usando métricas de armazenamento do Azure e registro em log, AzCopy e Message Analyzer.For a hands-on guide to end-to-end troubleshooting in Azure Storage applications, see End-to-End Troubleshooting using Azure Storage Metrics and Logging, AzCopy, and Message Analyzer.

IntroduçãoIntroduction

Esse guia mostra como você usa recursos como o Armazenamento Analítico do Azure, a biblioteca de armazenamento do cliente Azure com login do lado do cliente e outras ferramentas de terceiros para identificar, diagnosticar e solucionar problemas relacionados ao armazenamento do Azure.This guide shows you how to use features such as Azure Storage Analytics, client-side logging in the Azure Storage Client Library, and other third-party tools to identify, diagnose, and troubleshoot Azure Storage related issues.

Esse guia deve ser lido primeiramente pelos desenvolvedores de serviços online que usam os Serviços Armazenamento do Azure e profissionais de TI para gerenciar esses serviços online.This guide is intended to be read primarily by developers of online services that use Azure Storage Services and IT Pros responsible for managing such online services. Os objetivos desse guia são:The goals of this guide are:

  • Ajudar a manter a integridade e o desempenho de suas contas de Armazenamento do Azure.To help you maintain the health and performance of your Azure Storage accounts.
  • Oferecer os processos e as ferramentas necessários para ajudá-lo a decidir se um problema em um aplicativo está ou não relacionado ao Armazenamento do Microsoft Azure.To provide you with the necessary processes and tools to help you decide whether an issue or problem in an application relates to Azure Storage.
  • Oferecer diretrizes de ações para resolver problemas relacionados ao armazenamento do Azure.To provide you with actionable guidance for resolving problems related to Azure Storage.

Como esse guia está organizadoHow this guide is organized

A seção "Monitoramento do seu serviço de armazenamento“ descreve como monitorar a integridade e o desempenho de seus serviços de armazenamento do Azure usando as métricas analíticas de armazenamento do Azure (Métricas de Armazenamento).The section "Monitoring your storage service" describes how to monitor the health and performance of your Azure Storage services using Azure Storage Analytics Metrics (Storage Metrics).

A seção "Diagnóstico de problemas de armazenamento" descreve como diagnosticar os problemas ao usar o log de armazenamento analítico (Log de Armazenamento).The section "Diagnosing storage issues" describes how to diagnose issues using Azure Storage Analytics Logging (Storage Logging). Ela também descreve como habilitar o log do lado do cliente usando as facilidades em uma das bibliotecas do cliente, como a Bibliotecas de Cliente de Armazenamento para .NET ou o SDK do Azure para Java.It also describes how to enable client-side logging using the facilities in one of the client libraries such as the Storage Client Library for .NET or the Azure SDK for Java.

A seção "Rastreamento de ponta a ponta" descreve como você correlaciona as informações contidas em vários arquivos de log e em dados de métrica.The section "End-to-end tracing" describes how you can correlate the information contained in various log files and metrics data.

A seção "Diretrizes de solução de problemas" oferece diretrizes para a solução dos problemas mais comuns relacionados a armazenamento que você possa encontrar.The section "Troubleshooting guidance" provides troubleshooting guidance for some of the common storage-related issues you might encounter.

Os "Anexos" incluem informações sobre o uso de ferramentas como o Wireshark e Netmon para a análise de dados de pacote de rede, Fiddler para a análise de mensagens HTTP/HTTPS e o Microsoft Message Analyzer para correlacionar os dados de log.The "Appendices" include information about using other tools such as Wireshark and Netmon for analyzing network packet data, Fiddler for analyzing HTTP/HTTPS messages, and Microsoft Message Analyzer for correlating log data.

Monitoramento do seu serviço de armazenamentoMonitoring your storage service

Se você está acostumado com o monitoramento de desempenho do Windows, é possível entender as Métricas de Armazenamento como equivalentes aos contadores do Monitor de Desempenho do Windows.If you are familiar with Windows performance monitoring, you can think of Storage Metrics as being an Azure Storage equivalent of Windows Performance Monitor counters. Nas Métricas de Armazenamento, você encontrará um grupo detalhado de métricas (contadores com terminologia de Monitor de Desempenho do Windows) como disponibilidade de serviço, número total de solicitações de serviço ou percentual de êxito em solicitações de serviço.In Storage Metrics, you will find a comprehensive set of metrics (counters in Windows Performance Monitor terminology) such as service availability, total number of requests to service, or percentage of successful requests to service. Para obter uma lista completa das métricas disponíveis, confira Esquema da tabela de métricas da análise do armazenamento.For a full list of the available metrics, see Storage Analytics Metrics Table Schema. Você pode especificar se deseja que o serviço de armazenamento colete e agregue as métricas a cada hora e ou cada minuto.You can specify whether you want the storage service to collect and aggregate metrics every hour or every minute. Para mais informações sobre como habilitar as métricas e monitorar suas contas de armazenamento, confira Habilitação das métricas de armazenamento e exibição dos dados de métrica.For more information about how to enable metrics and monitor your storage accounts, see Enabling storage metrics and viewing metrics data.

Você pode escolher quais intervalos de hora das métricas que você quer exibir no Portal do Azure e configurar as regras de notificação dos administradores por email caso a métrica a cada hora ultrapasse um valor particular.You can choose which hourly metrics you want to display in the Azure portal and configure rules that notify administrators by email whenever an hourly metric exceeds a particular threshold. Para obter mais informações, confira Receber notificações de alerta.For more information, see Receive Alert Notifications.

Recomendamos que você examine Azure monitor para armazenamento (versão prévia).We recommend you review Azure Monitor for Storage (preview). É um recurso do Azure Monitor que oferece monitoramento abrangente de suas contas de armazenamento do Azure, fornecendo uma exibição unificada de desempenho, capacidade e disponibilidade dos serviços de armazenamento do Azure.It is a feature of Azure Monitor that offers comprehensive monitoring of your Azure Storage accounts by delivering a unified view of your Azure Storage services performance, capacity, and availability. Ele não exige que você habilite ou configure nada, e você pode exibir imediatamente essas métricas dos gráficos interativos predefinidos e de outras visualizações incluídas.It does not require you to enable or configure anything, and you can immediately view these metrics from the pre-defined interactive charts and other visualizations included.

O serviço de armazenamento coleta as métricas usando o melhor esforço, porém pode não registrar todas as operações de armazenamento.The storage service collects metrics using a best effort, but may not record every storage operation.

No Portal do Azure, você pode exibir as métricas de disponibilidade, total de solicitações e números das médias de latência para uma conta de armazenamento.In the Azure portal, you can view metrics such as availability, total requests, and average latency numbers for a storage account. Uma regra de notificação também foi configurada para alertar um administrador caso uma disponibilidade caia abaixo de um certo nível.A notification rule has also been set up to alert an administrator if availability drops below a certain level. Para exibir esses dados uma possível área para investigação é a tabela de porcentagem de êxito estar abaixo de 100% (para obter mais informações, consulte a seção "As métricas mostram uma baixa PercentSuccess ou as entradas de log analíticas têm operações com status de transação de ClientOtherErrors").From viewing this data, one possible area for investigation is the table service success percentage being below 100% (for more information, see the section "Metrics show low PercentSuccess or analytics log entries have operations with transaction status of ClientOtherErrors").

Monitore continuamente seus aplicativos do Azure para garantir que sua integridade e desempenho estejam como esperados ao:You should continuously monitor your Azure applications to ensure they are healthy and performing as expected by:

  • Estabelecer algumas métricas de linha de base para aplicativos que permitirão que você compare os dados atuais e identifique qualquer mudança significativa em comportamento do armazenamento do Azure e seu aplicativo.Establishing some baseline metrics for application that will enable you to compare current data and identify any significant changes in the behavior of Azure storage and your application. Os valores para as métricas de linha de base irão, em muitos casos, ser específicos para cada aplicativo e você deverá estabelecê-los ao realizar um teste de desempenho do seu aplicativo.The values of your baseline metrics will, in many cases, be application specific and you should establish them when you are performance testing your application.
  • Registrar métricas a cada minuto e usá-las para monitorar ativamente cada erros e anomalias inesperados tais como: picos em contagem de erros ou taxas de solicitação.Recording minute metrics and using them to monitor actively for unexpected errors and anomalies such as spikes in error counts or request rates.
  • Registrar métricas a cada hora e usá-las para monitorar os valores médios como: médias de contagem de erros ou taxas de solicitação.Recording hourly metrics and using them to monitor average values such as average error counts and request rates.
  • Investigar os potenciais problemas usando as ferramentas de diagnóstico como discutido anteriormente na seção "Diagnóstico de problemas de armazenamento“.Investigating potential issues using diagnostics tools as discussed later in the section "Diagnosing storage issues."

Os gráficos na imagem a seguir ilustram como a média que acontece nas métricas de hora em hora podem esconder picos em atividade.The charts in the following image illustrate how the averaging that occurs for hourly metrics can hide spikes in activity. As métricas de hora em hora parecem mostrar uma taxa constante de solicitações, enquanto as métricas de minuto em minuto revelam as flutuações que estão realmente acontecendo.The hourly metrics appear to show a steady rate of requests, while the minute metrics reveal the fluctuations that are really taking place.

O restante desta seção descreve quais as métricas que você deve monitorar e o porquê.The remainder of this section describes what metrics you should monitor and why.

Monitoramento da integridade do serviçoMonitoring service health

Você pode usar o Portal do Azure para exibir a integridade do serviço de armazenamento (e outros serviços do Azure) em todas as regiões do Azure no mundo.You can use the Azure portal to view the health of the Storage service (and other Azure services) in all the Azure regions around the world. O monitoramento permite que você veja imediatamente se um problema fora do seu controle está afetando o serviço de armazenamento na região em que você usa o seu aplicativo.Monitoring enables you to see immediately if an issue outside of your control is affecting the Storage service in the region you use for your application.

O Portal do Azure pode também fornecer notificações de incidentes que afetam os diversos serviços do Azure.The Azure portal can also provide notifications of incidents that affect the various Azure services. Observação: essa informação estava disponível anteriormente, juntamente com os dados históricos, no Painel de Serviços do Azure.Note: This information was previously available, along with historical data, on the Azure Service Dashboard.

Enquanto o Portal do Azure coleta informações sobre integridade de dentro dos centros de dados do Azure (monitoramento inside-out), você também pode considerar a adoção de uma abordagem outside-in para gerar transações sintéticas que acessam periodicamente o seu aplicativo Web hospedado no Azure de vários locais.While the Azure portal collects health information from inside the Azure datacenters (inside-out monitoring), you could also consider adopting an outside-in approach to generate synthetic transactions that periodically access your Azure-hosted web application from multiple locations. Os serviços oferecidos pelo Dynatrace e Application Insights no Azure DevOps são exemplos dessa abordagem.The services offered by Dynatrace and Application Insights for Azure DevOps are examples of this approach. Para obter mais informações sobre o Application Insights para Azure DevOps, veja o "Apêndice 5: Monitoramento com o Application Insights no Azure DevOps".For more information about Application Insights for Azure DevOps, see the appendix "Appendix 5: Monitoring with Application Insights for Azure DevOps."

Monitoramento de capacidadeMonitoring capacity

As métricas de armazenamento apenas armazena as métricas de capacidade do serviço blob porque os blobs normalmente são responsáveis pela maior proporção dos dados armazenados (no momento em que se escreve, não é possível usar as métricas de armazenamento para monitorar a capacidade de suas tabelas e filas).Storage Metrics only stores capacity metrics for the blob service because blobs typically account for the largest proportion of stored data (at the time of writing, it is not possible to use Storage Metrics to monitor the capacity of your tables and queues). Você pode encontrar esses dados na tabela $MetricsCapacityBlob se você tiver habilitado o monitoramento para o serviço blob.You can find this data in the $MetricsCapacityBlob table if you have enabled monitoring for the Blob service. As métricas de armazenamento registram esses dados uma vez ao dia e você pode usar o valor do RowKey para determinar se uma linha contém uma entidade que se relaciona aos dados do usuário (dados do valor) ou dados analíticos (valor analítico).Storage Metrics records this data once per day, and you can use the value of the RowKey to determine whether the row contains an entity that relates to user data (value data) or analytics data (value analytics). Cada entidade armazenada contém informações sobre a quantidade de armazenamento usada (Capacidade medida em bytes) e o número atual de contêineres (ContainerCount) e blobs (ObjectCount) em uso em cada conta de armazenamento.Each stored entity contains information about the amount of storage used (Capacity measured in bytes) and the current number of containers (ContainerCount) and blobs (ObjectCount) in use in the storage account. Para saber mais sobre as métricas de capacidade armazenadas na tabela $MetricsCapacityBlob , consulte Esquema da tabela de métricas da análise de armazenamento.For more information about the capacity metrics stored in the $MetricsCapacityBlob table, see Storage Analytics Metrics Table Schema.

Observação

Monitore esses valores por meio de um aviso antecipado de que você está se aproximando dos limites de capacidade de sua conta de armazenamento.You should monitor these values for an early warning that you are approaching the capacity limits of your storage account. No Portal do Azure, você pode adicionar as regras de alertas para notificá-lo se o uso de armazenamento agregado excede ou está abaixo dos limites que você especificou.In the Azure portal, you can add alert rules to notify you if aggregate storage use exceeds or falls below thresholds that you specify.

Para ajudar na estimativa do tamanho dos diversos objetos de armazenamento, tais como os blobs, consulte a postagem no blog Compreendendo a cobrança do Armazenamento do Azure – Largura de banda, transações e capacidade.For help estimating the size of various storage objects such as blobs, see the blog post Understanding Azure Storage Billing – Bandwidth, Transactions, and Capacity.

Monitoramento de disponibilidadeMonitoring availability

Monitore a disponibilidade dos serviços de monitoramento em sua conta de armazenamento monitorando os valores na coluna de Disponibilidade nas tabelas métricas de hora em hora ou de minuto em minuto — $MetricsHourPrimaryTransactionsBlob, $MetricsHourPrimaryTransactionsTable, $MetricsHourPrimaryTransactionsQueue, $MetricsMinutePrimaryTransactionsBlob, $MetricsMinutePrimaryTransactionsTable, $MetricsMinutePrimaryTransactionsQueue, $MetricsCapacityBlob.You should monitor the availability of the storage services in your storage account by monitoring the value in the Availability column in the hourly or minute metrics tables — $MetricsHourPrimaryTransactionsBlob, $MetricsHourPrimaryTransactionsTable, $MetricsHourPrimaryTransactionsQueue, $MetricsMinutePrimaryTransactionsBlob, $MetricsMinutePrimaryTransactionsTable, $MetricsMinutePrimaryTransactionsQueue, $MetricsCapacityBlob. A coluna Disponibilidade contém um valor percentual que indica a disponibilidade do serviço ou da operação API representada pela linda (a RowKey mostra se uma linha contém as métricas para o serviço como um todo ou para uma operação API específica).The Availability column contains a percentage value that indicates the availability of the service or the API operation represented by the row (the RowKey shows if the row contains metrics for the service as a whole or for a specific API operation).

Qualquer valor inferior a 100% indica que houve falha em algumas solicitações de armazenamento.Any value less than 100% indicates that some storage requests are failing. Você pode ver porque estão falhando ao examinar as outras colunas nos dados de métricas que mostras os números de solicitações com diferentes tipos de erros, tais como ServerTimeoutError.You can see why they are failing by examining the other columns in the metrics data that show the numbers of requests with different error types such as ServerTimeoutError. Espere para ver a Disponibilidade cair temporariamente abaixo de 100% devido a razões como tempo limite do servidor transitório enquanto o serviço muda as partições para melhor balancear a carga da solicitação; a lógica de nova tentativa no aplicativo do seu cliente deve lidar com tais condições intermitentes.You should expect to see Availability fall temporarily below 100% for reasons such as transient server timeouts while the service moves partitions to better load-balance request; the retry logic in your client application should handle such intermittent conditions. O artigo Operações registradas e mensagens de status da análise de armazenamento lista os tipos de transação que as Métricas de armazenamento incluem em seu cálculo de Disponibilidade .The article Storage Analytics Logged Operations and Status Messages lists the transaction types that Storage Metrics includes in its Availability calculation.

No Portal do Azure, você pode adicionar as regras de alertas para notificá-lo se a Disponibilidade de um serviço está abaixo dos limites que você especificou.In the Azure portal, you can add alert rules to notify you if Availability for a service falls below a threshold that you specify.

A seção "Diretrizes de solução de problemas" deste guia descreve alguns dos problemas mais comuns de armazenamento relacionados a disponibilidade.The "Troubleshooting guidance" section of this guide describes some common storage service issues related to availability.

Monitoramento de desempenhoMonitoring performance

Para monitorar o desempenho dos serviços de armazenamento, você pode usar as seguintes métricas das tabelas de hora em hora ou minuto em minuto.To monitor the performance of the storage services, you can use the following metrics from the hourly and minute metrics tables.

  • Os valores nas colunas AverageE2ELatency e AverageServerLatency mostram o tempo médio do serviço de armazenamento ou do tipo da operação de API que está sendo usado para processar as solicitações.The values in the AverageE2ELatency and AverageServerLatency columns show the average time the storage service or API operation type is taking to process requests. AverageE2ELatency é uma medida de latência de ponta a ponta que inclui o tempo levado para ler as solicitações e enviar a resposta, além do tempo levado para processar a solicitação (por isso, inclui a latência de rede uma vez que a solicitação atinge o serviço de armazenamento); AverageServerLatency é a medida apenas do tempo de processamento e, por isso, exclui qualquer latência de rede relacionada à comunicação com o cliente.AverageE2ELatency is a measure of end-to-end latency that includes the time taken to read the request and send the response in addition to the time taken to process the request (therefore includes network latency once the request reaches the storage service); AverageServerLatency is a measure of just the processing time and therefore excludes any network latency related to communicating with the client. Consulte a seção "As métricas mostram alta AverageE2ELatency e baixa AverageServerLatency" posteriormente neste guia para uma discussão sobre porque pode haver uma diferença significante entre esses dois valores.See the section "Metrics show high AverageE2ELatency and low AverageServerLatency" later in this guide for a discussion of why there might be a significant difference between these two values.
  • Os valores nas colunas TotalIngress e TotalEgress mostram um valor total de dados, em bytes, entrando e saindo do seu serviço de armazenamento ou por um tipo de operação API específica.The values in the TotalIngress and TotalEgress columns show the total amount of data, in bytes, coming in to and going out of your storage service or through a specific API operation type.
  • Os valores na coluna TotalRequests mostram o número total de solicitações que o serviço de armazenamento da operação API está recebendo.The values in the TotalRequests column show the total number of requests that the storage service of API operation is receiving. TotalRequests é o número total de solicitações que o serviço de armazenamento recebe.TotalRequests is the total number of requests that the storage service receives.

Normalmente, você irá monitorar as mudanças inesperadas em qualquer um desses valores como indicador de que você tem um problema que requer uma investigação.Typically, you will monitor for unexpected changes in any of these values as an indicator that you have an issue that requires investigation.

No Portal do Azure, você pode adicionar as regras de alertas para notificá-lo se quaisquer métricas de desempenho desse serviço estão abaixo dos limites que você especificou.In the Azure portal, you can add alert rules to notify you if any of the performance metrics for this service fall below or exceed a threshold that you specify.

A seção "Diretrizes de solução de problemas" deste guia descreve alguns dos problemas mais comuns de armazenamento relacionados a desempenho.The "Troubleshooting guidance" section of this guide describes some common storage service issues related to performance.

Diagnóstico de problemas de armazenamentoDiagnosing storage issues

Há inúmeros caminhos que você pode ter para ficar ciente de um problema em seu aplicativo, incluindo:There are a number of ways that you might become aware of a problem or issue in your application, including:

  • Uma grande falha que faz com que o aplicativo entre em pane ou pare de funcionar.A major failure that causes the application to crash or to stop working.
  • Mudanças significativas dos valores de linha de base em métricas que você está monitorando como descritas na seção anterior "Monitoramento do seu serviço de armazenamento“.Significant changes from baseline values in the metrics you are monitoring as described in the previous section "Monitoring your storage service."
  • Relatórios de usuários do seu aplicativo informando que uma operação em particular não foi concluída como esperado ou que algum recurso não está funcionando.Reports from users of your application that some particular operation didn't complete as expected or that some feature is not working.
  • Erros gerados dentro do seu aplicativo que aparecem nos arquivos de log ou em outros métodos de notificação.Errors generated within your application that appear in log files or through some other notification method.

Normalmente, problemas relacionados aos serviços de armazenamento do Azure estão entre uma das quatro grandes categorias:Typically, issues related to Azure storage services fall into one of four broad categories:

  • Seu aplicativo apresenta um problema de desempenho, relatado por um de seus usuários ou revelado por mudanças nas métricas de desempenho.Your application has a performance issue, either reported by your users, or revealed by changes in the performance metrics.
  • Há um problema com a infraestrutura de armazenamento do Azure em uma ou mais regiões.There is a problem with the Azure Storage infrastructure in one or more regions.
  • Seu aplicativo está encontrando um erro, relatado por um de seus usuários ou revelado por um aumento em uma das métricas de contagem de erro que você monitora.Your application is encountering an error, either reported by your users, or revealed by an increase in one of the error count metrics you monitor.
  • Durante o desenvolvimento e o teste, você talvez esteja usando o emulador de armazenamento local; você pode encontrar alguns problemas relacionados especificamente ao uso do emulador de armazenamento.During development and test, you may be using the local storage emulator; you may encounter some issues that relate specifically to usage of the storage emulator.

As seguintes seções apresentam as etapas que você deve seguir para diagnosticar e solucionar os problemas em cada uma dessas quatro categorias.The following sections outline the steps you should follow to diagnose and troubleshoot issues in each of these four categories. A seção "Diretrizes de solução de problemas" posteriormente nesse guia dará mais detalhes para alguns dos problemas mais comuns que você pode encontrar.The section "Troubleshooting guidance" later in this guide provides more detail for some common issues you may encounter.

Problemas de integridade do serviçoService health issues

Problemas de integridade do serviço são normalmente fora do seu controle.Service health issues are typically outside of your control. O Portal do Azure dá informações sobre quaisquer problemas existentes com os serviços do Azure inclusive com os serviços de armazenamento.The Azure portal provides information about any ongoing issues with Azure services including storage services. Se você tiver optado pelo Armazenamento com Redundância Geográfica com Acesso de Leitura quando criou sua conta de armazenamento, então, no caso de seus dados estarem indisponíveis no local principal, o aplicativo pode mudar temporariamente para cópia somente leitura em um local secundário.If you opted for Read-Access Geo-Redundant Storage when you created your storage account, then if your data becomes unavailable in the primary location, your application can switch temporarily to the read-only copy in the secondary location. Para fazer a leitura do local secundário, o aplicativo deve ser capaz de alternar entre o uso de locais de armazenamento principal e secundário e ser capaz de trabalhar em modo de funcionamento reduzido com dados somente leitura.To read from the secondary, your application must be able to switch between using the primary and secondary storage locations, and be able to work in a reduced functionality mode with read-only data. As bibliotecas do cliente de armazenamento do Azure permitem que você defina uma política de tentativa que pode ler a partir do armazenamento secundário caso a leitura do armazenamento principal falhar.The Azure Storage Client libraries allow you to define a retry policy that can read from secondary storage in case a read from primary storage fails. Seu aplicativo também precisa estar ciente que os dados do local secundário são consistentes.Your application also needs to be aware that the data in the secondary location is eventually consistent. Para saber mais, consulte no blog a postagem Opções de redundância do Armazenamento do Azure e armazenamento com redundância geográfica do acesso de leitura.For more information, see the blog post Azure Storage Redundancy Options and Read Access Geo Redundant Storage.

Problemas de desempenhoPerformance issues

O desempenho de um aplicativo pode ser subjetivo, especialmente da perspectiva de um usuário.The performance of an application can be subjective, especially from a user perspective. Por isso, é importante ter métricas de linha de base disponíveis para ajudá-lo a identificar onde pode haver um problema de desempenho.Therefore, it is important to have baseline metrics available to help you identify where there might be a performance issue. Muitos fatores podem afetar o desempenho de um serviço de armazenamento do Azure da perspectiva do aplicativo do cliente.Many factors might affect the performance of an Azure storage service from the client application perspective. Esses fatores podem operar em um serviço de armazenamento, no cliente ou em uma infraestrutura de rede; portanto, é importante ter uma estratégia para identificar a origem do problema de desempenho.These factors might operate in the storage service, in the client, or in the network infrastructure; therefore it is important to have a strategy for identifying the origin of the performance issue.

Após ter identificado o possível local da causa do problema de desempenho a partir das métricas, você pode usar os arquivos de log para encontrar as informações detalhadas para diagnosticar e solucionar o problema mais profundamente.After you have identified the likely location of the cause of the performance issue from the metrics, you can then use the log files to find detailed information to diagnose and troubleshoot the problem further.

A seção "Diretrizes de solução de problemas" posteriormente nesse guia dará mais detalhes para alguns dos problemas mais comuns que você pode encontrar.The section "Troubleshooting guidance" later in this guide provides more information about some common performance-related issues you may encounter.

Diagnóstico de errosDiagnosing errors

Usuários do seu aplicativo podem notificá-lo de erros registrados pelo aplicativo do cliente.Users of your application may notify you of errors reported by the client application. Métricas de armazenamento também registram contagens de diferentes tipos de erros do seus serviços de armazenamento, tais como NetworkError, ClientTimeoutError ou AuthorizationError.Storage Metrics also records counts of different error types from your storage services such as NetworkError, ClientTimeoutError, or AuthorizationError. Enquanto as métricas de armazenamento apenas registram as contagens de diferentes tipos de erros, você obter mais detalhes sobre solicitações individuais ao examinar os logs do servidor, do cliente e da rede.While Storage Metrics only records counts of different error types, you can obtain more detail about individual requests by examining server-side, client-side, and network logs. Normalmente, o código de status HTTP que voltam para o serviço de armazenamento darão uma indicação da razão da falha da solicitação.Typically, the HTTP status code returned by the storage service will give an indication of why the request failed.

Observação

Lembre-se de que você deve esperar ver alguns erros intermitentes: por exemplo, erros devido a condições transitórias da rede ou erros de aplicativo.Remember that you should expect to see some intermittent errors: for example, errors due to transient network conditions, or application errors.

Os seguintes recursos são úteis para compreender os status relacionados a armazenamento e os códigos de erro:The following resources are useful for understanding storage-related status and error codes:

Problemas de emulador de armazenamentoStorage emulator issues

O SDK do Azure inclui um emulador de armazenamento que você pode executar em uma estação de trabalho de desenvolvimento.The Azure SDK includes a storage emulator you can run on a development workstation. Esse emulador simula a maior parte do comportamento dos serviços de armazenamento do Azure e é útil durante o desenvolvimento e o teste, permitindo que você execute aplicativos que você usam serviços de armazenamento do Azure sem a necessidade de uma assinatura e uma conta de armazenamento do Azure.This emulator simulates most of the behavior of the Azure storage services and is useful during development and test, enabling you to run applications that use Azure storage services without the need for an Azure subscription and an Azure storage account.

A seção "Diretrizes de solução de problemas" deste guia descreve alguns dos problemas mais comuns usando o emulador de armazenamento.The "Troubleshooting guidance" section of this guide describes some common issues encountered using the storage emulator.

Ferramentas de log de armazenamentoStorage logging tools

O log de armazenamento oferece o log do lado do servidor para solicitações de armazenamento na sua conta de armazenamento do Azure.Storage Logging provides server-side logging of storage requests in your Azure storage account. Para saber mais sobre como habilitar o log do lado do servidor e acessar os dados de log, consulte Enabling Storage Logging and Accessing Log Data(Como habilitar o registro em log do armazenamento e o acesso aos dados do log).For more information about how to enable server-side logging and access the log data, see Enabling Storage Logging and Accessing Log Data.

A biblioteca do cliente de armazenamento para .NET habilita você a coletar dados de log do cliente relacionados as operações de armazenamento realizadas pelo seu aplicativo.The Storage Client Library for .NET enables you to collect client-side log data that relates to storage operations performed by your application. Para saber mais, consulte Registro em log no lado do cliente com a biblioteca do cliente de armazenamento para .NET.For more information, see Client-side Logging with the .NET Storage Client Library.

Observação

Em algumas circunstâncias (tais como falhas de autorizações SAS) um usuário pode informar um erro pelo qual você não pode encontrar nenhum dado de solicitação nos logs de armazenamento do lado do cliente.In some circumstances (such as SAS authorization failures), a user may report an error for which you can find no request data in the server-side Storage logs. Você pode usar as capacidades de log da biblioteca do cliente de armazenamento para investigar se a causa desse problema está no cliente ou use as as ferramentas de monitoramento de rede para investigar a rede.You can use the logging capabilities of the Storage Client Library to investigate if the cause of the issue is on the client or use network monitoring tools to investigate the network.

Uso de ferramentas de log de redeUsing network logging tools

Você pode capturar o tráfego entre o cliente e o servidor para dar informações detalhadas sobre os dados que o cliente e o servidor estão trocando e as condições subjacentes de rede.You can capture the traffic between the client and server to provide detailed information about the data the client and server are exchanging and the underlying network conditions. Ferramentas úteis de log de rede incluem:Useful network logging tools include:

Em muitos casos, os dados de log a partir do log de armazenamento e da biblioteca do cliente serão suficientes para diagnosticar um problema, porém, em alguns cenários, você poderá precisar de informações mais detalhadas que podem ser providas por essas ferramentas de log de rede.In many cases, the log data from Storage Logging and the Storage Client Library will be sufficient to diagnose an issue, but in some scenarios, you may need the more detailed information that these network logging tools can provide. Por exemplo, usando o Fiddler para ver as mensagens HTTP e HTTPS permitem que você exiba o cabeçalho e os dados de carga enviados para e a partir dos serviços de armazenamento, o qual permite que você examine como o aplicativo do cliente repete as operações de armazenamento.For example, using Fiddler to view HTTP and HTTPS messages enables you to view header and payload data sent to and from the storage services, which would enable you to examine how a client application retries storage operations. Analisadores de protocolo, tais como Wireshark opera em nível de pacote permitindo que você exiba os dados TCP, os quais permitem que você solucione problemas de pacotes perdidos e problemas de conectividade.Protocol analyzers such as Wireshark operate at the packet level enabling you to view TCP data, which would enable you to troubleshoot lost packets and connectivity issues. O Message Analyzer pode operar tanto em camadas HTTP como TCP.Message Analyzer can operate at both HTTP and TCP layers.

Rastreamento de ponta a pontaEnd-to-end tracing

O rastreamento de ponta a ponta usando uma variedade de arquivos de log é uma técnica útil para a investigação de potenciais problemas.End-to-end tracing using a variety of log files is a useful technique for investigating potential issues. Você pode usar as informações de dia/hora de seus dados de métrica como uma indicação de onde começar a procurar nos arquivos de log para informações mais detalhadas que irão ajudá-lo a solucionar o problema.You can use the date/time information from your metrics data as an indication of where to start looking in the log files for the detailed information that will help you troubleshoot the issue.

Correlacionamento de dados de logCorrelating log data

Ao exibir os logs dos aplicativos do cliente, rastreamento de rede e log de armazenamento do servidor é fundamental ser capaz de correlacionar as solicitações com os diferentes arquivos de log.When viewing logs from client applications, network traces, and server-side storage logging it is critical to be able to correlate requests across the different log files. Os arquivos de log incluem inúmeros campos diferentes que são úteis como identificadores de correlação.The log files include a number of different fields that are useful as correlation identifiers. A ID de solicitação do cliente é o campo mais útil para usa para correlacionar entradas em logs diferentes.The client request ID is the most useful field to use to correlate entries in the different logs. Entretanto, algumas vezes, pode ser útil usar ou a ID de solicitação do servidor ou os carimbos de data/hora.However sometimes, it can be useful to use either the server request ID or timestamps. As seções a seguir fornecem mais detalhes sobre essas opções.The following sections provide more details about these options.

ID de solicitação do clienteClient request ID

A Biblioteca de Clientes de Armazenamento gera automaticamente uma ID de solicitação do cliente exclusiva para cada solicitação.The Storage Client Library automatically generates a unique client request ID for every request.

  • No log do lado do cliente criado pela Biblioteca de Clientes de Armazenamento, a ID de solicitação do cliente aparece no campo ID de solicitação do cliente de cada entrada de log relacionada à solicitação.In the client-side log that the Storage Client Library creates, the client request ID appears in the Client Request ID field of every log entry relating to the request.
  • No rastreamento da rede tal como uma capturada pelo Fiddler, a ID de solicitação do cliente está visível em mensagens de solicitação como o valor do cabeçalho HTTP x-ms-client-request-id.In a network trace such as one captured by Fiddler, the client request ID is visible in request messages as the x-ms-client-request-id HTTP header value.
  • No log de armazenamento do lado do servidor, a ID de solicitação do cliente aparece na coluna ID da solicitação do cliente.In the server-side Storage Logging log, the client request ID appears in the Client request ID column.

Observação

É possível que várias solicitações compartilhem a mesma ID de solicitação do cliente porque o cliente pode atribuir esse valor (embora a Biblioteca de Clientes de Armazenamento atribua um novo valor automaticamente).It is possible for multiple requests to share the same client request ID because the client can assign this value (although the Storage Client Library assigns a new value automatically). No caso de novas tentativas do cliente, todas as tentativas compartilham a mesma ID de solicitação do cliente.When the client retries, all attempts share the same client request ID. No caso de um lote enviado pelo cliente, o lote tem uma única ID de solicitação de cliente.In the case of a batch sent from the client, the batch has a single client request ID.

ID de solicitação do servidorServer request ID

O serviço de armazenamento gera automaticamente IDs de solicitação do servidor.The storage service automatically generates server request IDs.

  • No log de armazenamento do lado do servidor, a ID de solicitação do servidor aparece na coluna Cabeçalho da ID de solicitação.In the server-side Storage Logging log, the server request ID appears the Request ID header column.
  • Em um rastreamento de rede tal como um capturado pelo Fiddler, a ID de solicitação do servidor aparece em mensagens de solicitação como o valor do cabeçalho HTTP x-ms-request-id.In a network trace such as one captured by Fiddler, the server request ID appears in response messages as the x-ms-request-id HTTP header value.
  • No log do lado do cliente criado pela Biblioteca de Clientes de Armazenamento, a ID de solicitação do cliente aparece na coluna Texto de Operação para a entrada de log mostrando detalhes da resposta do servidor.In the client-side log that the Storage Client Library creates, the server request ID appears in the Operation Text column for the log entry showing details of the server response.

Observação

O serviço de armazenamento sempre atribui uma única ID de solicitação de servidor para cada solicitação recebida, de modo que cada tentativa do cliente e cada operação incluída no lote tenha uma ID de solicitação do servidor exclusiva.The storage service always assigns a unique server request ID to every request it receives, so every retry attempt from the client and every operation included in a batch has a unique server request ID.

Se a biblioteca do cliente de armazenamento aciona uma StorageException no cliente, a propriedade RequestInformation contém um objeto RequestResult que inclui uma propriedade ServiceRequestID.If the Storage Client Library throws a StorageException in the client, the RequestInformation property contains a RequestResult object that includes a ServiceRequestID property. Você também pode acessar um objeto RequestResult a partir de uma instância de OperationContext.You can also access a RequestResult object from an OperationContext instance.

O exemplo de código abaixo demonstra como definir um valor personalizado de ClientRequestId ao anexar um objeto OperationContext à solicitação para o serviço de armazenamento.The code sample below demonstrates how to set a custom ClientRequestId value by attaching an OperationContext object the request to the storage service. Isso também mostra como recuperar p valor de ServerRequestId de uma mensagem de resposta.It also shows how to retrieve the ServerRequestId value from the response message.

//Parse the connection string for the storage account.
const string ConnectionString = "DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Create an Operation Context that includes custom ClientRequestId string based on constants defined within the application along with a Guid.
OperationContext oc = new OperationContext();
oc.ClientRequestID = String.Format("{0} {1} {2} {3}", HOSTNAME, APPNAME, USERID, Guid.NewGuid().ToString());

try
{
    CloudBlobContainer container = blobClient.GetContainerReference("democontainer");
    ICloudBlob blob = container.GetBlobReferenceFromServer("testImage.jpg", null, null, oc);  
    var downloadToPath = string.Format("./{0}", blob.Name);
    using (var fs = File.OpenWrite(downloadToPath))
    {
        blob.DownloadToStream(fs, null, null, oc);
        Console.WriteLine("\t Blob downloaded to file: {0}", downloadToPath);
    }
}
catch (StorageException storageException)
{
    Console.WriteLine("Storage exception {0} occurred", storageException.Message);
    // Multiple results may exist due to client side retry logic - each retried operation will have a unique ServiceRequestId
    foreach (var result in oc.RequestResults)
    {
            Console.WriteLine("HttpStatus: {0}, ServiceRequestId {1}", result.HttpStatusCode, result.ServiceRequestID);
    }
}

Carimbos de data/horaTimestamps

Você também pode usar o carimbo de data/hora para localizar as entradas de log relacionadas, porém cuidado com qualquer distorção que possa existir entre o relógio do cliente e do servidor.You can also use timestamps to locate related log entries, but be careful of any clock skew between the client and server that may exist. Pesquise por mais ou menos 15 minutos para coincidir as entradas do lado do servidor com base no carimbo de data/hora do cliente.Search plus or minus 15 minutes for matching server-side entries based on the timestamp on the client. Lembre-se que os metadados de blob para os blobs contendo métricas indicam o intervalo de tempo para as métricas armazenadas no blob.Remember that the blob metadata for the blobs containing metrics indicates the time range for the metrics stored in the blob. Esse intervalo de tempo será útil se você tiver muitos blobs de métricas para o mesmo minuto ou hora.This time range is useful if you have many metrics blobs for the same minute or hour.

Diretrizes de solução de problemasTroubleshooting guidance

Essa seção irá ajudá-lo com o diagnóstico e com a solução de alguns dos problemas mais comuns que seu aplicativo pode encontrar ao usar os serviços de armazenamento do Azure.This section will help you with the diagnosis and troubleshooting of some of the common issues your application may encounter when using the Azure storage services. Use a lista abaixo para localizar as informações relevantes para o seu problema específico.Use the list below to locate the information relevant to your specific issue.

Árvore de decisão de solução de problemasTroubleshooting Decision Tree


O seu problema está relacionado ao desempenho de um dos serviços de armazenamento?Does your issue relate to the performance of one of the storage services?


O seu problema está relacionado à disponibilidade de um dos serviços de armazenamento?Does your issue relate to the availability of one of the storage services?


O seu aplicativo do cliente está recebendo uma resposta HTTP 4XX (tal como 404) de um serviço de armazenamento?Is your client application receiving an HTTP 4XX (such as 404) response from a storage service?


As métricas mostram uma baixa PercentSuccess ou as entradas de log analíticas têm operações com status de transação de ClientOtherErrorsMetrics show low PercentSuccess or analytics log entries have operations with transaction status of ClientOtherErrors


As métricas de capacidade mostram um aumento inesperado em uso de capacidade de armazenamentoCapacity metrics show an unexpected increase in storage capacity usage


[Você está enfrentando reinicializações inesperadas das Máquinas Virtuais que contêm um grande número de VHDs anexados][You are experiencing unexpected reboots of Virtual Machines that have a large number of attached VHDs]


Seu problema apareceu por usar o emulador de armazenamento para desenvolvimento ou testeYour issue arises from using the storage emulator for development or test


Você encontrou problemas ao instalar o SDK do Azure para .NETYou are encountering problems installing the Azure SDK for .NET


Você tem um problema diferente com um serviço de armazenamentoYou have a different issue with a storage service


As métricas mostram alta AverageE2ELatency e baixa AverageServerLatencyMetrics show high AverageE2ELatency and low AverageServerLatency

A figura abaixo da ferramenta de monitoramento do portal do Azure mostra um exemplo em que a AverageE2ELatency é significantemente mais alta que a AverageServerLatency.The illustration below from the Azure portal monitoring tool shows an example where the AverageE2ELatency is significantly higher than the AverageServerLatency.

O serviço de armazenamento calcula apenas a métrica AverageE2ELatency para solicitações de êxito e, ao contrário de AverageServerLatency, inclui o tempo que o cliente leva para enviar os dados e receber a confirmação do serviço de armazenamento.The storage service only calculates the metric AverageE2ELatency for successful requests and, unlike AverageServerLatency, includes the time the client takes to send the data and receive acknowledgement from the storage service. Portanto, a diferença entre a AverageE2ELatency e a AverageServerLatency pode ser ou devido a lentidão de resposta do aplicativo do cliente ou devido às condições da rede.Therefore, a difference between AverageE2ELatency and AverageServerLatency could be either due to the client application being slow to respond, or due to conditions on the network.

Observação

Você também pode exibir E2ELatency e ServerLatency das operações de armazenamento individual nos dados de registro do log de Armazenamento.You can also view E2ELatency and ServerLatency for individual storage operations in the Storage Logging log data.

Investigação dos problemas de desempenho do clienteInvestigating client performance issues

Entre as possíveis razões para a lentidão de resposta do cliente estão: ter um número limitado de conexões ou threads disponíveis ou ter poucos recursos, como CPU, memória ou largura de banda de rede.Possible reasons for the client responding slowly include having a limited number of available connections or threads, or being low on resources such as CPU, memory or network bandwidth. Você pode ser capaz de resolver os problemas ao modificar o código do cliente para ser mais eficiente (por exemplo ao usar chamadas assíncronas para o serviço de armazenamento) ou usar uma máquina virtual maior (com mais cores e mais memória).You may be able to resolve the issue by modifying the client code to be more efficient (for example by using asynchronous calls to the storage service), or by using a larger Virtual Machine (with more cores and more memory).

Para os serviços Tabela e Fila, o algoritmo Nagle também pode causar AverageE2ELatency alta em comparação com AverageServerLatency: para saber mais, confira a postagem Nagle’s Algorithm is Not Friendly towards Small Requests (Algoritmo Nagle não é amigável a solicitações pequenas).For the table and queue services, the Nagle algorithm can also cause high AverageE2ELatency as compared to AverageServerLatency: for more information, see the post Nagle's Algorithm is Not Friendly towards Small Requests. Você pode desabilitar o algoritmo de Nagle em código ao usar a classe ServicePointManager no namespace System.Net.You can disable the Nagle algorithm in code by using the ServicePointManager class in the System.Net namespace. Faça isso antes de fazer qualquer chamada para os serviços de tabela ou fila no seu aplicativo já que isso não afeta as conexões que já estão abertas.You should do this before you make any calls to the table or queue services in your application since this does not affect connections that are already open. O exemplo a seguir vem do método Application_Start em uma função de trabalho.The following example comes from the Application_Start method in a worker role.

var storageAccount = CloudStorageAccount.Parse(connStr);
ServicePoint tableServicePoint = ServicePointManager.FindServicePoint(storageAccount.TableEndpoint);
tableServicePoint.UseNagleAlgorithm = false;
ServicePoint queueServicePoint = ServicePointManager.FindServicePoint(storageAccount.QueueEndpoint);
queueServicePoint.UseNagleAlgorithm = false;

Verifique os logs do lado do cliente para ver quantas solicitações seu aplicativo do cliente está enviando e verifique se há gargalos gerais de desempenho relacionados ao .NET no seu cliente, tais como CPU, coleta de lixo .NET, utilização da rede ou memória.You should check the client-side logs to see how many requests your client application is submitting, and check for general .NET related performance bottlenecks in your client such as CPU, .NET garbage collection, network utilization, or memory. Como ponto de partida para solucionar problemas de aplicativos do cliente .NET, confira Depuração, rastreamento e criação de perfil.As a starting point for troubleshooting .NET client applications, see Debugging, Tracing, and Profiling.

Investigando os problemas de latência de redeInvestigating network latency issues

Normalmente a alta latência de ponta a ponta causada pela rede é devido a condições transitórias.Typically, high end-to-end latency caused by the network is due to transient conditions. Você pode investigar tantos os problemas de rede persistentes ou transitórios, tais como pacotes ignorados ao usar ferramentas, tais como Wireshark ou Microsoft Message Analyzer.You can investigate both transient and persistent network issues such as dropped packets by using tools such as Wireshark or Microsoft Message Analyzer.

Para obter mais informações sobre como usar o Wireshark para solucionar problemas de rede, veja "Apêndice 2: Usando o Wireshark para capturar o tráfego de rede."For more information about using Wireshark to troubleshoot network issues, see "Appendix 2: Using Wireshark to capture network traffic."

Para obter mais informações sobre como usar o Analisador de Mensagem da Microsoft para solucionar problemas de rede, veja "Apêndice 3: Usando o Analisador de Mensagem da Microsoft para capturar o tráfego de rede."For more information about using Microsoft Message Analyzer to troubleshoot network issues, see "Appendix 3: Using Microsoft Message Analyzer to capture network traffic."

As métricas mostram baixa AverageE2ELatency e baixa AverageServerLatency, mas o cliente está recebendo uma latência altaMetrics show low AverageE2ELatency and low AverageServerLatency but the client is experiencing high latency

Nesse cenário, o caso mais provável é um atraso nas solicitações de armazenamento chegando no serviço de armazenamento.In this scenario, the most likely cause is a delay in the storage requests reaching the storage service. Investigue porque as solicitações do cliente não estão passando pelo serviço de blob.You should investigate why requests from the client are not making it through to the blob service.

Uma das possíveis razões para o atraso do cliente em enviar solicitações é que há um número limitado de conexões ou threads disponíveis.One possible reason for the client delaying sending requests is that there are a limited number of available connections or threads.

Verifique também se o cliente está realizando várias novas tentativas e investigue a razão, se for o caso.Also check whether the client is performing multiple retries, and investigate the reason if it is. Para determinar se o cliente está realizando várias tentativas, é possível:To determine whether the client is performing multiple retries, you can:

  • Examine os logs da Análise de Armazenamento.Examine the Storage Analytics logs. Se estiverem ocorrendo várias repetições, você verá várias operações com a mesma ID de solicitação do cliente, mas com IDs de solicitação de servidor diferentes.If multiple retries are happening, you will see multiple operations with the same client request ID but with different server request IDs.
  • Examine os logs do cliente.Examine the client logs. O log detalhado indica que ocorreu uma repetição.Verbose logging will indicate that a retry has occurred.
  • Depure seu código e verifique as propriedades do objeto OperationContext associado à solicitação.Debug your code, and check the properties of the OperationContext object associated with the request. Se a operação foi repetida, a propriedade RequestResults incluirá várias IDs de solicitação de servidor exclusivas.If the operation has retried, the RequestResults property will include multiple unique server request IDs. Você também pode verificar as horas de início e término de cada solicitação.You can also check the start and end times for each request. Para obter mais informações, veja o exemplo de código na seção ID de solicitação do servidor.For more information, see the code sample in the section Server request ID.

Se não houver problemas no cliente, investigue os possíveis problemas de rede, tais como perda de pacote.If there are no issues in the client, you should investigate potential network issues such as packet loss. Você pode usar as ferramentas, tais como Wireshark ou Microsoft Message Analyzer para investigar os problemas de rede.You can use tools such as Wireshark or Microsoft Message Analyzer to investigate network issues.

Para obter mais informações sobre como usar o Wireshark para solucionar problemas de rede, veja "Apêndice 2: Usando o Wireshark para capturar o tráfego de rede."For more information about using Wireshark to troubleshoot network issues, see "Appendix 2: Using Wireshark to capture network traffic."

Para obter mais informações sobre como usar o Analisador de Mensagem da Microsoft para solucionar problemas de rede, veja "Apêndice 3: Usando o Analisador de Mensagem da Microsoft para capturar o tráfego de rede."For more information about using Microsoft Message Analyzer to troubleshoot network issues, see "Appendix 3: Using Microsoft Message Analyzer to capture network traffic."

As métricas mostram alta AverageServerLatencyMetrics show high AverageServerLatency

No caso de alta AverageServerLatency para as solicitações de download de blob, você deve usar os logs de log de armazenamento para ver se há solicitações repetidas para o mesmo blob (ou para grupos de blobs).In the case of high AverageServerLatency for blob download requests, you should use the Storage Logging logs to see if there are repeated requests for the same blob (or set of blobs). Para solicitações de carregamento de blob, você deve investigar qual tamanho de bloco o cliente está usando (por exemplo, blocos inferiores a 64 mil em tamanho podem resultar em sobrecargas ao menos que leituras também sejam inferiores a 64 mil partes) e se múltiplos clientes estiverem carregando blocos no mesmo blob em paralelo.For blob upload requests, you should investigate what block size the client is using (for example, blocks less than 64 K in size can result in overheads unless the reads are also in less than 64 K chunks), and if multiple clients are uploading blocks to the same blob in parallel. Você também deve verificar as métricas por minuto para ver se há picos no número de solicitações que excedem as metas de escalabilidade por segundo: veja também “As métricas mostram um aumento em PercentTimeoutError”.You should also check the per-minute metrics for spikes in the number of requests that result in exceeding the per second scalability targets: also see "Metrics show an increase in PercentTimeoutError."

No caso de alta AverageServerLatency para as solicitações de download de blob, você deve usar os registros de log de armazenamento para ver se há solicitações repetidas para o mesmo blob (ou para grupos de blobs).If you are seeing high AverageServerLatency for blob download requests when there are repeated requests the same blob or set of blobs, then you should consider caching these blobs using Azure Cache or the Azure Content Delivery Network (CDN). Para solicitações de carregamento, você pode aprimorar a produtividade usando um tamanho maior de bloco.For upload requests, you can improve the throughput by using a larger block size. Para consultas às tabelas, também é possível implementar o cache no lado do cliente nos clientes que realizam as mesmas operações de consulta e nos casos em que os dados não mudam com frequência.For queries to tables, it is also possible to implement client-side caching on clients that perform the same query operations and where the data doesn't change frequently.

Valores altos de AverageServerLatency podem também ser um sintoma de tabelas ou consultas mal desenhadas que resultam em operações de digitalização ou que seguem a anti-sequência acrescentar/preceder.High AverageServerLatency values can also be a symptom of poorly designed tables or queries that result in scan operations or that follow the append/prepend anti-pattern. Para obter mais informações, consulte "As métricas mostram um aumento em PercentThrottlingError".For more information, see "Metrics show an increase in PercentThrottlingError".

Observação

Você pode encontrar uma lista de verificação de desempenho abrangente aqui: Lista de verificação de desempenho e escalabilidade do Armazenamento do Microsoft Azure.You can find a comprehensive checklist performance checklist here: Microsoft Azure Storage Performance and Scalability Checklist.

Você está sofrendo atrasos inesperados na entrega de mensagens na filaYou are experiencing unexpected delays in message delivery on a queue

Se você estiver sofrendo um atraso entre o tempo um aplicativo adiciona uma mensagem à fila e o tempo que ela fica disponível para a leitura da fila, então siga as seguintes etapas para diagnosticar o problemas:If you are experiencing a delay between the time an application adds a message to a queue and the time it becomes available to read from the queue, then you should take the following steps to diagnose the issue:

  • Verifique se o aplicativo está efetivamente adicionando as mensagens à fila.Verify the application is successfully adding the messages to the queue. Verifique se o aplicativo não está tentando o método AddMessage várias vezes antes de conseguir.Check that the application is not retrying the AddMessage method several times before succeeding. Os logs da biblioteca do cliente de armazenamento irá mostrar qualquer tentativa repetida de operações de armazenamento.The Storage Client Library logs will show any repeated retries of storage operations.
  • Verifique se não há nenhum distorção no relógio entre a função de trabalho que adiciona a mensagem à fila e a função de trabalho que lê a mensagem da fila que faz parecer como se houvesse um atraso em processamento.Verify there is no clock skew between the worker role that adds the message to the queue and the worker role that reads the message from the queue that makes it appear as if there is a delay in processing.
  • A função de trabalho lê as mensagens da fila que tem falhas.Check if the worker role that reads the messages from the queue is failing. Se um cliente de fila chama o método GetMessage, mas falha em responder com uma confirmação, a mensagem permanecerá invisível na fila até que o período de invisibilityTimeout expire.If a queue client calls the GetMessage method but fails to respond with an acknowledgement, the message will remain invisible on the queue until the invisibilityTimeout period expires. Nesse momento, a mensagem se torna disponibilidade para ser processada novamente.At this point, the message becomes available for processing again.
  • Verifique se o tamanho da fila está aumentando com o tempo.Check if the queue length is growing over time. Isso pode acontecer se você não tiver operadores disponíveis o suficiente para processar todas as mensagens que os outros operadores estão colocando na fila.This can occur if you do not have sufficient workers available to process all of the messages that other workers are placing on the queue. Verifique também as métricas para ver se as solicitações excluídas estão falhando e a retirada da fila conta as mensagens as quais podem indicar falhas repetidas de tentativas para excluir a mensagem.Also check the metrics to see if delete requests are failing and the dequeue count on messages, which might indicate repeated failed attempts to delete the message.
  • Examine os logs de log de armazenamento para qualquer operação de fila que possa estar mais alta do que a E2ELatency esperada e dos valor ServerLatency durante um período mais longo de tempo do que de costume.Examine the Storage Logging logs for any queue operations that have higher than expected E2ELatency and ServerLatency values over a longer period of time than usual.

As métricas mostram um aumento em PercentThrottlingErrorMetrics show an increase in PercentThrottlingError

Erros de limitação acontecem quando você excede os alvos de escalabilidade de um serviço de armazenamento.Throttling errors occur when you exceed the scalability targets of a storage service. O serviço de armazenamento aplica limitações para garantir que nenhum cliente ou locatário possa usar o serviço à custa de outros.The storage service throttles to ensure that no single client or tenant can use the service at the expense of others. Para saber mais, consulte Metas de desempenho e de escalabilidade do Armazenamento do Azure para obter detalhes sobre alvos de escalabilidade para contas de armazenamento e alvos de desempenho para partições dentro de contas de armazenamento.For more information, see Azure Storage Scalability and Performance Targets for details on scalability targets for storage accounts and performance targets for partitions within storage accounts.

Se a métrica de PercentThrottlingError mostra um aumento na porcentagem de solicitações que estão falhando com um erro de limitação, você precisa investigar um dos dois cenários:If the PercentThrottlingError metric show an increase in the percentage of requests that are failing with a throttling error, you need to investigate one of two scenarios:

Um aumento em PercentThrottlingError frequentemente acontece ao mesmo tempo que há um aumento no número de solicitações de armazenamento ou quando você está fazendo um teste de carga inicial do seu aplicativo.An increase in PercentThrottlingError often occurs at the same time as an increase in the number of storage requests, or when you are initially load testing your application. Isso pode também manifestar no cliente como mensagens de status HTTP "503 Server Busy" ou "500 Operation Timeout" a partir das operações de armazenamento.This may also manifest itself in the client as "503 Server Busy" or "500 Operation Timeout" HTTP status messages from storage operations.

Aumento transitório em PercentThrottlingErrorTransient increase in PercentThrottlingError

Se estiver vendo picos no valor do PercentThrottlingError que coincidam com períodos de alta atividade para o aplicativo, você deverá implementar uma estratégia de retirada exponencial (não linear) para novas tentativas em seu cliente.If you are seeing spikes in the value of PercentThrottlingError that coincide with periods of high activity for the application, you implement an exponential (not linear) back-off strategy for retries in your client. As novas tentativas de retirada reduzem a carga imediata na partição e ajudam seu aplicativo a atenuar os picos no tráfego.Back-off retries reduce the immediate load on the partition and help your application to smooth out spikes in traffic. Para obter mais informações sobre como implementar políticas de repetição usando a biblioteca de cliente de armazenamento, consulte o namespace Microsoft. Azure. Storage. RetryPolicies.For more information about how to implement retry policies using the Storage Client Library, see the Microsoft.Azure.Storage.RetryPolicies namespace.

Observação

Você também pode ver os picos no valor de PercentThrottlingError que não coincidem com períodos de alta atividade para o aplicativo: a causa mais provável aqui é o serviço de armazenamento estar movendo partições para melhorar o balanceamento de carga.You may also see spikes in the value of PercentThrottlingError that do not coincide with periods of high activity for the application: the most likely cause here is the storage service moving partitions to improve load balancing.

Aumento permanente em erro de PercentThrottlingErrorPermanent increase in PercentThrottlingError error

Se você está vendo constantemente um valor alto para PercentThrottlingError seguido de um aumento permanente nos seus volumes de transações ou quando você está realizando os seus testes de carga iniciais no seu aplicativo, então você deve avaliar como o seu aplicativo está usando as partições de armazenamento e se está atingindo os alvos de escalabilidade para a conta de armazenamento.If you are seeing a consistently high value for PercentThrottlingError following a permanent increase in your transaction volumes, or when you are performing your initial load tests on your application, then you need to evaluate how your application is using storage partitions and whether it is approaching the scalability targets for a storage account. Por exemplo, se você está vendo erros de limitação na fila (o qual conta como uma partição única), então considere usar filas adicionais para espalhar as transações entre diversas partições.For example, if you are seeing throttling errors on a queue (which counts as a single partition), then you should consider using additional queues to spread the transactions across multiple partitions. Se você está vendo erros de limitação em uma tabela, você precisa considerar usar um esquema de partições diferentes para espalhar suas transações entre as diversas partições usando uma gama maior de valores chave de partição.If you are seeing throttling errors on a table, you need to consider using a different partitioning scheme to spread your transactions across multiple partitions by using a wider range of partition key values. Uma causa comum desse problema é a colocar/acrescentar antipadrão onde você seleciona a data como a chave de partição e, em seguida, todos os dados em um determinado dia são gravados em uma partição: sob carga, isso pode resultar em um gargalo de gravação.One common cause of this issue is the prepend/append anti-pattern where you select the date as the partition key and then all data on a particular day is written to one partition: under load, this can result in a write bottleneck. Considere um design de partição diferente ou avalie se usar um armazenamento de blob pode ser uma solução melhor.Either consider a different partitioning design or evaluate whether using blob storage might be a better solution. Verifique também se a limitação está ocorrendo como resultado de picos no tráfego e investigue as formas de suavizar o padrão de solicitações.Also check whether throttling is occurring as a result of spikes in your traffic and investigate ways of smoothing your pattern of requests.

Se você distribuir suas transações entre diversas partições, você ainda deve levar em consideração os limites de escalabilidade definidos para a conta de armazenamento.If you distribute your transactions across multiple partitions, you must still be aware of the scalability limits set for the storage account. Por exemplo, se você usa dez filas cada processando no máximo 2.000 mensagens de 1KB por segundo, você estará no limite total de 20.000 mensagens por segundo para cada conta de armazenamento.For example, if you used ten queues each processing the maximum of 2,000 1KB messages per second, you will be at the overall limit of 20,000 messages per second for the storage account. Se você precisa processar mais de 20.000 entidades por segundo, você deve considerar usar diversas contas de armazenamento.If you need to process more than 20,000 entities per second, you should consider using multiple storage accounts. Você também deve ter em mente que o tamanho de suas solicitações e entidades tem um impacto no quando o serviço de armazenamento limita seus clientes: se você tiver maiores solicitações e entidades, você pode estar limitada mais cedo.You should also bear in mind that the size of your requests and entities has an impact on when the storage service throttles your clients: if you have larger requests and entities, you may be throttled sooner.

Designs de consultas ineficientes podem causar também que você atinja os limites de escalabilidade para as partições de tabela.Inefficient query design can also cause you to hit the scalability limits for table partitions. Por exemplo, uma consulta com um filtro que seleciona apenas um por cento das entidades em uma partição, mas que digitaliza todas as entidades em uma partição precisará ter acesso a cada entidade.For example, a query with a filter that only selects one percent of the entities in a partition but that scans all the entities in a partition will need to access each entity. Toda entidade lida irá contar para um número total de transações naquela partição, portanto, você pode facilmente atingir os alvos de escalabilidade.Every entity read will count towards the total number of transactions in that partition; therefore, you can easily reach the scalability targets.

Observação

Seu teste de desempenho deve revelar qualquer design de consulta ineficiente em sua partição.Your performance testing should reveal any inefficient query designs in your application.

As métricas mostram um aumento em PercentTimeoutErrorMetrics show an increase in PercentTimeoutError

Suas métricas mostram um aumento em PercentTimeoutError para um dos seus serviços de armazenamento.Your metrics show an increase in PercentTimeoutError for one of your storage services. Ao mesmo tempo, o cliente recebe um volume alto de mensagens de status HTTP "500 Operation Timeout" a partir das operações de armazenamento.At the same time, the client receives a high volume of "500 Operation Timeout" HTTP status messages from storage operations.

Observação

Você pode ver temporariamente erros de tempo limite enquanto o serviço de armazenamento balanceia a carga de solicitações movendo um partição para um novo servidor.You may see timeout errors temporarily as the storage service load balances requests by moving a partition to a new server.

A métrica PercentTimeoutError é uma agregação das seguintes métricas: ClientTimeoutError, AnonymousClientTimeoutError, SASClientTimeoutError, ServerTimeoutError, AnonymousServerTimeoutError e SASServerTimeoutError.The PercentTimeoutError metric is an aggregation of the following metrics: ClientTimeoutError, AnonymousClientTimeoutError, SASClientTimeoutError, ServerTimeoutError, AnonymousServerTimeoutError, and SASServerTimeoutError.

Os tempos limites do servidor são causados por um erro no servidor.The server timeouts are caused by an error on the server. Os tempos limites do cliente acontecem porque uma operação no servidor excedeu o tempo limite especificado pelo cliente; por exemplo, um cliente usando a biblioteca do cliente de armazenamento pode definir um tempo limite para uma operação usando a propriedade ServerTimeout da classe QueueRequestOptions.The client timeouts happen because an operation on the server has exceeded the timeout specified by the client; for example, a client using the Storage Client Library can set a timeout for an operation by using the ServerTimeout property of the QueueRequestOptions class.

Os tempos limites indicam um problema com o serviço de armazenamento que requer uma investigação detalhada.Server timeouts indicate a problem with the storage service that requires further investigation. Você pode usar as métricas para ver se você está atingindo os limites de escalabilidade do servidor e para identificar quaisquer picos de tráfego que pode estar causando esse problema.You can use metrics to see if you are hitting the scalability limits for the service and to identify any spikes in traffic that might be causing this problem. Se o problema for intermitente, pode ser devido à atividade de balanceamento de carga no serviço.If the problem is intermittent, it may be due to load-balancing activity in the service. Se o problema for persistente e não for causado por atingir os limites de escalabilidade do serviço, acione um problema de suporte.If the problem is persistent and is not caused by your application hitting the scalability limits of the service, you should raise a support issue. Para os tempos limites do cliente, você deve decidir se os tempos limites estão definidos com um valor apropriado no cliente e alterar o valor definido para o tempo limite no cliente ou investigar como você pode melhorar o desempenho das operações no serviço de armazenamento, por exemplo, otimizando suas consultas de tabela ou reduzindo o tamanho de suas mensagens.For client timeouts, you must decide if the timeout is set to an appropriate value in the client and either change the timeout value set in the client or investigate how you can improve the performance of the operations in the storage service, for example by optimizing your table queries or reducing the size of your messages.

As métricas mostram um aumento em PercentNetworkErrorMetrics show an increase in PercentNetworkError

Suas métricas mostram um aumento em PercentNetworkError para um dos seus serviços de armazenamento.Your metrics show an increase in PercentNetworkError for one of your storage services. A métrica PercentNetworkError é uma agregação das seguintes métricas: NetworkError, AnonymousNetworkError e SASNetworkError.The PercentNetworkError metric is an aggregation of the following metrics: NetworkError, AnonymousNetworkError, and SASNetworkError. Eles ocorrem quando o serviço de armazenamento detecta um erro de rede quando o cliente faz uma solicitação de armazenamento.These occur when the storage service detects a network error when the client makes a storage request.

A causa mais comum desse erro é um cliente desconectando antes do tempo limite expirar no serviço de armazenamento.The most common cause of this error is a client disconnecting before a timeout expires in the storage service. Investigue o código no cliente para entender porque e quando o cliente desconecta do serviço de armazenamento.Investigate the code in your client to understand why and when the client disconnects from the storage service. Você também pode usar o Wireshark, o Microsoft Mensagem Analyzer ou o Tcping para investigar os problemas de conectividade de rede do cliente.You can also use Wireshark, Microsoft Message Analyzer, or Tcping to investigate network connectivity issues from the client. Essas ferramentas estão descritas nos Anexos.These tools are described in the Appendices.

O cliente está recebendo mensagens HTTP 403 (Proibido)The client is receiving HTTP 403 (Forbidden) messages

Se o seu aplicativo do cliente está emitindo erros HTTP 403 (Proibido), uma possível causa é que o cliente esteja usando uma assinatura de acesso compartilhado (SAS) expirada quando envia uma solicitação de armazenamento (embora outras causas possíveis incluem distorção de relógio, chaves inválidas e cabeçalhos vazios).If your client application is throwing HTTP 403 (Forbidden) errors, a likely cause is that the client is using an expired Shared Access Signature (SAS) when it sends a storage request (although other possible causes include clock skew, invalid keys, and empty headers). Se uma chave SAS expirada for a causa, você não verá nenhuma entrada nos dados de registro de log de armazenamento do lado do servidor.If an expired SAS key is the cause, you will not see any entries in the server-side Storage Logging log data. A tabela a seguir mostra um exemplo de log do lado do cliente gerado pela biblioteca do cliente de armazenamento que ilustra esse problema acontecendo:The following table shows a sample from the client-side log generated by the Storage Client Library that illustrates this issue occurring:

OrigemSource DetalhamentoVerbosity VerbosityVerbosity ID da solicitação do clienteClient request ID Texto de operaçãoOperation text
Microsoft.Azure.StorageMicrosoft.Azure.Storage InformaçõesInformation 33 85d077ab-…85d077ab-… Inicialização da operação com o local principal por modo de local PrimaryOnly.Starting operation with location Primary per location mode PrimaryOnly.
Microsoft.Azure.StorageMicrosoft.Azure.Storage InformaçõesInformation 33 85d077ab -…85d077ab -… Iniciando solicitação síncrona parahttps://domemaildist.blob.core.windows.netazureimblobcontainer/blobCreatedViaSAS.txt?sv=2014-02-14&sr=c&si=mypolicy&sig=OFnd4Rd7z01fIvh%2BmcR6zbudIH2F5Ikm%2FyhNYZEmJNQ%3D&api-version=2014-02-14Starting synchronous request to https://domemaildist.blob.core.windows.netazureimblobcontainer/blobCreatedViaSAS.txt?sv=2014-02-14&sr=c&si=mypolicy&sig=OFnd4Rd7z01fIvh%2BmcR6zbudIH2F5Ikm%2FyhNYZEmJNQ%3D&api-version=2014-02-14
Microsoft.Azure.StorageMicrosoft.Azure.Storage InformaçõesInformation 33 85d077ab -…85d077ab -… Esperando uma resposta.Waiting for response.
Microsoft.Azure.StorageMicrosoft.Azure.Storage AvisoWarning 22 85d077ab -…85d077ab -… Exceção acionada ao aguardar a resposta: O servidor remoto retornou um erro: (403) Proibido.Exception thrown while waiting for response: The remote server returned an error: (403) Forbidden.
Microsoft.Azure.StorageMicrosoft.Azure.Storage InformaçõesInformation 33 85d077ab -…85d077ab -… Resposta recebida.Response received. Status code = 403, Request ID = 9d67c64a-64ed-4b0d-9515-3b14bbcdc63d, Content-MD5 = , ETag = .Status code = 403, Request ID = 9d67c64a-64ed-4b0d-9515-3b14bbcdc63d, Content-MD5 = , ETag = .
Microsoft.Azure.StorageMicrosoft.Azure.Storage AvisoWarning 22 85d077ab -…85d077ab -… Exceção gerada durante a operação: O servidor remoto retornou um erro: (403) Proibido.Exception thrown during the operation: The remote server returned an error: (403) Forbidden..
Microsoft.Azure.StorageMicrosoft.Azure.Storage InformaçõesInformation 33 85d077ab -…85d077ab -… Verificando se a operação deve ser repetida.Checking if the operation should be retried. Contagem de repetição = 0, Código de status HTTP = 403, Exceção = O servidor remoto retornou um erro: (403) Proibido.Retry count = 0, HTTP status code = 403, Exception = The remote server returned an error: (403) Forbidden..
Microsoft.Azure.StorageMicrosoft.Azure.Storage InformaçõesInformation 33 85d077ab -…85d077ab -… O próximo local deve ser definido como principal, com base no modo de local.The next location has been set to Primary, based on the location mode.
Microsoft.Azure.StorageMicrosoft.Azure.Storage ErroError 11 85d077ab -…85d077ab -… A política de repetição não permitiu uma nova tentativa.Retry policy did not allow for a retry. Falha com o servidor remoto retornou um erro: (403) Proibido.Failing with The remote server returned an error: (403) Forbidden.

Nesse cenário, você deve investigar porque o token de SAS está expirando antes do cliente enviar o token para o servidor:In this scenario, you should investigate why the SAS token is expiring before the client sends the token to the server:

  • Normalmente, você não deveria definir um tempo de início quando você cria uma SAS para um cliente para usar imediatamente.Typically, you should not set a start time when you create a SAS for a client to use immediately. Se houver pequenas diferenças entre os relógios do hospedeiro que gera o SAS usando o horário atual e o serviço de armazenamento, então é possível que o serviço de armazenamento receba uma SAS que não seja válida.If there are small clock differences between the host generating the SAS using the current time and the storage service, then it is possible for the storage service to receive a SAS that is not yet valid.
  • Não defina um tempo de expiração muito curto em uma SAS.Do not set a very short expiry time on a SAS. Novamente, pequenas diferenças entre os relógios do hospedeiro gerando a SAS e o serviço de armazenamento pode levar a uma SAS aparentemente expirando mais cedo do que esperado.Again, small clock differences between the host generating the SAS and the storage service can lead to a SAS apparently expiring earlier than anticipated.
  • Os parâmetros da versão na chave SAS (por exemplo sv=2015-04-05) correspondem à versão da Biblioteca do Cliente de Armazenamento usada?Does the version parameter in the SAS key (for example sv=2015-04-05) match the version of the Storage Client Library you are using? Recomendamos usar sempre a versão mais recente da Biblioteca de Cliente de Armazenamento.We recommend that you always use the latest version of the Storage Client Library.
  • Se você regenerar suas chaves de acesso de armazenamento, isso poderá invalidar quaisquer tokens de SAS existentes.If you regenerate your storage access keys, any existing SAS tokens may be invalidated. Esse problema poderá surgir se você gerar tokens de SAS com um tempo de expiração longo para aplicativos de cliente para o cache.This issue may arise if you generate SAS tokens with a long expiry time for client applications to cache.

Se você estiver usando a biblioteca do cliente de armazenamento para gerar tokens de SAS, então será fácil compilar um token válido.If you are using the Storage Client Library to generate SAS tokens, then it is easy to build a valid token. Entretanto, se você estiver usando a API REST de Armazenamento e compilando tokens de SAS manualmente, consulte Delegando acesso com uma Assinatura de Acesso Compartilhado.However, if you are using the Storage REST API and constructing the SAS tokens by hand, see Delegating Access with a Shared Access Signature.

O cliente está recebendo mensagens HTTP 404 (Não encontrado)The client is receiving HTTP 404 (Not found) messages

Se o aplicativo do cliente recebe uma mensagem HTTP 404 (Não encontrado) do ser, isso implica que o objeto do cliente estava tentando usar (tais como: uma entidade, tabela, blob, contêiner ou fila) não existe no serviço de armazenamento.If the client application receives an HTTP 404 (Not found) message from the server, this implies that the object the client was attempting to use (such as an entity, table, blob, container, or queue) does not exist in the storage service. Existem muitas razões para isso, tais como:There are a number of possible reasons for this, such as:

O cliente ou outro processo excluiu anteriormente o objetoThe client or another process previously deleted the object

Em cenários onde o cliente está tentando ler, atualizar ou excluir dados em um serviço de armazenamento é, normalmente, fácil de se identificar nos logs do lado do servidor uma operação anterior que excluiu o objeto em questão de um serviço de armazenamento.In scenarios where the client is attempting to read, update, or delete data in a storage service it is usually easy to identify in the server-side logs a previous operation that deleted the object in question from the storage service. Frequentemente, os dados de log mostram que um outro usuário ou processo excluiu o objeto.Often, the log data shows that another user or process deleted the object. No registro de log de armazenamento no lado do servidor, as colunas do tipo de operação e de chave de objeto solicitado mostram quando um cliente excluiu um objeto.In the server-side Storage Logging log, the operation-type and requested-object-key columns show when a client deleted an object.

No cenário onde um cliente está tentando inserir um objeto, pode não ser imediatamente óbvio porque isso resulta em uma resposta HTTP 404 (Não encontrado) dado que o cliente está criando um novo objeto.In the scenario where a client is attempting to insert an object, it may not be immediately obvious why this results in an HTTP 404 (Not found) response given that the client is creating a new object. Entretanto, se o cliente estiver criando um blob, é possível achar o contêiner do blob, se o cliente estiver criando uma mensagem, é possível encontrar a fila e se o cliente estiver adicionando uma coluna é possível encontrar uma tabela.However, if the client is creating a blob it must be able to find the blob container, if the client is creating a message it must be able to find a queue, and if the client is adding a row it must be able to find the table.

Você pode usar o log do lado do cliente a partir da biblioteca do cliente de armazenamento para obter uma compreensão mais detalhada de quando o cliente envia solicitações específicas para o serviço de armazenamento.You can use the client-side log from the Storage Client Library to gain a more detailed understanding of when the client sends specific requests to the storage service.

O seguinte log do lado do cliente gerado pela biblioteca do cliente de armazenamento ilustra o problema quando o cliente não pode encontrar o contêiner para o blob que está criando.The following client-side log generated by the Storage Client library illustrates the problem when the client cannot find the container for the blob it is creating. Esse log inclui detalhes das seguintes operações de armazenamento:This log includes details of the following storage operations:

ID da SolicitaçãoRequest ID OperaçãoOperation
07b26a5d-...07b26a5d-... DeleteIfExists para excluir o contêiner do blob.DeleteIfExists method to delete the blob container. Observe que essa operação inclui uma solicitação HEAD para verificar a existência do contêiner.Note that this operation includes a HEAD request to check for the existence of the container.
e2d06d78…e2d06d78… CreateIfNotExists para criar o contêiner do blob.CreateIfNotExists method to create the blob container. Observe que essa operação inclui uma solicitação HEAD que verifica a existência do contêiner.Note that this operation includes a HEAD request that checks for the existence of the container. HEAD retorna uma mensagem 404, porém continua.The HEAD returns a 404 message but continues.
de8b1c3c-...de8b1c3c-... UploadFromStream para criar um blob.UploadFromStream method to create the blob. A solicitação PUT falha com uma mensagem 404The PUT request fails with a 404 message

Entradas de log:Log entries:

ID de solicitaçãoRequest ID Texto de operaçãoOperation Text
07b26a5d-...07b26a5d-... Iniciando solicitação síncrona para https://domemaildist.blob.core.windows.net/azuremmblobcontainer.Starting synchronous request to https://domemaildist.blob.core.windows.net/azuremmblobcontainer.
07b26a5d-...07b26a5d-... StringToSign = HEAD............x-ms-client-request-id:07b26a5d-....x-ms-date:Tue, 03 Jun 2014 10:33:11 GMT.x-ms-version:2014-02-14./domemaildist/azuremmblobcontainer.restype:container.StringToSign = HEAD............x-ms-client-request-id:07b26a5d-....x-ms-date:Tue, 03 Jun 2014 10:33:11 GMT.x-ms-version:2014-02-14./domemaildist/azuremmblobcontainer.restype:container.
07b26a5d-...07b26a5d-... Esperando uma resposta.Waiting for response.
07b26a5d-...07b26a5d-... Resposta recebida.Response received. Status code = 200, Request ID = eeead849-...Content-MD5 = , ETag = "0x8D14D2DC63D059B".Status code = 200, Request ID = eeead849-...Content-MD5 = , ETag = "0x8D14D2DC63D059B".
07b26a5d-...07b26a5d-... Cabeçalhos da resposta foram processados com êxito, procedendo com o resto da operação.Response headers were processed successfully, proceeding with the rest of the operation.
07b26a5d-...07b26a5d-... Baixar o corpo da resposta.Downloading response body.
07b26a5d-...07b26a5d-... Operação concluída com sucesso.Operation completed successfully.
07b26a5d-...07b26a5d-... Iniciando solicitação síncrona para https://domemaildist.blob.core.windows.net/azuremmblobcontainer.Starting synchronous request to https://domemaildist.blob.core.windows.net/azuremmblobcontainer.
07b26a5d-...07b26a5d-... StringToSign = DELETE............x-ms-client-request-id:07b26a5d-....x-ms-date:Tue, 03 Jun 2014 10:33:12 GMT.x-ms-version:2014-02-14./domemaildist/azuremmblobcontainer.restype:container.StringToSign = DELETE............x-ms-client-request-id:07b26a5d-....x-ms-date:Tue, 03 Jun 2014 10:33:12 GMT.x-ms-version:2014-02-14./domemaildist/azuremmblobcontainer.restype:container.
07b26a5d-...07b26a5d-... Esperando uma resposta.Waiting for response.
07b26a5d-...07b26a5d-... Resposta recebida.Response received. Status code = 202, Request ID = 6ab2a4cf-..., Content-MD5 = , ETag = .Status code = 202, Request ID = 6ab2a4cf-..., Content-MD5 = , ETag = .
07b26a5d-...07b26a5d-... Cabeçalhos da resposta foram processados com êxito, procedendo com o resto da operação.Response headers were processed successfully, proceeding with the rest of the operation.
07b26a5d-...07b26a5d-... Baixar o corpo da resposta.Downloading response body.
07b26a5d-...07b26a5d-... Operação concluída com sucesso.Operation completed successfully.
e2d06d78-...e2d06d78-... Iniciando solicitação assíncrona para https://domemaildist.blob.core.windows.net/azuremmblobcontainer.Starting asynchronous request to https://domemaildist.blob.core.windows.net/azuremmblobcontainer.
e2d06d78-...e2d06d78-... StringToSign = HEAD............x-ms-client-request-id:e2d06d78-....x-ms-date:Tue, 03 Jun 2014 10:33:12 GMT.x-ms-version:2014-02-14./domemaildist/azuremmblobcontainer.restype:container.StringToSign = HEAD............x-ms-client-request-id:e2d06d78-....x-ms-date:Tue, 03 Jun 2014 10:33:12 GMT.x-ms-version:2014-02-14./domemaildist/azuremmblobcontainer.restype:container.
e2d06d78-...e2d06d78-... Esperando uma resposta.Waiting for response.
de8b1c3c-...de8b1c3c-... Iniciando solicitação síncrona para https://domemaildist.blob.core.windows.net/azuremmblobcontainer/blobCreated.txt.Starting synchronous request to https://domemaildist.blob.core.windows.net/azuremmblobcontainer/blobCreated.txt.
de8b1c3c-...de8b1c3c-... StringToSign = PUT...64.qCmF+TQLPhq/YYK50mP9ZQ==........x-ms-blob-type:BlockBlob.x-ms-client-request-id:de8b1c3c-....x-ms-date:Tue, 03 Jun 2014 10:33:12 GMT.x-ms-version:2014-02-14./domemaildist/azuremmblobcontainer/blobCreated.txt.StringToSign = PUT...64.qCmF+TQLPhq/YYK50mP9ZQ==........x-ms-blob-type:BlockBlob.x-ms-client-request-id:de8b1c3c-....x-ms-date:Tue, 03 Jun 2014 10:33:12 GMT.x-ms-version:2014-02-14./domemaildist/azuremmblobcontainer/blobCreated.txt.
de8b1c3c-...de8b1c3c-... Preparação para gravar os dados solicitados.Preparing to write request data.
e2d06d78-...e2d06d78-... Exceção acionada ao aguardar a resposta: O servidor remoto retornou um erro: (404) Não encontrado…Exception thrown while waiting for response: The remote server returned an error: (404) Not Found..
e2d06d78-...e2d06d78-... Resposta recebida.Response received. Status code = 404, Request ID = 353ae3bc-..., Content-MD5 = , ETag = .Status code = 404, Request ID = 353ae3bc-..., Content-MD5 = , ETag = .
e2d06d78-...e2d06d78-... Cabeçalhos da resposta foram processados com êxito, procedendo com o resto da operação.Response headers were processed successfully, proceeding with the rest of the operation.
e2d06d78-...e2d06d78-... Baixar o corpo da resposta.Downloading response body.
e2d06d78-...e2d06d78-... Operação concluída com sucesso.Operation completed successfully.
e2d06d78-...e2d06d78-... Iniciando solicitação assíncrona para https://domemaildist.blob.core.windows.net/azuremmblobcontainer.Starting asynchronous request to https://domemaildist.blob.core.windows.net/azuremmblobcontainer.
e2d06d78-...e2d06d78-... StringToSign = PUT...0.........x-ms-client-request-id:e2d06d78-....x-ms-date:Tue, 03 Jun 2014 10:33:12 GMT.x-ms-version:2014-02-14./domemaildist/azuremmblobcontainer.restype:container.StringToSign = PUT...0.........x-ms-client-request-id:e2d06d78-....x-ms-date:Tue, 03 Jun 2014 10:33:12 GMT.x-ms-version:2014-02-14./domemaildist/azuremmblobcontainer.restype:container.
e2d06d78-...e2d06d78-... Esperando uma resposta.Waiting for response.
de8b1c3c-...de8b1c3c-... Gravação dos dados solicitados.Writing request data.
de8b1c3c-...de8b1c3c-... Esperando uma resposta.Waiting for response.
e2d06d78-...e2d06d78-... Exceção acionada ao aguardar a resposta: O servidor remoto retornou um erro: (409) Conflito.Exception thrown while waiting for response: The remote server returned an error: (409) Conflict..
e2d06d78-...e2d06d78-... Resposta recebida.Response received. Status code = 409, Request ID = c27da20e-..., Content-MD5 = , ETag = .Status code = 409, Request ID = c27da20e-..., Content-MD5 = , ETag = .
e2d06d78-...e2d06d78-... Erro ao baixar o corpo da resposta.Downloading error response body.
de8b1c3c-...de8b1c3c-... Exceção acionada ao aguardar a resposta: O servidor remoto retornou um erro: (404) Não encontrado…Exception thrown while waiting for response: The remote server returned an error: (404) Not Found..
de8b1c3c-...de8b1c3c-... Resposta recebida.Response received. Status code = 404, Request ID = 0eaeab3e-..., Content-MD5 = , ETag = .Status code = 404, Request ID = 0eaeab3e-..., Content-MD5 = , ETag = .
de8b1c3c-...de8b1c3c-... Exceção gerada durante a operação: O servidor remoto retornou um erro: (404) Não encontrado…Exception thrown during the operation: The remote server returned an error: (404) Not Found..
de8b1c3c-...de8b1c3c-... A política de repetição não permitiu uma nova tentativa.Retry policy did not allow for a retry. Falha com o servidor remoto retornou um erro: (404) Não encontrado…Failing with The remote server returned an error: (404) Not Found..
e2d06d78-...e2d06d78-... A política de repetição não permitiu uma nova tentativa.Retry policy did not allow for a retry. Falha com o servidor remoto retornou um erro: (409) Conflito.Failing with The remote server returned an error: (409) Conflict..

Nesse exemplo, o log mostra que o cliente está intercalando solicitações do método CreateIfNotExists (ID de solicitação e2d06d78…) com as solicitações do método UploadFromStream (de8b1c3c-...). Essa intercalação acontece porque o aplicativo de cliente está invocando esses métodos de forma assíncrona.In this example, the log shows that the client is interleaving requests from the CreateIfNotExists method (request ID e2d06d78…) with the requests from the UploadFromStream method (de8b1c3c-...). This interleaving happens because the client application is invoking these methods asynchronously. Modifique o código assíncrono no cliente para garantir que ele crie o contêiner antes de tentar carregar qualquer dado para o blob nesse contêiner.Modify the asynchronous code in the client to ensure that it creates the container before attempting to upload any data to a blob in that container. Idealmente, crie todos os contêineres antes.Ideally, you should create all your containers in advance.

Um problema de autorização de assinatura de acesso compartilhado (SAS)A Shared Access Signature (SAS) authorization issue

Se o aplicativo do cliente tentar usar uma chave de SAS que não inclui as permissões necessárias para a operação, o serviço de armazenamento retorna uma mensagem HTTP 404 (Não encontrado) para o cliente.If the client application attempts to use a SAS key that does not include the necessary permissions for the operation, the storage service returns an HTTP 404 (Not found) message to the client. Ao mesmo tempo, você também verá um valor diferente de zero para SASAuthorizationError nas métricas.At the same time, you will also see a non-zero value for SASAuthorizationError in the metrics.

A tabela a seguir mostra um exemplo de mensagem d log do lado do servidor a partir do arquivo de registro de log de armazenamento:The following table shows a sample server-side log message from the Storage Logging log file:

NomeName ValorValue
Hora de início da solicitaçãoRequest start time 2014-05-30T06:17:48.4473697Z2014-05-30T06:17:48.4473697Z
Tipo de operaçãoOperation type GetBlobPropertiesGetBlobProperties
Status da solicitaçãoRequest status SASAuthorizationErrorSASAuthorizationError
Código de status HTTPHTTP status code 404404
Tipo de autenticação.Authentication type SasSas
Tipo de serviçoService type BlobBlob
URL da solicitaçãoRequest URL https://domemaildist.blob.core.windows.net/azureimblobcontainer/blobCreatedViaSAS.txt
  ?sv=2014-02-14&sr=c&si=mypolicy&sig=XXXXX&;api-version=2014-02-14?sv=2014-02-14&sr=c&si=mypolicy&sig=XXXXX&;api-version=2014-02-14
Cabeçalho da ID de solicitaçãoRequest ID header a1f348d5-8032-4912-93ef-b393e5252a3ba1f348d5-8032-4912-93ef-b393e5252a3b
ID de solicitação do clienteClient request ID 2d064953-8436-4ee0-aa0c-65cb874f79292d064953-8436-4ee0-aa0c-65cb874f7929

Investigue por que o aplicativo de cliente está tentando realizar uma operação para a qual ele não tem permissão.Investigate why your client application is attempting to perform an operation for which it has not been granted permissions.

O código JavaScript do lado do cliente não tem permissão para acessar o objetoClient-side JavaScript code does not have permission to access the object

Se você estiver usando um cliente JavaScript e um serviço de armazenamento está retornando mensagens HTTP 404 (Não encontrado), verifique os seguintes erros JavaScript no navegador:If you are using a JavaScript client and the storage service is returning HTTP 404 messages, you check for the following JavaScript errors in the browser:

SEC7120: Origin http://localhost:56309 not found in Access-Control-Allow-Origin header.
SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.

Observação

Você pode usar a ferramenta de desenvolvedor F12 no Internet Explorer para rastrear as mensagens trocadas entre o navegador e o serviço de armazenamento quando você estiver solucionando os problemas JavaScript do lado do cliente.You can use the F12 Developer Tools in Internet Explorer to trace the messages exchanged between the browser and the storage service when you are troubleshooting client-side JavaScript issues.

Esses erros acontecem porque o navegador da Web implementa a restrição de segurança de política de mesma origem , que impede uma página da Web de chamar uma API em um domínio diferente do domínio de onde a página vem.These errors occur because the web browser implements the same origin policy security restriction that prevents a web page from calling an API in a different domain from the domain the page comes from.

Para resolver o problema JavaScript, configure o compartilhamento de recursos entre origens (CORS) para o serviço de armazenamento que o cliente está acessando.To work around the JavaScript issue, you can configure Cross Origin Resource Sharing (CORS) for the storage service the client is accessing. Para saber mais, veja Suporte de CORS (Compartilhamento de Recursos entre Origens) para os Serviços de Armazenamento do Azure.For more information, see Cross-Origin Resource Sharing (CORS) Support for Azure Storage Services.

O código a seguir mostra como configurar seu serviço blob para permitir que o JavaScript execute o domínio Contoso para acessar um blob no seu serviço de armazenamento de blob:The following code sample shows how to configure your blob service to allow JavaScript running in the Contoso domain to access a blob in your blob storage service:

CloudBlobClient client = new CloudBlobClient(blobEndpoint, new StorageCredentials(accountName, accountKey));
// Set the service properties.
ServiceProperties sp = client.GetServiceProperties();
sp.DefaultServiceVersion = "2013-08-15";
CorsRule cr = new CorsRule();
cr.AllowedHeaders.Add("*");
cr.AllowedMethods = CorsHttpMethods.Get | CorsHttpMethods.Put;
cr.AllowedOrigins.Add("http://www.contoso.com");
cr.ExposedHeaders.Add("x-ms-*");
cr.MaxAgeInSeconds = 5;
sp.Cors.CorsRules.Clear();
sp.Cors.CorsRules.Add(cr);
client.SetServiceProperties(sp);

Falha de redeNetwork Failure

Em algumas circunstâncias, os pacotes de rede perdidos podem levar o serviço de armazenamento a retornar mensagens HTTP 404 para o cliente.In some circumstances, lost network packets can lead to the storage service returning HTTP 404 messages to the client. Por exemplo, quando o seu aplicativo do cliente está excluindo uma entidade do serviço de tabela, você pode ver o cliente emitir uma exceção de armazenamento relatando uma mensagem de status "HTTP 404 (Não encontrado)" do serviço de tabela.For example, when your client application is deleting an entity from the table service you see the client throw a storage exception reporting an "HTTP 404 (Not Found)" status message from the table service. Quando você investiga a tabela no serviço de armazenamento da tabela, é possível ver que o serviço excluiu a entidade como solicitado.When you investigate the table in the table storage service, you see that the service did delete the entity as requested.

Os detalhes da exceção no cliente incluem a ID da solicitação (7e84f12d...) atribuída pelo serviço Tabela para a solicitação: você pode usar essas informações para localizar os detalhes da solicitação nos logs de armazenamento no lado do servidor pesquisando na coluna request-id-header no arquivo de log.The exception details in the client include the request ID (7e84f12d…) assigned by the table service for the request: you can use this information to locate the request details in the server-side storage logs by searching in the request-id-header column in the log file. Você pode também usar as métricas para identificar quando falhas como essa ocorrem e pesquisar os arquivos de log com base no horário que as métricas registraram esse erro.You could also use the metrics to identify when failures such as this occur and then search the log files based on the time the metrics recorded this error. Essa entrada de log mostram a falha excluída com uma mensagem de status "HTTP (404) Outro Erro do Cliente".This log entry shows that the delete failed with an "HTTP (404) Client Other Error" status message. A mesma entrada de log também inclui a ID de solicitação gerada pelo cliente na coluna client-request-id (813ea74f…).The same log entry also includes the request ID generated by the client in the client-request-id column (813ea74f…).

O log do lado do servidor inclui também uma outra entrada com o mesmo valor client-request-id (813ea74f…) para uma operação de exclusão com sucesso para a mesma entidade e do mesmo cliente.The server-side log also includes another entry with the same client-request-id value (813ea74f…) for a successful delete operation for the same entity, and from the same client. A operação de exclusão com êxito aconteceu um pouco antes da solicitação de exclusão falhar.This successful delete operation took place very shortly before the failed delete request.

O caso mais provável nesse cenário é que o cliente enviou uma solicitação excluída da entidade para o serviço de tabela, a qual teve êxito, mas não recebeu uma confirmação do servidor (talvez devido a problemas temporários de rede).The most likely cause of this scenario is that the client sent a delete request for the entity to the table service, which succeeded, but did not receive an acknowledgement from the server (perhaps due to a temporary network issue). O cliente repetiu a operação automaticamente (usando o mesmo client-request-id) e essa tentativa falhou porque a entidade já tinha sido excluída.The client then automatically retried the operation (using the same client-request-id), and this retry failed because the entity had already been deleted.

Se esse problema ocorre com frequência, investigue porque o cliente não está recebendo as confirmações do serviço de tabela.If this problem occurs frequently, you should investigate why the client is failing to receive acknowledgements from the table service. Se o problema for intermitente, intercepte o erro "HTTP (404) Não encontrado" e log no cliente, mas permita que o cliente continue.If the problem is intermittent, you should trap the "HTTP (404) Not Found" error and log it in the client, but allow the client to continue.

O cliente está recebendo mensagens HTTP 409 (Conflito)The client is receiving HTTP 409 (Conflict) messages

A tabela a seguir mostra um trecho do log do lado do servidor para duas operações de cliente: DeleteIfExists seguida imediatamente por CreateIfNotExists usando o mesmo nome de contêiner de blob.The following table shows an extract from the server-side log for two client operations: DeleteIfExists followed immediately by CreateIfNotExists using the same blob container name. Cada operação do cliente resulta em duas solicitações enviadas para o servidor, primeiro uma solicitação GetContainerProperties para verificar se o contêiner existe, seguida por uma solicitação de DeleteContainer ou CreateContainer.Each client operation results in two requests sent to the server, first a GetContainerProperties request to check if the container exists, followed by the DeleteContainer or CreateContainer request.

Carimbo de data/horaTimestamp OperaçãoOperation ResultadoResult Nome do contêinerContainer name ID da solicitação do clienteClient request ID
05:10:13.716722505:10:13.7167225 GetContainerPropertiesGetContainerProperties 200200 mmcontmmcont c9f52c89-…c9f52c89-…
05:10:13.816732505:10:13.8167325 DeleteContainerDeleteContainer 202202 mmcontmmcont c9f52c89-…c9f52c89-…
05:10:13.898740705:10:13.8987407 GetContainerPropertiesGetContainerProperties 404404 mmcontmmcont bc881924-…bc881924-…
05:10:14.214772305:10:14.2147723 CreateContainerCreateContainer 409409 mmcontmmcont bc881924-…bc881924-…

O código no aplicativo cliente exclui e, em seguida, recria imediatamente um contêiner de blob usando o mesmo nome: o método CreateIfNotExists (ID de solicitação de cliente bc881924-...), eventualmente, falha com o erro de HTTP 409 (Conflito).The code in the client application deletes and then immediately recreates a blob container using the same name: the CreateIfNotExists method (Client request ID bc881924-…) eventually fails with the HTTP 409 (Conflict) error. Quando um cliente exclui contêineres de blob, tabelas ou filas há um breve período antes do nome ficar disponível novamente.When a client deletes blob containers, tables, or queues there is a brief period before the name becomes available again.

O aplicativo do cliente deve usar nomes de contêiner exclusivos sempre que criar novos contêineres caso o padrão excluir/recriar for comum.The client application should use unique container names whenever it creates new containers if the delete/recreate pattern is common.

As métricas mostram uma baixa PercentSuccess ou as entradas de log analíticas têm operações com status de transação de ClientOtherErrorsMetrics show low PercentSuccess or analytics log entries have operations with transaction status of ClientOtherErrors

As métricas de PercentSuccess capturam a porcentagem das operações que tiveram êxito com base nos códigos de status HTTP.The PercentSuccess metric captures the percent of operations that were successful based on their HTTP Status Code. As operações com códigos de status 2XX contam como bem-sucedidas, enquanto as operações com código de status de intervalos 3XX, 4XX e 5XX são contadas como sem sucesso e inferiores aos valores de métricas PercentSuccess.Operations with status codes of 2XX count as successful, whereas operations with status codes in 3XX, 4XX and 5XX ranges are counted as unsuccessful and lower the PercentSuccess metric value. Nos arquivos de log do lado do servidor, essas operações são registradas com um status de transação de ClientOtherErrors.In the server-side storage log files, these operations are recorded with a transaction status of ClientOtherErrors.

É importante observar que essas operações foram concluídas com sucesso e por isso não afetam as outras métricas como a de disponibilidade.It is important to note that these operations have completed successfully and therefore do not affect other metrics such as availability. Alguns exemplos de operações que executam com sucesso, mas que podem resultar em códigos de status HTTP sem sucesso incluem:Some examples of operations that execute successfully but that can result in unsuccessful HTTP status codes include:

  • ResourceNotFound (Não encontrado 404), por exemplo, de uma solicitação GET para o blob que não existe.ResourceNotFound (Not Found 404), for example from a GET request to a blob that does not exist.
  • ResourceAlreadyExists (Conflito 409), por exemplo, de uma operação CreateIfNotExist em que o recurso já existe.ResourceAlreadyExists (Conflict 409), for example from a CreateIfNotExist operation where the resource already exists.
  • ConditionNotMet (Não Modificado 304), por exemplo, de uma operação condicional tal como quando o cliente envia um valor ETag e um cabeçalho HTTP If-None-Match para solicitar uma imagem apenas se ela tiver sido carregada desde a última operação.ConditionNotMet (Not Modified 304), for example from a conditional operation such as when a client sends an ETag value and an HTTP If-None-Match header to request an image only if it has been updated since the last operation.

Você pode encontrar uma lista de códigos de erro comuns da API REST que os serviços de armazenamento retornam na página Códigos de erro comuns da API REST.You can find a list of common REST API error codes that the storage services return on the page Common REST API Error Codes.

As métricas de capacidade mostram um aumento inesperado em uso de capacidade de armazenamentoCapacity metrics show an unexpected increase in storage capacity usage

Se você vê mudanças repentinas, inesperadas na capacidade de uso na sua conta de armazenamento, você pode investigar as razões, primeiramente olhando as métricas de disponibilidade; por exemplo, um aumento no número de falhas de solicitações de exclusão pode levar a um aumento na quantidade de armazenamento de blobs que você está usando, já que operações de limpeza específicas de aplicativo que você esperava que estivessem liberando espaço podem não estar funcionando como esperado (por exemplo, porque os tokens SAS usados para liberação de espaço expiraram).If you see sudden, unexpected changes in capacity usage in your storage account, you can investigate the reasons by first looking at your availability metrics; for example, an increase in the number of failed delete requests might lead to an increase in the amount of blob storage you are using as application-specific cleanup operations you might have expected to be freeing up space may not be working as expected (for example, because the SAS tokens used for freeing up space have expired).

Seu problema apareceu por usar o emulador de armazenamento para desenvolvimento ou testeYour issue arises from using the storage emulator for development or test

Você normalmente usa o emulador de armazenamento durante o desenvolvimento e teste para evitar o requisito de uma conta de armazenamento do Azure.You typically use the storage emulator during development and test to avoid the requirement for an Azure storage account. Os problemas comuns que podem ocorrer quando você estiver usando o emulador de armazenamento são:The common issues that can occur when you are using the storage emulator are:

O recurso "X” não está funcionando no emulador de armazenamentoFeature "X" is not working in the storage emulator

O emulador de armazenamento não é compatível com todos os recursos dos serviços de armazenamento do Azure, como o serviço de arquivo.The storage emulator does not support all of the features of the Azure storage services such as the file service. Para saber mais, confira Usar o Emulador de Armazenamento do Azure para desenvolvimento e teste.For more information, see Use the Azure Storage Emulator for Development and Testing.

Para os recursos que não são compatíveis com o emulador de armazenamento, use o serviço de armazenamento do Azure em nuvem.For those features that the storage emulator does not support, use the Azure storage service in the cloud.

Erro "O valor de um dos cabeçalhos HTTP não está no formato correto" ao usar o emulador de armazenamentoError "The value for one of the HTTP headers is not in the correct format" when using the storage emulator

Você está testando o seu aplicativo (que usa a Biblioteca de Clientes de Armazenamento) no emulador de armazenamento local e chamadas de método como CreateIfNotExists falham com uma mensagem de erro "O valor para um dos cabeçalhos HTTP não está no formato correto".You are testing your application that uses the Storage Client Library against the local storage emulator and method calls such as CreateIfNotExists fail with the error message "The value for one of the HTTP headers is not in the correct format." Isso indica que a versão do emulador de armazenamento que você está usando não é compatível com a versão da biblioteca do cliente de armazenamento que você está usando.This indicates that the version of the storage emulator you are using does not support the version of the storage client library you are using. A biblioteca do cliente de armazenamento adiciona um cabeçalho x-ms-version em todas as solicitações que ela faz.The Storage Client Library adds the header x-ms-version to all the requests it makes. Se o emulador de armazenamento não reconhecer o valor no cabeçalho x-ms-version , ele rejeita a solicitação.If the storage emulator does not recognize the value in the x-ms-version header, it rejects the request.

Você pode usar os logs de clientes de biblioteca de armazenamento para ver o valor do cabeçalho x-ms-version que está enviando.You can use the Storage Library Client logs to see the value of the x-ms-version header it is sending. Você também pode ver o valor do cabeçalho x-ms-version se você usar o Fiddler para rastrear as solicitações do aplicativo do cliente.You can also see the value of the x-ms-version header if you use Fiddler to trace the requests from your client application.

Esse cenário normalmente acontece se você instalar e usar a versão mais recente da biblioteca do cliente de armazenamento sem atualizar o emulador de armazenamento.This scenario typically occurs if you install and use the latest version of the Storage Client Library without updating the storage emulator. Instale a versão mais recente do emulador de armazenamento ou use o armazenamento em nuvem em vez do emulador para desenvolvimento ou teste.You should either install the latest version of the storage emulator, or use cloud storage instead of the emulator for development and test.

A execução do emulador de armazenamento requer privilégios administrativosRunning the storage emulator requires administrative privileges

Você pode solicitar credenciais para o administrador quando você executar o emulador de armazenamento.You are prompted for administrator credentials when you run the storage emulator. Isso acontece apenas quando você inicializar o emulador de armazenamento pela primeira vez.This only occurs when you are initializing the storage emulator for the first time. Após você ter inicializado o emulador de armazenamento, você não precisa de privilégios de administrador para executá-lo novamente.After you have initialized the storage emulator, you do not need administrative privileges to run it again.

Para saber mais, confira Usar o Emulador de Armazenamento do Azure para desenvolvimento e teste.For more information, see Use the Azure Storage Emulator for Development and Testing. Você também pode inicializar o emulador de armazenamento no Visual Studio, o que também exige privilégios administrativos.You can also initialize the storage emulator in Visual Studio, which will also require administrative privileges.

Você encontrou problemas ao instalar o SDK do Azure para .NETYou are encountering problems installing the Azure SDK for .NET

Quando você tenta instalar o SDK, ele falhar ao tentar instalar o emulador de armazenamento no seu computador local.When you try to install the SDK, it fails trying to install the storage emulator on your local machine. O log de instalação contém uma das seguintes mensagens:The installation log contains one of the following messages:

  • CAQuietExec: Erro: Não é possível acessar a instância do SQLCAQuietExec: Error: Unable to access SQL instance
  • CAQuietExec: Erro: Não é possível criar o banco de dadosCAQuietExec: Error: Unable to create database

A causa é um problema com a instalação LocalDB existente.The cause is an issue with existing LocalDB installation. Por padrão, o emulador de armazenamento usa o LocalDB para persistir os dados quando simula os serviços de armazenamento do Azure.By default, the storage emulator uses LocalDB to persist data when it simulates the Azure storage services. Você pode reiniciar a sua instância LocalDB ao executar os seguintes comando na janela de prompt de comando antes de tentar instalar o SDK.You can reset your LocalDB instance by running the following commands in a command-prompt window before trying to install the SDK.

sqllocaldb stop v11.0
sqllocaldb delete v11.0
delete %USERPROFILE%\WAStorageEmulatorDb3*.*
sqllocaldb create v11.0

O comando delete remove qualquer arquivo de bancos de dado antigo das instalações anteriores do emulador de armazenamento.The delete command removes any old database files from previous installations of the storage emulator.

Você tem um problema diferente com um serviço de armazenamentoYou have a different issue with a storage service

Se as seções anteriores de solução de problemas não incluem os problemas que você está tendo com o serviço de armazenamento, adote a seguinte abordagem para diagnosticar a solução de seu problema.If the previous troubleshooting sections do not include the issue you are having with a storage service, you should adopt the following approach to diagnosing and troubleshooting your issue.

  • Verifique as métricas para ver se há qualquer mudança de comportamento da linha de base esperada.Check your metrics to see if there is any change from your expected base-line behavior. A partir das métricas, você pode determinar se o problema é transitório ou permanente, e quais as operações de armazenamento que o problema está afetando.From the metrics, you may be able to determine whether the issue is transient or permanent, and which storage operations the issue is affecting.
  • Você pode usar as informações de métricas para ajudá-lo a procurar os dados de log do lado do servidor para obter informações mais detalhadas sobre qualquer erro que esteja ocorrendo.You can use the metrics information to help you search your server-side log data for more detailed information about any errors that are occurring. Essa informação pode ajudá-lo a encontrar e a solucionar o problema.This information may help you troubleshoot and resolve the issue.
  • Se a informação nos logs do lado do servidor não forem suficientes para resolver o problema com êxito, você pode usar os logs do lado do cliente da biblioteca do cliente de armazenamento para investigar o comportamento do seu aplicativo do cliente e ferramentas, tais como Fiddler, Wireshark e Microsoft Message Analyzer para investigar a sua rede.If the information in the server-side logs is not sufficient to troubleshoot the issue successfully, you can use the Storage Client Library client-side logs to investigate the behavior of your client application, and tools such as Fiddler, Wireshark, and Microsoft Message Analyzer to investigate your network.

Para obter mais informações sobre como usar o Fiddler, veja o "Apêndice 1: Usando o Fiddler para capturar o tráfego HTTP e HTTPS".For more information about using Fiddler, see "Appendix 1: Using Fiddler to capture HTTP and HTTPS traffic."

Para obter mais informações sobre como usar o Wireshark, veja o "Apêndice 2: Usando o Wireshark para capturar o tráfego de rede."For more information about using Wireshark, see "Appendix 2: Using Wireshark to capture network traffic."

Para obter mais informações sobre como usar o Analisador de Mensagem da Microsoft, veja o "Apêndice 3: Usando o Analisador de Mensagem da Microsoft para capturar o tráfego de rede."For more information about using Microsoft Message Analyzer, see "Appendix 3: Using Microsoft Message Analyzer to capture network traffic."

AnexosAppendices

Os anexos descrevem várias ferramentas que você pode achar úteis ao diagnosticar ou solucionar os problemas com o armazenamento do Azure (e outros serviços).The appendices describe several tools that you may find useful when you are diagnosing and troubleshooting issues with Azure Storage (and other services). Essas ferramentas não são parte do armazenamento do Azure e alguns são produtos de terceiros.These tools are not part of Azure Storage and some are third-party products. Como tal, as ferramentas discutidas nesses anexos não são cobertas por nenhum contrato de suporte que você possa ter com o Microsoft Azure ou Armazenamento do Azure e, portanto, como parte de seu processo de avaliação examine as opções de licença e de suporte disponíveis pelos fornecedores dessas ferramentas.As such, the tools discussed in these appendices are not covered by any support agreement you may have with Microsoft Azure or Azure Storage, and therefore as part of your evaluation process you should examine the licensing and support options available from the providers of these tools.

Apêndice 1: Usando o Fiddler para capturar o tráfego HTTP e HTTPSAppendix 1: Using Fiddler to capture HTTP and HTTPS traffic

Fiddler é uma ferramenta útil para analisar o tráfego HTTP e HTTPS entre o aplicativo do cliente e o serviço de armazenamento do Azure que você está usando.Fiddler is a useful tool for analyzing the HTTP and HTTPS traffic between your client application and the Azure storage service you are using.

Observação

O Fiddler pode decodificar o tráfego HTTPS; leia a documentação do Fiddler cuidadosamente para entender como ele faz isso e para entender as implicações de segurança.Fiddler can decode HTTPS traffic; you should read the Fiddler documentation carefully to understand how it does this, and to understand the security implications.

Esse anexo dá um breve passo a passo de como configurar o Fiddler para capturar o tráfego entre o computador local onde você instalou o Fiddler e os serviços de armazenamento do Azure.This appendix provides a brief walkthrough of how to configure Fiddler to capture traffic between the local machine where you have installed Fiddler and the Azure storage services.

Após você ter iniciado o Fiddler, ele começará capturar o tráfego HTTP e HTTPS da sua máquina local.After you have launched Fiddler, it will begin capturing HTTP and HTTPS traffic on your local machine. A seguir há alguns comandos úteis para controlar o Fiddler:The following are some useful commands for controlling Fiddler:

  • Parar e iniciar a captura de tráfego.Stop and start capturing traffic. No menu principal, vá para Arquivo e clique em Capturar Tráfego para alternar entre captura ativada e desativada.On the main menu, go to File and then click Capture Traffic to toggle capturing on and off.
  • Salve os dados de tráfego capturados.Save captured traffic data. No menu principal, vá até Arquivo, clique em Salvar e, em seguida, clique em Todas as Sessões: isso permite que você salve o tráfego em um arquivo de sessão.On the main menu, go to File, click Save, and then click All Sessions: this enables you to save the traffic in a Session Archive file. Você pode recarregar um Session Archive mais tarde para análise ou enviá-lo se solicitado pelo suporte Microsoft.You can reload a Session Archive later for analysis, or send it if requested to Microsoft support.

Para limitar o valor de tráfego que o Fiddler captura, você pode usar filtros que você configura na guia Filtros . A seguinte captura de tela mostra um filtro que captura apenas o tráfego enviado para o ponto de extremidade de armazenamento contosoemaildist.table.core.windows.net :To limit the amount of traffic that Fiddler captures, you can use filters that you configure in the Filters tab. The following screenshot shows a filter that captures only traffic sent to the contosoemaildist.table.core.windows.net storage endpoint:

Apêndice 2: Usando o Wireshark para capturar o tráfego de redeAppendix 2: Using Wireshark to capture network traffic

Wireshark é um analisar de protocolo de rede que permite que você exiba informações detalhadas de pacote de uma vasta gama de protocolos de rede.Wireshark is a network protocol analyzer that enables you to view detailed packet information for a wide range of network protocols.

O procedimento a seguir mostra como capturar informações detalhadas de pacote para tráfego a partir do computador local onde você instalou o Wireshark para o serviço de tabela na sua conta de armazenamento do Azure.The following procedure shows you how to capture detailed packet information for traffic from the local machine where you installed Wireshark to the table service in your Azure storage account.

  1. Habilite o Wireshark no seu computador local.Launch Wireshark on your local machine.

  2. Na seção Iniciar , selecione a interface de rede local ou as interfaces que estão conectadas à Internet.In the Start section, select the local network interface or interfaces that are connected to the internet.

  3. Clique em Opções de Captura.Click Capture Options.

  4. Adicione um filtro à caixa de texto Filtro de Captura .Add a filter to the Capture Filter textbox. Por exemplo, o host contosoemaildist.table.core.windows.net configurará o Wireshark para capturar apenas os pacotes enviados para ou a partir do ponto de extremidade de serviço tabela na conta de armazenamento contosoemaildist.For example, host contosoemaildist.table.core.windows.net will configure Wireshark to capture only packets sent to or from the table service endpoint in the contosoemaildist storage account. Confira a Lista completa de filtros de captura.Check out the complete list of Capture Filters.

  5. Clique em Iniciar.Click Start. O Wireshark capturará agora todos pacotes enviados para ou a partir do ponto de extremidade do serviço de tabela enquanto você usa o aplicativo do cliente no seu computador local.Wireshark will now capture all the packets send to or from the table service endpoint as you use your client application on your local machine.

  6. Quando você tiver terminado, no menu principal clique em Capturar e em Parar.When you have finished, on the main menu click Capture and then Stop.

  7. Para salvar os dados capturados no arquivo de captura do Wireshark, no menu principal clique em Arquivo e em Salvar.To save the captured data in a Wireshark Capture File, on the main menu click File and then Save.

O Wireshark irá realçar qualquer erro que existir na janela packetlist .WireShark will highlight any errors that exist in the packetlist window. Você também pode usar a janela Informações do Especialista (clique em Analisar e em Informações do Especialista) para exibir um resumo dos erros e avisos.You can also use the Expert Info window (click Analyze, then Expert Info) to view a summary of errors and warnings.

Você também pode escolher exibir os dados de TCP conforme vistos pela camada de aplicativo, clicando com o botão direito do mouse nos dados de TCP e selecionando Seguir o Fluxo TCP.You can also choose to view the TCP data as the application layer sees it by right-clicking on the TCP data and selecting Follow TCP Stream. Isso será útil se você tiver capturado o despejo sem o filtro de captura.This is useful if you captured your dump without a capture filter. Para saber mais, confira Como seguir fluxos TCP.For more information, see Following TCP Streams.

Observação

Para saber mais sobre como usar o Wireshark, veja o Guia de Usuários do Wireshark.For more information about using Wireshark, see the Wireshark Users Guide.

Apêndice 3: Usando o Analisador de Mensagem da Microsoft para capturar o tráfego de redeAppendix 3: Using Microsoft Message Analyzer to capture network traffic

Você pode usar o Microsoft Message Analyzer para capturar o tráfego HTTP e HTTPS de uma forma similar ao Fiddler e capturar o tráfego de rede de uma forma similar ao Wireshark.You can use Microsoft Message Analyzer to capture HTTP and HTTPS traffic in a similar way to Fiddler, and capture network traffic in a similar way to Wireshark.

Configure a sessão de rastreamento Web usando o Microsoft Message AnalyzerConfigure a web tracing session using Microsoft Message Analyzer

Para configurar a sessão de rastreamento Web para tráfego HTTP e HTTPS usando o Microsoft Message Analyzer, execute o aplicativo Microsoft Message Analyzer e, no menu Arquivo, clique em Capturar/Rastrear.To configure a web tracing session for HTTP and HTTPS traffic using Microsoft Message Analyzer, run the Microsoft Message Analyzer application and then on the File menu, click Capture/Trace. Na lista de cenários de rastreamento disponíveis, selecione Proxy da Web.In the list of available trace scenarios, select Web Proxy. Em seguida, no painel Rastrear Configuração de Cenário, na caixa de texto HostnameFilter, adicione os nomes dos pontos de extremidade de armazenamento (você pode procurar esses nomes no Portal do Azure).Then in the Trace Scenario Configuration panel, in the HostnameFilter textbox, add the names of your storage endpoints (you can look up these names in the Azure portal). Por exemplo, se o nome da sua conta de armazenamento do Azure é contosodata, adicione a seguinte caixa de diálogo HostnameFilter:For example, if the name of your Azure storage account is contosodata, you should add the following to the HostnameFilter textbox:

contosodata.blob.core.windows.net contosodata.table.core.windows.net contosodata.queue.core.windows.net

Observação

Um caractere de espaço separa o nome de host.A space character separates the hostnames.

Quando você estiver pronto para coletar os dados de rastreamento, clique no botão Iniciar Com .When you are ready to start collecting trace data, click the Start With button.

Para saber mais sobre o rastreamento de Proxy da Web do Microsoft Message Analyzer, consulte Provedor Microsoft-PEF-WebProxy.For more information about the Microsoft Message Analyzer Web Proxy trace, see Microsoft-PEF-WebProxy Provider.

O rastreamento interno de Proxy da Web no Microsoft Message Analyzer é com base no Fiddler; ele pode capturar o tráfego do lado do cliente e exibir as mensagens HTTPS não criptografadas.The built-in Web Proxy trace in Microsoft Message Analyzer is based on Fiddler; it can capture client-side HTTPS traffic and display unencrypted HTTPS messages. O rastreamento Proxy da Web funciona ao configurar um proxy local para todo o tráfego HTTP e HTTPS que dá acesso às mensagens não criptografadas.The Web Proxy trace works by configuring a local proxy for all HTTP and HTTPS traffic that gives it access to unencrypted messages.

Diagnóstico dos problemas de rede usando o Microsoft Message AnalyzerDiagnosing network issues using Microsoft Message Analyzer

Além de usar o rastreamento de Proxy da Web do Microsoft Message Analyzer para capturar detalhes do tráfego HTTP/HTTPS entre o aplicativo do cliente e o serviço de armazenamento, você pode usar também o rastreamento interno Camada de Link Local para capturar as informações do pacote de rede.In addition to using the Microsoft Message Analyzer Web Proxy trace to capture details of the HTTP/HTTPs traffic between the client application and the storage service, you can also use the built-in Local Link Layer trace to capture network packet information. Isso permite que você capture os dados similares aos que você pode capturar com o Wireshark e que diagnostique os problemas de rede tal como os pacotes ignorados.This enables you to capture data similar to that which you can capture with Wireshark, and diagnose network issues such as dropped packets.

A seguinte captura de tela mostra um exemplo de rastreamento de Camada de Link Local com algumas mensagens informativas na coluna DiagnosisTypes.The following screenshot shows an example Local Link Layer trace with some informational messages in the DiagnosisTypes column. Clicar no ícone na coluna DiagnosisTypes mostra detalhes da mensagem.Clicking on an icon in the DiagnosisTypes column shows the details of the message. Neste exemplo, o servidor retransmitiu a mensagem nº 305 porque ele não recebeu uma confirmação do cliente:In this example, the server retransmitted message #305 because it did not receive an acknowledgement from the client:

Quando você cria uma sessão de rastreamento no Microsoft Message Analyzer, é possível especificar filtros para reduzir a quantidade de ruídos no rastreamento.When you create the trace session in Microsoft Message Analyzer, you can specify filters to reduce the amount of noise in the trace. Na página Capturar/Rastrear na qual você define o rastreamento, clique no link Configurar próximo a Microsoft-Windows-NDIS-PacketCapture.On the Capture / Trace page where you define the trace, click on the Configure link next to Microsoft-Windows-NDIS-PacketCapture. A seguinte captura de tela mostra a configuração que filtra o tráfego TCP para os endereços de IP de três serviços de armazenamento:The following screenshot shows a configuration that filters TCP traffic for the IP addresses of three storage services:

Para obter mais informações sobre o rastreamento de Camada de Link Local do Microsoft Message Analyzer, consulte Provedor do Microsoft-PEF-NDIS-PacketCapture.For more information about the Microsoft Message Analyzer Local Link Layer trace, see Microsoft-PEF-NDIS-PacketCapture Provider.

Apêndice 4: Usando o Excel para exibir as métricas e os dados de logAppendix 4: Using Excel to view metrics and log data

Muitas ferramentas permitem que você baixe os dados de métricas de armazenamento a partir do armazenamento de tabela do Azure em um formato delimitado que o torna fácil para se carregado no Excel para exibição e análise.Many tools enable you to download the Storage Metrics data from Azure table storage in a delimited format that makes it easy to load the data into Excel for viewing and analysis. Os dados de log de armazenamento do armazenamento de blob do Azure já estão em um formato delimitado que pode ser carregado no Excel.Storage Logging data from Azure blob storage is already in a delimited format that you can load into Excel. Entretanto, você precisará adicionar cabeçalhos apropriados às colunas com base na informação no Formato de Log Analítico de Armazenamento e no Esquema de Tabela de Métricas Analíticas de Armazenamento.However, you will need to add appropriate column headings based in the information at Storage Analytics Log Format and Storage Analytics Metrics Table Schema.

Para importar os dados de log de armazenamento para o Excel após ter baixado do armazenamento de blob:To import your Storage Logging data into Excel after you download it from blob storage:

  • No menu Dados, clique em Do Texto.On the Data menu, click From Text.
  • Procure o arquivo de log que deseja exibir e clique em Importar.Browse to the log file you want to view and click Import.
  • Na etapa 1 do Assistente de Importação de Texto, selecione Delimitado.On step 1 of the Text Import Wizard, select Delimited.

Na etapa 1 do Assistente de Importação de Texto, selecione Ponto e vírgula como o único delimitador e escolha aspas duplas como Qualificador de texto.On step 1 of the Text Import Wizard, select Semicolon as the only delimiter and choose double-quote as the Text qualifier. Clique em Concluir e escolha onde colocar os dados na sua pasta de trabalho.Then click Finish and choose where to place the data in your workbook.

Apêndice 5: Monitoramento com o Application Insights no Azure DevOpsAppendix 5: Monitoring with Application Insights for Azure DevOps

Você pode também usar o recurso Application Insights no Azure DevOps como parte do seu monitoramento de desempenho e disponibilidade.You can also use the Application Insights feature for Azure DevOps as part of your performance and availability monitoring. Essa ferramenta pode:This tool can:

  • Garantir que seu aplicativo da Web esteja disponível e respondendo.Make sure your web service is available and responsive. Se o seu aplicativo é um site ou um aplicativo de dispositivo que usa um serviço Web, você pode testar a sua URL a cada minuto de locais ao redor do mundo e ser avisado se houver um problema.Whether your app is a web site or a device app that uses a web service, it can test your URL every few minutes from locations around the world, and let you know if there's a problem.
  • Diagnostique rapidamente qualquer problema de desempenho ou exceções no seu serviço da Web.Quickly diagnose any performance issues or exceptions in your web service. Descubra se a CPU ou outros recursos estão sendo alongados, receba rastreamento de linhas de exceções e pesquise facilmente pelos rastreamentos de log.Find out if CPU or other resources are being stretched, get stack traces from exceptions, and easily search through log traces. Se o desempenho do aplicativo cair abaixo dos limites aceitáveis, a Microsoft poderá lhe enviar um email.If the app's performance drops below acceptable limits, Microsoft can send you an email. Você pode monitorar os serviços Web .NET e Java.You can monitor both .NET and Java web services.

Você pode encontrar mais informações em O que é o Application Insights.You can find more information at What is Application Insights.

Próximas etapasNext steps

Para obter mais informações sobre análise no armazenamento do Azure, consulte estes recursos:For more information about analytics in Azure Storage, see these resources: