

# Analisar anomalias de performance com o DevOps Guru para Amazon RDS
<a name="devops-guru-for-rds"></a>

O Amazon DevOps Guru é um serviço de operações totalmente gerenciado que ajuda desenvolvedores e operadores a melhorar a performance e a disponibilidade de suas aplicações. O DevOps Guru dispensa as tarefas associadas à identificação de problemas operacionais, para que você possa implementar rapidamente recomendações para melhorar sua aplicação. Para ter mais informações, consulte [O que é Configurar o Amazon DevOps Guru?](https://docs.aws.amazon.com/devops-guru/latest/userguide/welcome.html) no *Guia do usuário do Amazon DevOps Guru*.

O DevOps Guru detecta, analisa e faz recomendações de problemas operacionais para todos os mecanismos de banco de dados do Amazon RDS. O DevOps Guru para RDS amplia essa capacidade, aplicando machine learning a métricas do Performance Insights para bancos de dados do RDS para PostgreSQL. Esses recursos de monitoramento permitem que o DevOps Guru para RDS detecte e diagnostique gargalos de performance e recomende ações corretivas específicas. O DevOps Guru para RDS também pode detectar condições problemáticas no banco de dados RDS para PostgreSQL antes que elas ocorram.

Agora é possível ver essas recomendações no console do RDS. Para obter mais informações, consulte [Recomendações do Amazon RDS](monitoring-recommendations.md).

O vídeo a seguir apresenta uma visão geral do DevOps Guru para RDS.

[![AWS Videos](http://img.youtube.com/vi/N3NNYgzYUDA/0.jpg)](http://www.youtube.com/watch?v=N3NNYgzYUDA)


Para se aprofundar no assunto, consulte [Bastidores do Amazon DevOps Guru para RDS](https://aws.amazon.com/blogs/database/amazon-devops-guru-for-rds-under-the-hood/).

**Topics**
+ [Benefícios do DevOps Guru para RDS](#devops-guru-for-rds.benefits)
+ [Como funciona o DevOps Guru para RDS](#devops-guru-for-rds.how-it-works)
+ [Configurar o DevOps Guru para RDS](#devops-guru-for-rds.configuring)

## Benefícios do DevOps Guru para RDS
<a name="devops-guru-for-rds.benefits"></a>

Se você é responsável por um banco de dados RDS para PostgreSQL, talvez não esteja ciente da existência de um evento ou regressão que está afetando esse banco de dados. Quando você ficar sabendo do problema, talvez não saiba por que ele está ocorrendo ou o que fazer a respeito. Em vez de recorrer a um administrador de banco de dados (DBA) para obter ajuda ou depender de ferramentas de terceiros, você pode seguir as recomendações do DevOps Guru para RDS. 

Estas são as vantagens das análises detalhadas do DevOps Guru para RDS:

**Diagnóstico rápido**  
O DevOps Guru para RDS monitora e analisa continuamente a telemetria do banco de dados. O Performance Insights, o Enhanced Monitoring e o Amazon CloudWatch coletam dados de telemetria para sua instância de banco de dados. O DevOps Guru para RDS usa técnicas estatísticas e de machine learning para explorar esses dados e detectar anomalias. Para saber mais sobre dados de telemetria, consulte [Monitoramento da carga do banco de dados com Performance Insights no Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) e [Monitoramento de métricas do sistema operacional com monitoramento aprimorado](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html) no *Guia do usuário do Amazon RDS*.

**Resolução rápida**  
Cada anomalia identifica o problema de performance e sugere rotas de investigação ou ações corretivas. Por exemplo, o DevOps Guru para RDS pode recomendar que você investigue eventos de espera específicos. Ou ele pode recomendar que você ajuste as configurações do seu grupo de aplicações para limitar o número de conexões de banco de dados. Com base nessas recomendações, é possível resolver problemas de performance mais rapidamente do que solucionando problemas manualmente.

**Insights proativos**  
O DevOps Guru para RDS utiliza métricas de seus recursos para detectar um comportamento possivelmente problemático antes que ele se torne um problema maior. Por exemplo, ele pode detectar quando seu banco de dados está utilizando um número crescente de tabelas temporárias em disco, o que pode começar a afetar a performance. Depois, o DevOps Guru fornece recomendações para ajudar você a resolver problemas antes que eles se tornem problemas maiores.

**Conhecimento profundo dos engenheiros da Amazon e de "machine learning**  
Para detectar problemas de performance e ajudar você a resolver gargalos, o DevOps Guru para RDS conta com machine learning (ML) e fórmulas matemáticas avançadas. Os engenheiros de banco de dados da Amazon contribuíram para o desenvolvimento das descobertas do DevOps Guru para RDS, que englobam muitos anos gerenciando centenas de milhares de bancos de dados. Com base nesse conhecimento coletivo, o DevOps Guru para RDS pode ensinar práticas recomendadas para você.

## Como funciona o DevOps Guru para RDS
<a name="devops-guru-for-rds.how-it-works"></a>

O DevOps Guru para RDS coleta dados sobre seus bancos de dados RDS para PostgreSQL por meio do Amazon RDS Performance Insights. A métrica mais importante é `DBLoad`. O DevOps Guru for RDS consome as métricas do Performance Insights, analisa-as com machine learning e publica insights no painel.

Um *insight* é uma coleção de anomalias relacionadas que foram detectadas pelo DevOps Guru.

No DevOps Guru para RDS, uma *anomalia* é um padrão que se desvia do que é considerada a performance normal do seu banco de dados RDS para PostgreSQL. 

### Insights proativos
<a name="devops-guru-for-rds.how-it-works.insights.proactive"></a>

Um *insight proativo* informa você sobre um comportamento problemático antes que ele ocorra. Contém anomalias com recomendações e métricas relacionadas para ajudar você a resolver problemas em seus bancos de dados RDS para PostgreSQL antes que se tornem problemas maiores. Esses insights são publicados no painel do DevOps Guru.

Por exemplo, o DevOps Guru pode detectar que seu banco de dados do RDS para PostgreSQL está criando muitas tabelas temporárias em disco. Se não for tratada, essa tendência poderá gerar problemas de performance. Cada insight proativo inclui recomendações para comportamento corretivo e links para tópicos relevantes em [Ajustar o RDS para PostgreSQL com insights proativos do Amazon DevOps Guru](PostgreSQL.Tuning_proactive_insights.md). Para ter mais informações, consulte [Trabalhar com insights no DevOps Guru](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html) no *Guia do usuário do Amazon DevOps Guru*. 

### Insights reativos
<a name="devops-guru-for-rds.how-it-works.insights.reactive"></a>

Um *insight reativo* identifica um comportamento anômalo quando ele ocorre. Se o DevOps Guru para RDS encontrar problemas de performance nas suas instâncias de banco de dados do RDS para PostgreSQL, ele publicará um insight reativo no painel do DevOps Guru. Para ter mais informações, consulte [Trabalhar com insights no DevOps Guru](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-insights.html) no *Guia do usuário do Amazon DevOps Guru*.

#### Anomalias causais
<a name="devops-guru-for-rds.how-it-works.anomalies.causal"></a>

Uma *anomalia causal* é uma anomalia de nível superior dentro de um insight reativo. **Carga do banco de dados** é a anomalia causal do DevOps Guru para RDS. 

Uma anomalia mede o impacto na performance, atribuindo um nível de gravidade de **Alto**, **Médio** ou **Baixo**. Para saber mais, consulte os [Principais conceitos do DevOps Guru para RDS](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-rds.overview.definitions.html), no *Guia do usuário do Amazon DevOps Guru*.

Se o DevOps Guru detectar uma anomalia em sua instância de banco de dados, você será alertado na página **Databases** (Bancos de dados) do console do RDS. O console também alerta você sobre anomalias que ocorreram nas últimas 24 horas. Para acessar a página de anomalias no console do RDS, escolha o link na mensagem de alerta. O console do RDS também alerta você na página da instância de banco de dados do RDS para PostgreSQL.

#### Anomalias contextuais
<a name="devops-guru-for-rds.how-it-works.anomalies.contextual"></a>

Uma *anomalia contextual* é uma descoberta em **Carga do banco de dados (carga do BD)** que é relatada a um insight reativo. Cada anomalia contextual descreve um problema de performance específico do RDS para PostgreSQL que requer investigação. Por exemplo, o DevOps Guru para RDS pode recomendar que você aumente a capacidade da CPU ou investigue eventos de espera que estão contribuindo para a carga do banco de dados.

**Importante**  
Convém testar todas as alterações na instância de teste antes de modificar a instância de produção. Dessa forma, você pode compreender o impacto da alteração.

Para saber mais, consulte [Analisar anomalias no Amazon RDS](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-rds.analyzing.html) no *Guia do usuário do Amazon DevOps Guru*.

## Configurar o DevOps Guru para RDS
<a name="devops-guru-for-rds.configuring"></a>

Para permitir que o DevOps Guru para Amazon RDS publique insights de um banco de dados do RDS para PostgreSQL, conclua as tarefas a seguir.

**Topics**
+ [Configurar políticas de acesso do IAM para DevOps Guru para RDS](#devops-guru-for-rds.configuring.access)
+ [Ativar o Performance Insights para suas instâncias de banco de dados do RDS para PostgreSQL](#devops-guru-for-rds.configuring.performance-insights)
+ [Ativar o DevOps Guru e especificar a cobertura de recursos](#devops-guru-for-rds.configuring.coverage)

### Configurar políticas de acesso do IAM para DevOps Guru para RDS
<a name="devops-guru-for-rds.configuring.access"></a>

Para visualizar alertas do DevOps Guru no console do RDS, seu usuário ou perfil do AWS Identity and Access Management (IAM) deve ter uma das seguintes políticas:
+ A política `AmazonDevOpsGuruConsoleFullAccess` gerenciada pelo AWS
+ A política gerenciada `AmazonDevOpsGuruConsoleReadOnlyAccess` da AWS e uma das seguintes políticas:
  + A política `AmazonRDSFullAccess` gerenciada pelo AWS
  + Uma política gerenciada pelo cliente que inclua `pi:GetResourceMetrics` e `pi:DescribeDimensionKeys`

Para ter mais informações, consulte [Configurar políticas de acesso para o Performance Insights](USER_PerfInsights.access-control.md).

### Ativar o Performance Insights para suas instâncias de banco de dados do RDS para PostgreSQL
<a name="devops-guru-for-rds.configuring.performance-insights"></a>

O DevOps Guru para RDS depende do Performance Insights para seus dados. Sem o Performance Insights, o DevOps Guru publica anomalias, mas não inclui a análise e as recomendações detalhadas.

Ao criar ou modificar uma instância de banco de dados do RDS para PostgreSQL, você pode ativar o Performance Insights. Para ter mais informações, consulte [Ativar e desativar o Insights de Performance do Amazon RDS](USER_PerfInsights.Enabling.md).

### Ativar o DevOps Guru e especificar a cobertura de recursos
<a name="devops-guru-for-rds.configuring.coverage"></a>

Você pode ativar o DevOps Guru para que ele monitore seus bancos de dados do  RDS para PostgreSQL de uma das maneiras a seguir.

**Topics**
+ [Ativar o DevOps Guru no console do RDS](#devops-guru-for-rds.configuring.coverage.rds-console)
+ [Adicionar recursos do RDS para PostgreSQL no console do DevOps Guru](#devops-guru-for-rds.configuring.coverage.guru-console)
+ [Adicionar recursos do RDS para PostgreSQL usando o CloudFormation](#devops-guru-for-rds.configuring.coverage.cfn)

#### Ativar o DevOps Guru no console do RDS
<a name="devops-guru-for-rds.configuring.coverage.rds-console"></a>

Você pode seguir vários caminhos no console do Amazon RDS para ativar o DevOps Guru.

**Topics**
+ [Ativar o DevOps Guru ao criar um banco de dados do RDS para PostgreSQL](#devops-guru-for-rds.configuring.coverage.rds-console.create)
+ [Ativar o DevOps Guru a partir do banner de notificação](#devops-guru-for-rds.configuring.coverage.rds-console.existing)
+ [Responder a um erro de permissões quando você ativa o DevOps Guru](#devops-guru-for-rds.configuring.coverage.rds-console.error)

##### Ativar o DevOps Guru ao criar um banco de dados do RDS para PostgreSQL
<a name="devops-guru-for-rds.configuring.coverage.rds-console.create"></a>

O fluxo de trabalho de criação inclui uma configuração que ativa a cobertura do DevOps Guru para seu banco de dados. Essa configuração é ativada por padrão quando você escolhe o modelo **Production** (Produção).

**Como ativar o DevOps Guru ao criar um banco de dados do RDS para PostgreSQL**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Siga as etapas em [Criar uma instância de banco de dados](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating) exceto a etapa em que você escolhe as configurações de monitoramento.

1. Em **Monitoring** (Monitoramento), escolha **Turn on Performance Insights** (Ativar Performance Insights). Para que o DevOps Guru para RDS forneça uma análise detalhada de anomalias de performance, o Performance Insights deve estar ativado.

1. Escolha **Turn on DevOps Guru** (Ativar DevOps Guru).  
![\[Ativar o DevOps Guru ao criar uma instância de banco de dados\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/devops-guru-enable-create.png)

1. Crie uma tag para seu banco de dados para que o DevOps Guru possa monitorá-lo. Faça o seguinte:
   + No campo de texto para **Tag key** (Chave de tag), insira um nome que comece com **Devops-Guru-**.
   + No campo de texto para **Tag value** (Valor da tag), insira qualquer valor. Por exemplo, se você inserir **rds-database-1** para obter o nome do banco de dados do RDS para PostgreSQL, também é possível inserir **rds-database-1** como o valor da tag.

   Para ter mais informações sobre tags, consulte “[Usar tags para identificar recursos em suas aplicações do DevOps Guru](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-resource-tags.html)” no *Guia do usuário do Amazon DevOps Guru*.

1. Conclua as etapas restantes em [Criar uma instância de banco de dados](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating).

##### Ativar o DevOps Guru a partir do banner de notificação
<a name="devops-guru-for-rds.configuring.coverage.rds-console.existing"></a>

Se seus recursos não forem cobertos pelo DevOps Guru, o Amazon RDS notificará você com um banner nos seguintes locais:
+ A guia **Monitoring** (Monitoramento) de uma instância de cluster de banco de dados
+ O painel do Performance Insights

![\[Banner do DevOps Guru\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/devops-guru-enable-banner.png)


**Como ativar o DevOps Guru para seu banco de dados do RDS para PostgreSQL**

1. No banner, escolha **Turn on DevOps Guru for RDS** (Ativar DevOps Guru para RDS).

1. Insira um nome de chave e um valor para a tag. Para ter mais informações sobre tags, consulte “[Usar tags para identificar recursos em suas aplicações do DevOps Guru](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-resource-tags.html)” no *Guia do usuário do Amazon DevOps Guru*.  
![\[Ative o DevOps Guru no console do RDS.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/devops-guru-turn-on.png)

1. Escolha **Turn on DevOps Guru** (Ativar DevOps Guru).

##### Responder a um erro de permissões quando você ativa o DevOps Guru
<a name="devops-guru-for-rds.configuring.coverage.rds-console.error"></a>

Se você ativar o DevOps Guru no console do RDS ao criar um banco de dados, o RDS poderá exibir o banner a seguir sobre permissões ausentes.

![\[Banner com um erro de permissões ausentes\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/devops-guru-permissions-error.png)


**Como responder a um erro de permissões**

1. Conceda ao usuário ou ao perfil do IAM a função gerenciada pelo usuário `AmazonDevOpsGuruConsoleFullAccess`. Para ter mais informações, consulte [Configurar políticas de acesso do IAM para DevOps Guru para RDS](#devops-guru-for-rds.configuring.access).

1. Abra o console do RDS.

1. No painel de navegação, escolha **Performance Insights**.

1. Escola uma instância de banco de dados no cluster que você acabou de criar.

1. Selecione o switch para ativar o **DevOps Guru para RDS**.  
![\[Selecionar o switch para ativar o DevOps Guru para RDS\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/devops-guru-pi-toggle-off.png)

1. Escolha um valor de tag. Para ter mais informações, consulte “[Usar tags para identificar recursos em suas aplicações do DevOps Guru](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-resource-tags.html)” no *Guia do usuário do Amazon DevOps Guru*.  
![\[Ativar o DevOps Guru no console do Amazon RDS\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/devops-guru-turn-on.png)

1. Escolha **Turn on DevOps Guru** (Ativar DevOps Guru).

#### Adicionar recursos do RDS para PostgreSQL no console do DevOps Guru
<a name="devops-guru-for-rds.configuring.coverage.guru-console"></a>

Você pode especificar a cobertura de recursos do DevOps Guru no console do DevOps Guru. Siga a etapa descrita em [Especificar a cobertura de recursos do DevOps Guru](https://docs.aws.amazon.com/devops-guru/latest/userguide/choose-coverage.html) no *Guia do usuário do Amazon DevOps Guru*. Ao editar os recursos analisados, escolha uma das seguintes opções:
+ Selecione **Todos os recursos da conta** para analisar todos os recursos compatíveis, inclusive os bancos de dados do RDS para PostgreSQL, em sua Conta da AWS e região.
+ Selecione **Pilhas do CloudFormation** para analisar os bancos de dados do RDS para PostgreSQL que estão nas pilhas escolhidas. Para ter mais informações, consulte [Usar pilhas do AWS CloudFormation para identificar recursos em suas aplicações do DevOps Guru](https://docs.aws.amazon.com//devops-guru/latest/userguide/working-with-cfn-stacks.html) no *Guia do usuário do Amazon DevOps Guru*.
+ Selecione **Tags** para analisar os bancos de dados do RDS para PostgreSQL marcados. Para ter mais informações, consulte [Usar tags para identificar recursos em suas aplicações do DevOps Guru](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-resource-tags.html) no *Guia do usuário do Amazon DevOps Guru*.

Para ter mais informações, consulte [Enable DevOps Guru](https://docs.aws.amazon.com/devops-guru/latest/userguide/getting-started-enable-service.html) (Ativar o DevOps Guru), no *Guia do usuário do Amazon DevOps Guru*.

#### Adicionar recursos do RDS para PostgreSQL usando o CloudFormation
<a name="devops-guru-for-rds.configuring.coverage.cfn"></a>

Você pode usar tags para adicionar cobertura dos recursos do RDS para PostgreSQL aos modelos do CloudFormation. O procedimento a seguir pressupõe que você tenha um modelo do CloudFormation para sua instância de banco de dados do RDS para PostgreSQL e para a pilha do DevOps Guru.

**Como especificar uma instância de banco de dados do RDS para PostgreSQL usando uma tag do CloudFormation**

1. No modelo do CloudFormation para sua instância de banco de dados, defina uma tag usando um par de chave/valor.

   O exemplo a seguir atribui o valor `my-db-instance1` a `Devops-guru-cfn-default` para uma instância de banco de dados do RDS para PostgreSQL.

   ```
   MyDBInstance1:
     Type: "AWS::RDS::DBInstance"
     Properties:
       DBInstanceIdentifier: my-db-instance1
       Tags:
         - Key: Devops-guru-cfn-default
           Value: devopsguru-my-db-instance1
   ```

1. No modelo do CloudFormation para sua pilha do DevOps Guru, especifique a mesma tag em seu filtro de coleta de recursos.

   O exemplo a seguir configura o DevOps Guru para fornecer cobertura para o recurso com o valor da tag `my-db-instance1`.

   ```
   DevOpsGuruResourceCollection:
     Type: AWS::DevOpsGuru::ResourceCollection
     Properties:
       ResourceCollectionFilter:
         Tags:
           - AppBoundaryKey: "Devops-guru-cfn-default"
             TagValues:
             - "devopsguru-my-db-instance1"
   ```

   O exemplo a seguir fornece cobertura para todos os recursos dentro dos limites da aplicação `Devops-guru-cfn-default`.

   ```
   DevOpsGuruResourceCollection:
     Type: AWS::DevOpsGuru::ResourceCollection
     Properties:
       ResourceCollectionFilter:
         Tags:
           - AppBoundaryKey: "Devops-guru-cfn-default"
             TagValues:
             - "*"
   ```

Para ter mais informações, consulte [AWS::DevOpsGuru::ResourceCollection](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-devopsguru-resourcecollection.html) e [AWS::RDS::DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbinstance.html) no *Guia do usuário do CloudFormation*.