

# Como explorar seus dados com as ferramentas do CloudWatch e a interface de consulta do Monitor de Internet
<a name="CloudWatch-IM-view-cw-tools"></a>

Além de visualizar a performance e a disponibilidade da aplicação com o painel do Monitor de Internet, há vários métodos que você pode usar para se aprofundar nos dados que o Monitor de Internet gera para você. Esses métodos incluem o uso de ferramentas do CloudWatch com dados do Monitor de Internet armazenados nos arquivos de log do CloudWatch e o uso da interface de consulta do Monitor de Internet. As ferramentas que você pode usar incluem o CloudWatch Logs Insights, o CloudWatch Metrics, o CloudWatch Contributor Insights e o Amazon Athena. Você pode usar algumas ou todas essas ferramentas, bem como o painel, para explorar os dados do Monitor de Internet, dependendo de suas necessidades. 

O Monitor de Internet agrega as métricas do CloudWatch sobre o tráfego para a sua aplicação e para cada Região da AWS, e inclui dados como o impacto total do tráfego, a disponibilidade e o tempo de ida e volta. Esses dados são publicados no CloudWatch Logs e também estão disponíveis para uso com a interface de consulta do Monitor de Internet. Os detalhes sobre a geo-granularidade e outros aspectos das informações disponíveis para exploração variam para cada um deles.

O Monitor de Internet publica os dados do monitor em intervalos de cinco minutos e, em seguida, disponibiliza-os de várias maneiras. A tabela a seguir lista os cenários de acesso aos dados do Monitor de Internet e descreve os recursos dos dados coletados para cada um deles.


****  

| Recurso | CloudWatch Logs | Exportar para S3 | Interface de consulta | Painéis do CloudWatch | 
| --- | --- | --- | --- | --- | 
| Habilitada por padrão. | Sim | Não | Sim | Sim | 
| Número de cidades-redes para as quais os dados são coletados | 500 principais (consulte a nota abaixo) | Todos | Todos | Todos | 
| Retenção de dados | Controlado pelo usuário | Controlado pelo usuário | 30 dias | 30 dias | 
| Geo-granularidades para as quais os dados são coletados | Todos (cidade-rede, metro\$1rede, subdivisão\$1rede, país\$1rede) | Cidade-rede | Todos (cidade-rede, metro\$1rede, subdivisão\$1rede, país\$1rede) | Todos (cidade-rede, metro\$1rede, subdivisão\$1rede, país\$1rede) | 
| Como consultar e filtrar dados | [Usar o CloudWatch Logs Insights para explorar medições do Monitor de Internet](CloudWatch-IM-view-cw-tools-logs-insights.md) | [Usar o Amazon Athena para consultar medições de internet nos arquivos de log do Amazon S3](CloudWatch-IM-view-cw-tools.S3_athena.md) | [Usar a interface de consulta do Monitor de Internet](CloudWatch-IM-view-cw-tools-cwim-query.md) | [Monitorar e otimizar com o painel do Monitor de Internet](CloudWatch-IM-monitor-and-optimize.md) | 

Observação: as 500 principais medições são capturadas para cidades-redes; as 250 principais para metro\$1redes, as 100 principais para subdivisões\$1redes, as 50 principais para países\$1redes.

Este capítulo descreve como consultar e explorar seus dados usando as ferramentas do CloudWatch ou a interface de consulta do Monitor de Internet, juntamente com exemplos de cada método. 

**Topics**
+ [Insights do CloudWatch Logs](CloudWatch-IM-view-cw-tools-logs-insights.md)
+ [CloudWatch Contributor Insights](CloudWatch-IM-view-cw-tools-contributor-insights.md)
+ [Métricas do CloudWatch](CloudWatch-IM-view-cw-tools-metrics-dashboard.md)
+ [Athena com logs do S3](CloudWatch-IM-view-cw-tools.S3_athena.md)
+ [Interface de consulta do Monitor de Internet](CloudWatch-IM-view-cw-tools-cwim-query.md)

# Usar o CloudWatch Logs Insights para explorar medições do Monitor de Internet
<a name="CloudWatch-IM-view-cw-tools-logs-insights"></a>

Você pode usar as consultas do CloudWatch Logs Insights para filtrar um subconjunto de logs para uma cidade ou área geográfica específica (localização do cliente), ASN (ISP) do cliente e localização de origem da AWS. O Monitor de Internet publica medições granulares de disponibilidade e tempo de ida e volta para o CloudWatch Logs, que você pode analisar usando o CloudWatch Logs Insights. 

Para saber mais sobre a precisão da localização do cliente no Monitor de Internet, consulte [Informações e precisão de geolocalização no Monitor de Internet](CloudWatch-IM-inside-internet-monitor.md#IMGeolocationSourceAccuracy).

Os exemplos nesta seção podem ajudar a criar consultas do CloudWatch Logs Insights para saber mais sobre suas próprias medidas e métricas de tráfego de aplicações. Se você usar esses exemplos no CloudWatch Logs Insights, substitua *monitorName* pelo seu próprio nome de monitor.

**Ver sugestões para otimização de tráfego**

Na guia **Insights de tráfego**, no Monitor de Internet, é possível ver sugestões de otimização de tráfego, filtradas por um local. Para ver as mesmas informações exibidas na seção **Sugestões de otimização de tráfego** nessa guia, mas sem o filtro de granularidade de localização, é possível usar a consulta a seguir do CloudWatch Logs Insights. 

1. No Console de gerenciamento da AWS, navegue até o CloudWatch Logs Insights.

1. Em **Log Group** (Grupo de logs), selecione `/aws/internet-monitor/monitorName/byCity` e `/aws/internet-monitor/monitorName/byCountry`, depois, especifique um intervalo de tempo. 

1. Adicione e execute a consulta a seguir. 

```
fields @timestamp, 
clientLocation.city as @city, clientLocation.subdivision as @subdivision, clientLocation.country as @country,
`trafficInsights.timeToFirstByte.currentExperience.serviceName` as @serviceNameField,
concat(@serviceNameField, ` (`, `serviceLocation`, `)`) as @currentExperienceField,
concat(`trafficInsights.timeToFirstByte.ec2.serviceName`, ` (`, `trafficInsights.timeToFirstByte.ec2.serviceLocation`, `)`) as @ec2Field,
`trafficInsights.timeToFirstByte.cloudfront.serviceName` as @cloudfrontField,
concat(`clientLocation.networkName`, ` (AS`, `clientLocation.asn`, `)`) as @networkName
| filter ispresent(`trafficInsights.timeToFirstByte.currentExperience.value`)
| stats avg(`trafficInsights.timeToFirstByte.currentExperience.value`) as @averageTTFB,
avg(`trafficInsights.timeToFirstByte.ec2.value`) as @ec2TTFB,
avg(`trafficInsights.timeToFirstByte.cloudfront.value`) as @cloudfrontTTFB,
sum(`bytesIn` + `bytesOut`) as @totalBytes,
latest(@ec2Field) as @ec2,
latest(@currentExperienceField) as @currentExperience,
latest(@cloudfrontField) as @cloudfront,
count(*) by @networkName, @city, @subdivision, @country
| display @city, @subdivision, @country, @networkName, @totalBytes, @currentExperience, @averageTTFB, @ec2, @ec2TTFB, @cloudfront, @cloudfrontTTFB
| sort @totalBytes desc
```

**Ver a disponibilidade da Internet e o RTT (p50, p90 e p95)**

Para ver a disponibilidade da Internet e o tempo de ida e volta (p50, p90 e p95) do tráfego, é possível usar a consulta a seguir do CloudWatch Logs Insights.

**Área geográfica do usuário final: ** Chicago, IL, Estados Unidos

**Rede de usuário final (ASN): ** AS7018 

**Local do serviço da AWS:** Região Leste dos EUA (N. da Virgínia)

Para obter os logs, faça o seguinte:

1. No Console de gerenciamento da AWS, navegue até o CloudWatch Logs Insights.

1. Em **Log Group** (Grupo de logs), selecione `/aws/internet-monitor/monitorName/byCity` e `/aws/internet-monitor/monitorName/byCountry`, depois, especifique um intervalo de tempo. 

1. Adicione e execute a consulta a seguir. 

A consulta retorna todos os dados de performance dos usuários conectados a partir de AS7018 em Chicago, IL, seguindo em direção à região Leste dos EUA (Norte da Virgínia) durante o período selecionado.

```
fields @timestamp, 
internetHealth.availability.experienceScore as availabilityExperienceScore, 
internetHealth.availability.percentageOfTotalTrafficImpacted as percentageOfTotalTrafficImpacted,
internetHealth.performance.experienceScore as performanceExperienceScore,
internetHealth.performance.roundTripTime.p50 as roundTripTimep50, 
internetHealth.performance.roundTripTime.p90 as roundTripTimep90, 
internetHealth.performance.roundTripTime.p95 as roundTripTimep95
 | filter clientLocation.country == `United States` 
 and clientLocation.city == `Chicago` 
 and serviceLocation == `us-east-1` 
 and clientLocation.asn == 7018
```

Para obter mais informações, consulte [Analisar logs de dados com o CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html).

# Usar o Contributor Insights para identificar os principais locais e ISPs
<a name="CloudWatch-IM-view-cw-tools-contributor-insights"></a>

O CloudWatch Contributor Insights pode ajudar a identificar os principais locais e ASNs (normalmente, provedores de serviços de internet ou ISPs) de clientes da aplicação da AWS. Use o exemplo de regras do Contributor Insights a seguir para começar a usar regras que são úteis com o Monitor de Internet. Para obter mais informações, consulte [Criação de uma regra do Contributor Insights no CloudWatch](ContributorInsights-CreateRule.md).

Para saber mais sobre a precisão da localização do cliente no Monitor de Internet, consulte [Informações e precisão de geolocalização no Monitor de Internet](CloudWatch-IM-inside-internet-monitor.md#IMGeolocationSourceAccuracy).

**nota**  
O Monitor de Internet armazena dados de medições da Internet a cada 5 minutos, portanto, depois de configurar uma regra do Contributor Insights, você deverá ajustar o período para 5 minutos para ver um gráfico.

**Ver os principais locais e ASNs afetados por um impacto de disponibilidade**

Para ver os principais locais e ASNs de clientes afetados por uma queda na disponibilidade, é possível usar a regra a seguir do Contributor Insights no editor de sintaxe. Substitua *monitor-name* pelo nome do seu próprio monitor.

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "AggregateOn": "Sum",
    "Contribution": {
        "Filters": [
            {
                "Match": "$.clientLocation.city",
                "IsPresent": true
            }
        ],
        "Keys": [
            "$.clientLocation.city",
            "$.clientLocation.networkName"
        ],
        "ValueOf": "$.awsInternetHealth.availability.percentageOfTotalTrafficImpacted"
    },
    "LogFormat": "JSON",
    "LogGroupNames": [
        "/aws/internet-monitor/monitor-name/byCity"
    ]
}
```

**Ver os principais locais e ASNs de clientes afetados por um impacto de latência**

Para ver os principais locais e ASNs de clientes afetados por um aumento de tempo de ida e volta (latência), é possível usar a regra a seguir do Contributor Insights no editor de sintaxe. Substitua *monitor-name* pelo nome do seu próprio monitor.

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "AggregateOn": "Sum",
    "Contribution": {
        "Filters": [            {
                "Match": "$.clientLocation.city",
                "IsPresent": true
            }
        ],
        "Keys": [
            "$.clientLocation.city",
            "$.clientLocation.networkName"
        ],
        "ValueOf": "$.awsInternetHealth.performance.percentageOfTotalTrafficImpacted"
    },
    "LogFormat": "JSON",
    "LogGroupNames": [
        "/aws/internet-monitor/monitor-name/byCity"
    ]
}
```

**Ver os principais locais e ASNs de clientes afetados pelo percentual total de tráfego**

Para ver os principais locais e ASNs de clientes afetados pelo percentual total de tráfego, é possível usar a regra a seguir do Contributor Insights no editor de sintaxe. Substitua *monitor-name* pelo nome do seu próprio monitor.

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "AggregateOn": "Sum",
    "Contribution": {
        "Filters": [
            {
                "Match": "$.clientLocation.city",
                "IsPresent": true
            }
        ],
        "Keys": [
            "$.clientLocation.city",
            "$.clientLocation.networkName"
        ],
        "ValueOf": "$.percentageOfTotalTraffic"
    },
    "LogFormat": "JSON",
    "LogGroupNames": [
        "/aws/internet-monitor/monitor-name/byCity"
    ]
}
```

# Visualizar métricas do Monitor de Internet ou definir alarmes no CloudWatch Metrics
<a name="CloudWatch-IM-view-cw-tools-metrics-dashboard"></a>

Você pode visualizar ou definir alarmes nas métricas do Monitor de Internet usando os alarmes ou as métricas do CloudWatch no console do CloudWatch. O Monitor de Internet publica métricas para a conta, incluindo métricas de performance, disponibilidade, tempo de ida e volta e throughput (bytes por segundo). Para localizar todas as métricas para seu monitor, no painel de métricas do CloudWatchconsulte o namespace personalizado `AWS/InternetMonitor`. 

Para ver exemplos do uso de várias dessas métricas para ajudar a determinar os valores a serem escolhidos para o máximo de redes urbanas para o monitor, consulte [Escolher valor máximo de redes urbanas](IMCityNetworksMaximum.md). Para saber mais sobre como configurar alarmes para o Monitor de Internet, consulte [Criar alarmes com o Monitor de Internet](CloudWatch-IM-create-alarm.md).

As métricas são agregadas ao longo de todo o tráfego da Internet até as suas VPCs, Network Load Balancers, distribuições do CloudFront ou diretórios do WorkSpaces no monitor, e para todo o tráfego para cada Região da AWS e cada local da borda de Internet que seja monitorado. As regiões são definidas pelo local do serviço, podendo ser todos os locais ou uma região específica, como a `us-east-1`. 

Observação: as *redes urbanas* são pares de locais e ASNs (nomalmente provedores de serviços de Internet ou ISPs) de clientes.

O Monitor de Internet fornece as métricas a seguir.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonCloudWatch/latest/monitoring/CloudWatch-IM-view-cw-tools-metrics-dashboard.html)

Para obter mais informações, consulte [Métricas no Amazon CloudWatch](working_with_metrics.md).

# Usar o Amazon Athena para consultar medições de internet nos arquivos de log do Amazon S3
<a name="CloudWatch-IM-view-cw-tools.S3_athena"></a>

Você pode usar o Amazon Athena para consultar e visualizar as medições da internet que o Monitor de Internet publica em um bucket do Amazon S3. Há uma opção no Monitor de Internet de publicar medições da Internet para sua aplicação em um bucket S3 de tráfego voltado para a Internet para suas cidades-redes monitoradas (locais e ASNs de clientes, geralmente provedores de serviços de Internet ou ISPs). Independentemente de você escolher publicar medições no S3 ou não, o Monitor de Internet publica automaticamente medições da Internet no CloudWatch Logs a cada cinco minutos para as 500 principais (por volume de tráfego) cidades-redes para cada monitor. 

Este capítulo inclui etapas sobre como criar uma tabela no Athena para medições da Internet localizadas em um arquivo de log do S3 e, em seguida, fornece [exemplos de consultas](#CloudWatch-IM-view-cw-tools.S3_athena.athena-sample-queries) para ver diferentes visualizações das medições. Por exemplo, é possível consultar as 10 principais redes de cidades afetadas por impacto de latência. 

## Uso do Amazon Athena para criar uma tabela para medições da Internet no Monitor de Internet
<a name="CloudWatch-IM-view-cw-tools.S3_athena.athena-queries"></a>

Para começar a usar o Athena com seus arquivos de log do S3 do Monitor de Internet, primeiro crie uma tabela para as medições da Internet.

Siga as etapas desse procedimento para criar uma tabela no Athena com base nos arquivos de log do S3. Em seguida, será possível executar consultas do Athena na tabela, como [estes exemplos de consultas de medições na Internet](#CloudWatch-IM-view-cw-tools.S3_athena.athena-sample-queries), para obter informações sobre suas medições.

**Para criar uma tabela do Athena**

1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. No editor de consultas do Athena, insira uma instrução de consulta para gerar uma tabela com as medições de Internet do Monitor de Internet. Substitua o valor do parâmetro LOCATION pelo local do bucket do S3 em que suas medições de Internet do Monitor de Internet estão armazenadas. 

   ```
   CREATE EXTERNAL TABLE internet_measurements (
       version INT,
       timestamp INT,
       clientlocation STRING,
       servicelocation STRING,
       percentageoftotaltraffic DOUBLE,
       bytesin INT,
       bytesout INT,
       clientconnectioncount INT,
       internethealth STRING,
       trafficinsights STRING
   )
   PARTITIONED BY (year STRING, month STRING, day STRING)
   ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
   LOCATION
   's3://amzn-s3-demo-bucket/bucket_prefix/AWSLogs/account_id/internetmonitor/AWS_Region/'
   TBLPROPERTIES ('skip.header.line.count' = '1');
   ```

1. Insira uma instrução para criar uma partição para ler os dados. Por exemplo, a consulta a seguir cria uma única partição para uma data e um local especificado:

   ```
   ALTER TABLE internet_measurements
   ADD PARTITION (year = 'YYYY', month = 'MM', day = 'dd')
   LOCATION
   's3://amzn-s3-demo-bucket/bucket_prefix/AWSLogs/account_id/internetmonitor/AWS_Region/YYYY/MM/DD';
   ```

1. Escolha **Executar**.

**Exemplo de instruções do Athena para medições de Internet**

A seguir há um exemplo de uma instrução para gerar uma tabela:

```
CREATE EXTERNAL TABLE internet_measurements (
    version INT,
    timestamp INT,
    clientlocation STRING,
    servicelocation STRING,
    percentageoftotaltraffic DOUBLE,
    bytesin INT,
    bytesout INT,
    clientconnectioncount INT,
    internethealth STRING,
    trafficinsights STRING
)
PARTITIONED BY (year STRING, month STRING, day STRING)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://internet-measurements/TestMonitor/AWSLogs/1111222233332/internetmonitor/us-east-2/'
TBLPROPERTIES ('skip.header.line.count' = '1');
```

A seguir há um exemplo de uma instrução para criar uma partição para ler os dados:

```
ALTER TABLE internet_measurements
ADD PARTITION (year = '2023', month = '04', day = '07')
LOCATION 's3://internet-measurements/TestMonitor/AWSLogs/1111222233332/internetmonitor/us-east-2/2023/04/07/'
```

## Exemplos de consultas do Amazon Athena para uso com medições de Internet no Monitor de Internet
<a name="CloudWatch-IM-view-cw-tools.S3_athena.athena-sample-queries"></a>

Esta seção inclui exemplos de consultas que podem ser usados com o Amazon Athena para obter informações sobre as medições de Internet da sua aplicação publicadas no Amazon S3.

**Consultar seus 10 principais locais e ASNs de clientes afetados (por percentual total de tráfego**

Execute essa consulta do Athena para retornar suas 10 principais cidades-redes afetadas (por percentual total do tráfego), ou seja, locais e ASNs de clientes, geralmente provedores de serviços de Internet. 

```
SELECT json_extract_scalar(clientLocation, '$.city') as city,
    json_extract_scalar(clientLocation, '$.networkname') as networkName,
    sum(percentageoftotaltraffic) as percentageoftotaltraffic
FROM internet_measurements
GROUP BY json_extract_scalar(clientLocation, '$.city'),
    json_extract_scalar(clientLocation, '$.networkname')
ORDER BY percentageoftotaltraffic desc
limit 10
```

**Consultar seus 10 principais locais e ASNs de clientes afetados (por disponibilidade **

Execute essa consulta do Athena para retornar suas 10 principais cidades-redes afetadas (por percentual total do tráfego), ou seja, locais e ASNs de clientes, geralmente provedores de serviços de Internet. 

```
SELECT json_extract_scalar(clientLocation, '$.city') as city,
    json_extract_scalar(clientLocation, '$.networkname') as networkName,
    sum(
        cast(
            json_extract_scalar(
                internetHealth,
                '$.availability.percentageoftotaltrafficimpacted'
            )
        as double ) 
    ) as percentageOfTotalTrafficImpacted
FROM internet_measurements
GROUP BY json_extract_scalar(clientLocation, '$.city'),
    json_extract_scalar(clientLocation, '$.networkname')
ORDER BY percentageOfTotalTrafficImpacted desc
limit 10
```

**Consultar seus 10 principais locais e ASNs de clientes afetados (pela latência **

Execute essa consulta do Athena para retornar suas 10 principais cidades-redes afetadas (pelo impacto da latência), ou seja, locais e ASNs de clientes, geralmente provedores de serviços de Internet. 

```
SELECT json_extract_scalar(clientLocation, '$.city') as city,
    json_extract_scalar(clientLocation, '$.networkname') as networkName,
    sum(
        cast(
            json_extract_scalar(
                internetHealth,
                '$.performance.percentageoftotaltrafficimpacted'
            )
        as double ) 
    ) as percentageOfTotalTrafficImpacted
FROM internet_measurements
GROUP BY json_extract_scalar(clientLocation, '$.city'),
    json_extract_scalar(clientLocation, '$.networkname')
ORDER BY percentageOfTotalTrafficImpacted desc
limit 10
```

**Consultar os destaques do tráfego para seus locais e ASNs de clientes **

Execute essa consulta do Athena para retornar os destaques do tráfego, incluindo pontuação de disponibilidade, pontuação de performance e tempo até o primeiro byte de suas cidades-redes, ou seja, locais de clientes e ASNs, geralmente provedores de serviços de Internet.

```
SELECT json_extract_scalar(clientLocation, '$.city') as city,
    json_extract_scalar(clientLocation, '$.subdivision') as subdivision,
    json_extract_scalar(clientLocation, '$.country') as country,
    avg(cast(json_extract_scalar(internetHealth, '$.availability.experiencescore') as double)) as availabilityScore,
    avg(cast(json_extract_scalar(internetHealth, '$.performance.experiencescore') as double)) performanceScore,
    avg(cast(json_extract_scalar(trafficinsights, '$.timetofirstbyte.currentexperience.value') as double)) as averageTTFB,
    sum(bytesIn) as bytesIn,
    sum(bytesOut) as bytesOut,
    sum(bytesIn + bytesOut) as totalBytes
FROM internet_measurements
where json_extract_scalar(clientLocation, '$.city') != 'N/A'
GROUP BY 
json_extract_scalar(clientLocation, '$.city'),
    json_extract_scalar(clientLocation, '$.subdivision'),
    json_extract_scalar(clientLocation, '$.country')
ORDER BY totalBytes desc
limit 100
```

Para obter mais informações sobre como usar o Athena, consulte o [Guia do usuário do Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/).

# Usar a interface de consulta do Monitor de Internet
<a name="CloudWatch-IM-view-cw-tools-cwim-query"></a>

Uma opção para saber mais sobre o tráfego da internet para a aplicação da AWS é usar a *interface de consulta* do Monitor de Internet. Para usar a interface de consulta, você cria uma consulta com filtros de dados escolhidos por você e, em seguida, executa a consulta para retornar um subconjunto dos dados do Monitor de Internet. A exploração dos dados que a consulta retorna pode fornecer insights sobre a performance da sua aplicação na Internet.

Você pode consultar e explorar todas as métricas que o Monitor de Internet captura com seu monitor, incluindo pontuações de disponibilidade e performance, bytes transferidos, tempos de ida e volta e tempo até o primeiro byte (TTFB). 

O Monitor de Internet usa a interface de consulta para fornecer os dados que podem ser explorados no painel do console do Monitor de Internet. Ao usar as opções de pesquisa no painel, na página **Analisar** ou na página **Otimizar**, você pode consultar e filtrar dados da Internet para sua aplicação.

Se você quiser mais flexibilidade para explorar e filtrar seus dados do que o painel oferece, você pode usar a interface de consulta por conta própria, usando as operações da API do Monitor de Internet com a AWS Command Line Interface ou com um SDK da AWS. Esta seção apresenta os tipos de consultas que podem ser usados com a interface de consulta e os filtros que podem ser especificados para criar um subconjunto de dados, a fim de obter insights sobre o tráfego da Internet para a sua aplicação.

**Topics**
+ [Como usar a interface de consulta](#CloudWatch-IM-view-cw-tools-cwim-query-use-query)
+ [Exemplos de consulta](#CloudWatch-IM-view-cw-tools-cwim-query-example-queries)
+ [Obter resultados da consulta](#CloudWatch-IM-view-cw-tools-cwim-query-get-data)
+ [Solução de problemas](#CloudWatch-IM-view-cw-tools-cwim-query-troubleshooting)

## Como usar a interface de consulta
<a name="CloudWatch-IM-view-cw-tools-cwim-query-use-query"></a>

Você cria uma consulta com a interface de consulta ao escolher um *tipo de consulta* e, em seguida, especificar valores de filtro para retornar um subconjunto específico desejado dos dados do arquivo de log. Em seguida, você pode trabalhar com o subconjunto de dados para filtrar e classificar mais detalhadamente, criar relatórios e assim por diante.

O processo de consulta funciona da seguinte forma:

1. Quando você executa uma consulta, o Monitor de Internet retorna um `query ID` que é exclusivo da consulta. Esta seção descreve os tipos de consulta disponíveis e as opções de filtragem de dados nas consultas. Para entender como isso funciona, consulte também a seção sobre [exemplos de consultas](#IMQueryInterfaceExamples). 

1. Você especifica o ID da consulta com o nome do monitor com a operação da API [GetQueryResults](https://docs.aws.amazon.com/internet-monitor/latest/api/API_GetQueryResults.html) para retornar os resultados dos dados da consulta. Cada tipo de consulta retorna um conjunto diferente de campos de dados. Para saber mais, consulte [Como obter resultados de consulta](#IMGetQueryData).

A interface de consulta fornece os tipos de consulta apresentados a seguir. Cada tipo de consulta retorna um conjunto diferente de informações sobre seu tráfego a partir dos arquivos de log, conforme mostrado.
+ **Medições:** fornece pontuação de disponibilidade, pontuação de performance, tráfego total e tempos de ida e volta, em intervalos de cinco minutos.
+ **Principais localizações:** fornece pontuação de disponibilidade, pontuação de performance, tráfego total e informações de tempo até o primeiro byte (TTFB) para as principais combinações de localização e ASN que estão sendo monitorados, por volume de tráfego.
+ **Detalhes das principais localizações:** fornece o TTFB para o Amazon CloudFront, sua configuração atual e a configuração do Amazon EC2 com melhor performance, em intervalos de uma hora.
+ **Sugestões gerais de tráfego:** fornece TTFB, usando uma média ponderada de 30 dias, para todo o tráfego em cada local monitorado da AWS.
+ **Detalhes gerais das sugestões de tráfego:** fornece TTFB, usando uma média ponderada de 30 dias, para cada local principal, para um local proposto da AWS.
+ **Sugestões de roteamento:** disponibiliza o tempo de ida e volta (RTT) médio estimado de um prefixo de IP para uma localidade da AWS, com base em um resolvedor de DNS. O RTT é calculado em intervalos de uma hora, durante um período de uma hora.

É possível filtrar os dados com mais precisão ao usar critérios específicos. Com a maioria dos tipos de consulta, exceto as sugestões de roteamento, você pode realizar a filtragem ao especificar um ou mais dos seguintes critérios:
+ **Localidade da AWS:** para a localidade da AWS, você pode especificar CloudFront ou uma Região da AWS, como `us-east-2`.
+ **ASN:** especifique o número de sistema autônomo (ASN) de um resolvedor de DNS (geralmente, um ISP), por exemplo, 4225.
+ **Localização do cliente:** para a localização, especifique uma cidade, metro, subdivisão ou país.
+ **Local proposto da AWS:** especifique uma Região da AWS, como `us-east-2`, ou uma Zona local da AWS. Esse filtro pode ser usado com o tipo de consulta de detalhes das sugestões gerais de tráfego.
+ **Geo:** especifique a `geo` para algumas consultas. Isso é necessário para as consultas que usam o tipo de consulta `Top locations`, mas não é permitido para outros tipos de consulta. Para saber quando especificar o `geo` para os parâmetros de filtro, consulte a seção de [exemplos de consulta](#IMQueryInterfaceExamples).

Para o tipo de consulta de sugestões de roteamento, você pode realizar a filtragem mais aprofundada dos dados ao especificar um ou mais dos seguintes critérios:
+ **Localidade da AWS atual:** especifique uma Região da AWS, como `us-east-2`.
+ **Local proposto da AWS:** especifique uma Região da AWS, como `us-east-2`, ou uma Zona local da AWS.
+ **Prefixo IPv4:** especifique um prefixo IPv4 no formato padrão, que é semelhante a `192.0.2.0/24`.
+ **ARN do monitor:** especifique o ARN de um monitor específico.
+ **IP do resolvedor de DNS:** especifique o endereço IP de um resolvedor de DNS.
+ **ISP do resolvedor de DNS:** especifique o nome de um resolvedor de DNS (geralmente, um ISP), por exemplo, `Cloudflare`.
+ **ASN do resolvedor de DNS:** especifique o número de sistema autônomo (ASN) de um resolvedor de DNS, por exemplo, 4225.

Os operadores que você pode usar para filtrar seus dados são `EQUALS` e `NOT_EQUALS`. Para obter detalhes sobre os parâmetros de filtragem, consulte a operação da API [FilterParameter](https://docs.aws.amazon.com/internet-monitor/latest/api/API_FilterParameter.html).

Para ver detalhes sobre as operações da interface de consulta, consulte as seguintes operações de API no Guia de referência de APIs do Monitor de Internet:
+ Para criar e executar uma consulta, consulte a operação da API [StartQuery](https://docs.aws.amazon.com/internet-monitor/latest/api/API_StartQuery.html). 
+ Para interromper uma consulta, consulte a operação da API [StopQuery](https://docs.aws.amazon.com/internet-monitor/latest/api/API_StopQuery.html). 
+ Para retornar dados de uma consulta que você criou, consulte a operação da API [GetQueryResults](https://docs.aws.amazon.com/internet-monitor/latest/api/API_GetQueryResults.html). 
+ Para recuperar o status de uma consulta, consulte a operação da API [GetQueryStatus](https://docs.aws.amazon.com/internet-monitor/latest/api/API_GetQueryStatus.html). 

## Exemplos de consulta
<a name="CloudWatch-IM-view-cw-tools-cwim-query-example-queries"></a>

Para criar uma consulta que você possa usar para recuperar um conjunto filtrado de dados do arquivo de log do seu monitor, use a operação da API [StartQuery](https://docs.aws.amazon.com/internet-monitor/latest/api/API_StartQuery.html). Você especifica um tipo de consulta e parâmetros de filtro para a consulta. Então, quando você usar a operação da API da interface de consulta do Monitor de Internet para obter os resultados da consulta usando a consulta, ela recuperará o subconjunto dos dados com os quais você deseja trabalhar. 

Para ilustrar como funcionam os tipos de consulta e os parâmetros de filtro, vamos dar uma olhada em alguns exemplos.

**Exemplo 1**

Digamos que você queira recuperar todos os dados do arquivo de log do seu monitor para um país específico, exceto para uma cidade. O exemplo a seguir mostra os parâmetros de filtro para uma consulta que você poderia criar com a operação `StartQuery` para esse cenário.

```
{
   MonitorName: "TestMonitor"
   StartTime: "2023-07-12T20:00:00Z"
   EndTime: "2023-07-12T21:00:00Z"
   QueryType: "MEASUREMENTS"
   FilterParameters: [
      {
       Field: "country",
       Operator: "EQUALS",
       Values: ["Germany"]
      },
      {
       Field: "city",
       Operator: "NOT_EQUALS",
       Values: ["Berlin"]
      },
    ]
}
```

**Exemplo 2**

Como outro exemplo, digamos que você queira ver suas principais localizações por área metropolitana. Você pode usar o exemplo de consulta a seguir para esse cenário.

```
{
   MonitorName: "TestMonitor"
   StartTime: "2023-07-12T20:00:00Z"
   EndTime: "2023-07-12T21:00:00Z"
   QueryType: "TOP_LOCATIONS"
   FilterParameters: [
      {
       Field: "geo",
       Operator: "EQUALS",
       Values: ["metro"]
      },
    ]
}
```

**Exemplo 3**

Agora, digamos que você queira ver as principais combinações de cidade-rede na área metropolitana de Los Angeles. Para fazer isso, especifique `geo=city`, e depois defina `metro` como Los Angeles. Agora, a consulta retorna as principais cidades-redes na área metropolitana de Los Angeles em vez das principais metro\$1redes em geral.

Aqui está o exemplo de consulta que você pode usar:

```
{
   MonitorName: "TestMonitor"
   StartTime: "2023-07-12T20:00:00Z"
   EndTime: "2023-07-12T21:00:00Z"
   QueryType: "TOP_LOCATIONS"
   FilterParameters: [
      {
       Field: "geo",
       Operator: "EQUALS",
       Values: ["city"]
      },
      {
       Field: "metro",
       Operator: "EQUALS",
       Values: ["Los Angeles"]
      }
    ]
}
```

**Exemplo 4**

Em seguida, digamos que você queira recuperar dados de TTFB para uma subdivisão específica (p. ex., um estado dos EUA).

A seguir, um exemplo de consulta para esse cenário:

```
{
   MonitorName: "TestMonitor"
   StartTime: "2023-07-12T20:00:00Z"
   EndTime: "2023-07-12T21:00:00Z"
   QueryType: "TOP_LOCATION_DETAILS"
   FilterParameters: [
      {
       Field: "subdivision",
       Operator: "EQUALS",
       Values: ["California"]
      },
    ]
}
```

**Exemplo 5**

Agora, digamos que você queira recuperar dados de TTFB para cada local em que sua aplicação tenha tráfego de clientes.

A seguir, um exemplo de consulta para esse cenário:

```
{
   MonitorName: "TestMonitor"
   StartTime: "2023-07-12T20:00:00Z"
   EndTime: "2023-07-12T21:00:00Z"
   QueryType: "OVERALL_TRAFFIC_SUGGESTIONS"
   FilterParameters: []
}

Results:
[us-east-1, 40, us-west-2, 30],
[us-east-1, 40, us-west-1, 35],
[us-east-1, 40, us-east-1, 44],
[us-east-1, 40, CloudFront, 22],
...
[us-east-2, 44, us-west-2, 30],
[us-east-2, 44, us-west-1, 35],
...
```

**Exemplo 6**

Suponhamos que você deseje recuperar dados de TTFB para uma nova Região da AWS específica.

A seguir, um exemplo de consulta para esse cenário:

```
{
   MonitorName: "TestMonitor"
   StartTime: "2023-07-12T20:00:00Z"
   EndTime: "2023-07-12T21:00:00Z"
   QueryType: "OVERALL_TRAFFIC_SUGGESTIONS_DETAILS"
   FilterParameters: [
      {
       Field: "proposed_aws_location",
       Operator: "EQUALS",
       Values: ["us-west-2"]
      },
   ]
}

Results:
[San Jose, San Jose-Santa Clara, California, United States, 7922, us-east-1, 40, 350, 350, us-west-2, 45]
[San Jose, San Jose-Santa Clara, California, United States, 7922, us-west-1, 35, 450, 450, us-west-2, 45]
```

**Exemplo 7**

Um exemplo final corresponde à recuperação de dados para resolvedores de DNS específicos.

A seguir, um exemplo de consulta para esse cenário:

```
{
   MonitorName: "TestMonitor"
   StartTime: "2023-07-12T20:00:00Z"
   EndTime: "2023-07-12T21:00:00Z"
   QueryType: "ROUTING_SUGGESTIONS"
   FilterParameters: [
      {
       Field: "proposed_aws_location",
       Operator: "EQUALS",
       Values: ["us-east-1"]
      },
   ]
}

Results:
[162.158.180.245, 13335, Cloudflare, [5.4.0.0/14], us-east-2, 200.0, us-east-1, 160.0]
[162.158.180.243, 13313, Cloudflare, [5.4.0.0/10], us-east-2, 150.0, us-east-1, 125.0]
```

## Obter resultados da consulta
<a name="CloudWatch-IM-view-cw-tools-cwim-query-get-data"></a>

Depois de definir uma consulta, você pode retornar um conjunto de resultados com a consulta executando outra operação da API do Monitor de Internet, [GetQueryResults](https://docs.aws.amazon.com/internet-monitor/latest/api/API_GetQueryResults.html). Ao executar `GetQueryResults`, você especifica o ID da consulta que você definiu, juntamente com o nome do seu monitor. `GetQueryResults` recupera os dados da consulta especificada em um conjunto de resultados.

Quando você executar uma consulta, certifique-se de que a consulta tenha sido concluída antes de usar `GetQueryResults` para visualizar os resultados. Você pode determinar se a consulta foi concluída usando a operação da API [GetQueryStatus](https://docs.aws.amazon.com/internet-monitor/latest/api/API_GetQueryStatus.html). Quando o `Status` da consulta for de `SUCCEEDED`, você pode prosseguir com a análise dos resultados.

Quando a consulta for concluída, você poderá usar as seguintes informações como auxílio para a análise dos resultados. Cada tipo de consulta que você usa para criar uma consulta inclui um conjunto exclusivo de campos de dados dos arquivos de log, conforme descrito na lista a seguir: 

**Medições**  
O tipo de consulta `measurements` retorna os seguintes dados:  
`timestamp, availability, performance, bytes_in, bytes_out, rtt_p50, rtt_p90, rtt_p95`

**Principais localizações**  
O tipo de consulta `top locations` agrupa os dados por localização e fornece a média dos dados ao longo do período. Os dados que esse tipo de consulta retorna incluem o seguinte:  
`aws_location, city, metro, subdivision, country, asn, availability, performance, bytes_in, bytes_out, current_fbl, best_ec2, best_ec2_region, best_cf_fbl`  
Observe que `city`, `metro`, e `subdivision` só serão retornados se você escolher esse tipo de localização para o campo `geo`. Os seguintes campos de localização são retornados, dependendo do tipo de localização que você especificar para `geo`:  

```
city = city, metro, subdivision, country
metro = metro, subdivision, country
subdivision = subdivision, country
country = country
```

**Detalhes das principais localizações**  
O tipo de consulta `top locations details` retorna dados agrupados hora a hora. A consulta retorna os seguintes dados:  
`timestamp, current_service, current_fbl, best_ec2_fbl, best_ec2_region, best_cf_fbl`

**Sugestões gerais de tráfego**  
O tipo de consulta `overall traffic suggestions` retorna dados agrupados hora a hora. A consulta retorna os seguintes dados:  
`current_aws_location, proposed_aws_location, average_fbl, traffic, optimized_traffic_excluding_cf, optimized_traffic_including_cf`

**Detalhes das sugestões gerais de tráfego**  
O tipo de consulta `overall traffic suggestions details` retorna dados agrupados hora a hora. A consulta retorna os seguintes dados:  
`aws_location, city, metro, subdivision, country, asn, traffic, current_aws_location, fbl_data`

**Sugestões de roteamento**  
O tipo de consulta `routing suggestions` retorna dados agrupados hora a hora. A consulta retorna os seguintes dados:  
`dns_resolver_ip, dns_resolver_asn, dns_resolver_isp, ipv4_prefixes, current_aws_location, current_latency, proposed_aws_location, proposed_latency`

Quando você executa a operação da API `GetQueryResults`, o Monitor de Internet retorna o seguinte na resposta:
+ Uma *matriz de cadeia de dados* que contém os resultados que a consulta retorna. As informações são retornadas em matrizes alinhadas com o campo `Fields`, também retornadas pela chamada da API. Usando o campo `Fields`, você pode analisar as informações do repositório `Data` e, em seguida, filtrá-las ou classificá-las para seus objetivos.
+ Uma *matriz de campos* que lista os campos para os quais a consulta retornou dados (na resposta do campo `Data`). Cada item na matriz é um par nome-tipo de dados, como `availability_score`-`float`. 

## Solução de problemas
<a name="CloudWatch-IM-view-cw-tools-cwim-query-troubleshooting"></a>

Caso sejam retornados erros quando você usar as operações da API da interface de consulta, verifique se você tem as permissões necessárias para usar o Monitor de Internet. Especificamente, certifique-se de que você tenha as seguintes permissões:

```
internetmonitor:StartQuery
internetmonitor:GetQueryStatus
internetmonitor:GetQueryResults
internetmonitor:StopQuery
```

Essas permissões estão incluídas na política do AWS Identity and Access Management recomendada para usar o painel do Monitor de Internet no console. Para obter mais informações, consulte [Políticas gerenciadas pela AWS do Monitor de Internet](CloudWatch-IM-permissions.md).