Monitorar e configurar um servidor de banco de dados
Depois que uma empresa migra seus bancos de dados locais para o Banco de Dados do Azure para MySQL/PostgreSQL, ela ainda precisa de uma maneira de monitorar seu desempenho.
Como desenvolvedor de banco de dados, você está acostumado a usar ferramentas específicas de bancos de dados e monitoramento de VM local. Agora que seus bancos de dados estão sendo executados no Azure, você pode aproveitar o portal para usar uma única ferramenta para monitorar todos os diferentes bancos de dados.
Nesta unidade, você verá como o Azure Monitor pode apoiá-lo no monitoramento da integridade dos bancos de dados pelos quais você é responsável. Depois de descobrir os problemas, você verá como alterar a configuração de seus bancos de dados para resolvê-los.
Como usar o Azure Monitor para exibir a integridade de seus bancos de dados
Use o Azure Monitor para controlar o uso de recursos no Banco de Dados do Azure para MySQL/PostgreSQL. A página Métricas do seu servidor no portal do Azure permite-lhe criar gráficos que ajudam a detetar tendências no desempenho e a detetar anomalias.
Métricas do Banco de Dados do Azure para MySQL/PostgreSQL
As métricas disponíveis para monitorar um servidor se enquadram em quatro grandes categorias:
- Métricas de armazenamento
- Métricas de conexão
- Métricas de utilização de recursos de processamento de dados
- Métricas de replicação
Métricas de armazenamento
As métricas de armazenamento controlam o tamanho total dos bancos de dados no servidor (Armazenamento usado) e a quantidade atual de espaço de armazenamento no servidor (Limite de armazenamento). Em um sistema ativo, você provavelmente verá que a métrica de armazenamento usada cresce com o tempo. Se você tiver a opção de crescimento automático selecionada para o servidor, a métrica Limite de armazenamento ocasionalmente aumenta à medida que a quantidade de espaço livre diminui. O armazenamento extra é adicionado sempre que a quantidade de espaço livre cai abaixo de 5% do uso atual. Use a métrica de porcentagem de armazenamento para exibir a proporção de espaço usado para liberar espaço no servidor.
Se o servidor estiver gastando tempo regularmente aumentando o armazenamento, considere atribuir mais espaço manualmente. Faça isso no portal do Azure selecionando a página Camada de preços para seu servidor e use o controle deslizante Armazenamento . Lembre-se de que você é cobrado pelo armazenamento, portanto, não defina o armazenamento disponível como alto para estar com.
A métrica de armazenamento de backup usada mostra quanto espaço seus backups estão ocupando. Esta métrica é importante do ponto de vista dos custos. Você não será cobrado pelo armazenamento de backup, desde que permaneça abaixo do tamanho do espaço de armazenamento alocado ao seu servidor (conforme especificado pelo nível de preço). Quando você ultrapassa esse limite, incorre em cobranças pelo armazenamento de backup.
Métricas de conexão
A métrica Conexões ativas mostra quantas conexões simultâneas o servidor está suportando no momento. Isso pode não ser o mesmo que o número de usuários simultâneos, dependendo se você configurou qualquer tipo de pool de conexões. O Banco de Dados do Azure para MySQL/PostgreSQL atualmente não fornece nenhum recurso de pool de conexões, mas você pode usar um serviço de proxy como PgBouncer* (para PostgreSQL) para implementar esse recurso. Para obter mais informações, consulte Práticas recomendadas de desempenho para usar o Banco de Dados do Azure para PostgreSQL – Pool de Conexões
A métrica Conexões com falha mostra a frequência com que os usuários apresentaram credenciais inválidas. Um grande número desses eventos em um curto período de tempo pode indicar um ataque de força bruta.
Métricas de utilização de recursos de processamento de dados
Essas métricas ajudam você a monitorar como seu servidor lida com a carga de trabalho.
A métrica de porcentagem da CPU mostra o quão ocupada a CPU está. O alto uso da CPU não é um problema, a menos que tenha aumentado ao longo do tempo. A utilização da CPU acima de 90% e ainda crescente indica que seu sistema está se aproximando da capacidade de processamento. Você deve considerar a expansão para um nível de preço com mais recursos.
A métrica Porcentagem de memória indica a ocupação da memória. O Banco de Dados do Azure para MySQL/PostgreSQL usa memória para armazenar dados em cache e para executar os processos iniciados por cada solicitação de cliente. O alto uso de memória não é um problema até que se torne excessivo, normalmente acima de 95%, dependendo da quantidade real de memória disponível. A disponibilidade de memória muito baixa pode causar falhas de conexão e desempenho lento devido à fragmentação da memória. Você deve monitorar essa métrica para determinar se a ocupação da memória está crescendo ao longo do tempo e dimensionar o servidor de acordo.
A métrica de porcentagem de E/S rastreia a quantidade de atividade do disco que está sendo executada pelo servidor. O ideal é que esse valor seja o mais baixo possível. A E/S do disco é uma operação lenta. Um valor alto para essa métrica, em conjunto com um alto valor para a porcentagem de memória, pode indicar que o servidor não tem recursos suficientes para armazenar dados em cache de forma eficaz e, em vez disso, está tendo que ler e gravar dados no armazenamento em disco. Um grau de atividade de E/S é inevitável, porque seus dados devem ser mantidos em disco em algum momento e os logs de transações devem ser mantidos. Na maioria dos servidores de banco de dados, essa gravação é executada por um processo ou thread separado que é executado de forma assíncrona.
As métricas Network In e Network out mostram o volume de tráfego que entra e sai do servidor através de conexões ativas. Os limites para esses números são determinados pela largura de banda do caminho entre os aplicativos cliente e o servidor.
Métricas de replicação
O Banco de Dados do Azure para PostgreSQL fornece as métricas de Atraso Máximo entre Réplicas e Atraso de Réplica para ajudá-lo a determinar o quão atualizadas são as réplicas. Essas métricas só serão significativas se você tiver configurado réplicas somente leitura.
A métrica Max Lag Across Replicas mostra quantos bytes a réplica mais lenta está atrás da master. Você só pode monitorar essa métrica a partir do mestre.
A métrica Atraso da réplica mostra o tempo, em segundos, desde que a transação mais recente foi recebida do mestre e aplicada a uma réplica . Essa métrica só faz sentido quando visualizada em uma réplica.
O Banco de Dados do Azure para MySQL tem a métrica de atraso de replicação em segundos . Essa métrica, que você só pode monitorar a partir de uma réplica, mostra o número de segundos em que a réplica está atrasada em relação ao mestre.
Crie gráficos e alertas para monitorar o desempenho
A página Métricas de um servidor no portal do Azure permite criar gráficos que controlam valores de métricas. As métricas são reunidas em intervalos de um minuto. Para cada métrica, você especifica uma agregação que determina como relatar essa métrica.
- A média gera um valor médio para a métrica em cada minuto
- Max mostra o valor máximo alcançado durante cada minuto
- Min mostra o menor valor
- A soma totaliza a métrica
- A contagem mostra quantas vezes ocorreu o evento gerador da métrica
Nem todas as agregações são necessariamente significativas para cada métrica.
O gráfico de exemplo abaixo capturou os valores médios minuto a minuto para as métricas de porcentagem de CPU, porcentagem de memória, porcentagem de E/S e conexões ativas. Você verá que há 101 conexões ativas todas em execução simultânea. A utilização da CPU e da memória são estáveis e a percentagem de E/S está em 0. Neste exemplo, os aplicativos cliente estão executando cargas de trabalho de leitura intensiva e os dados necessários são armazenados em cache na memória.
Observe que há um intervalo de até cinco minutos entre as métricas que estão sendo capturadas e os resultados exibidos em um gráfico.
Se uma métrica indicar que um recurso está atingindo um ponto crítico, você poderá definir um alerta para notificar um administrador. O exemplo abaixo envia um e-mail para um administrador se a utilização da memória exceder 90%.
Configurar parâmetros de servidor
Os servidores MySQL e PostgreSQL nativos são altamente configuráveis, pois ambos usam definições de configuração armazenadas em arquivos de parâmetros. Para PostgreSQL , essas informações são mantidas no arquivo postgresql.conf . Para o MySQL, os dados de configuração são armazenados em vários arquivos my.cnf . No Banco de Dados do Azure para MySQL/PostgreSQL, você não tem acesso direto a esses arquivos. Em vez disso, você exibe e modifica os parâmetros do servidor usando o portal do Azure ou a CLI do Azure.
Exibir e definir parâmetros usando o portal do Azure
Os parâmetros de configuração do servidor estão disponíveis na página Parâmetros do servidor para o seu servidor no portal do Azure. Você pode modificar os valores dos parâmetros conforme apropriado para seu servidor. A imagem abaixo mostra a página de parâmetros do servidor para o Banco de Dados do Azure para PostgreSQL. A página correspondente para o Banco de Dados do Azure para MySQL é semelhante.
Nem todos os parâmetros de configuração do servidor estão disponíveis porque uma grande parte da configuração do servidor é controlada pelo Azure. Por exemplo, os parâmetros associados à alocação de memória estão faltando. Além disso, o Banco de Dados do Azure para MySQL não oferece suporte ao armazenamento ISAM, portanto, os parâmetros myisam não estão lá.
As alterações nos parâmetros marcados como Dinâmico entram em vigor imediatamente. Os parâmetros marcados como estáticos exigem que você reinicie o servidor. Faça isso na página Visão geral do seu servidor.
Exibir e definir parâmetros usando a CLI do Azure
Você pode visualizar e modificar parâmetros programaticamente com os az mysql/postgres server configuration
comandos. Visualize as configurações de cada parâmetro de configuração com az mysql/postgres server configuration list
o , e clique em um único parâmetro usando az mysql/postgres server configuration show [parameter-name]
o . O trecho de código abaixo mostra um exemplo do Banco de Dados do Azure para PostgreSQL:
az postgres server configuration show \
--resource-group northwindrg \
--server-name northwind101 \
--name vacuum_defer_cleanup_age
O resultado deve ser semelhante a este:
{
"allowedValues": "0-1000000",
"dataType": "Integer",
"defaultValue": "0",
"description": "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any.",
"id": "**********************",
"name": "vacuum_defer_cleanup_age",
"resourceGroup": "northwindrg",
"source": "system-default",
"type": "Microsoft.DBforPostgreSQL/servers/configurations",
"value": "0"
}
O item importante na saída é o campo de valor , que mostra a configuração atual para o parâmetro.
Use o comando para alterar o az mysql/postgres server configuration set
valor de um parâmetro de configuração, da seguinte maneira:
az postgres server configuration set \
--resource-group northwindrg \
--server-name northwind101 \
--name vacuum_defer_cleanup_age \
--value 5
Se você precisar reiniciar um servidor depois de alterar um parâmetro estático, execute o az mysql/postgres server restart
comando:
az postgres server restart \
--resource-group northwindrg \
--name northwind101