Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os aplicativos em nuvem geram grandes volumes de dados operacionais, o que torna difícil identificar e resolver problemas rapidamente. Um motivo comum para esse desafio é a ausência de uma linha de base de saúde personalizada para a funcionalidade da carga de trabalho e a incapacidade de detectar descompassos dessa linha de base.
A modelagem de integridade é um exercício de observabilidade que combina o contexto de negócios com dados brutos de monitoramento para quantificar a integridade geral de uma carga de trabalho. Isso ajuda a definir uma linha de base na qual você pode monitorar a carga de trabalho. Você deve considerar dados como telemetria dos componentes de infraestrutura e aplicativos. A modelagem de desempenho também pode incorporar outras informações necessárias para atingir as metas de qualidade da carga de trabalho.
Problemas de desempenho ou degradação operacional podem causar desvio do estado operacional esperado. Ao modelar a integridade de uma carga de trabalho, você pode identificar desvios e tomar decisões operacionais informadas que consideram o impacto nos negócios.
A modelagem de saúde preenche a lacuna entre o conhecimento operacional tribal e os insights acionáveis. Ele ajuda você a gerenciar problemas críticos de forma eficaz. O conceito é essencial para maximizar a confiabilidade e a eficácia operacional.
Este guia oferece diretrizes práticas sobre modelagem de integridade, incluindo como criar um modelo que avalia a integridade do tempo de execução de uma carga de trabalho e todos os seus subsistemas.
Terminologia
Antes de começar a desenvolver seu modelo de saúde, familiarize-se com esses termos-chave.
| Terminologia | Definição |
|---|---|
| Modelagem de saúde | Um exercício de observabilidade que usa o contexto de negócios para interpretar dados de monitoramento como estados de saúde. |
| Modelo de saúde | Uma representação gráfica de entidades lógicas e seus relacionamentos para um determinado escopo. Cada nó tem uma definição de estado de saúde para racionalizar o uso dos dados de monitoramento em todo o modelo. |
| Entidade de saúde | Um componente lógico que representa uma unidade individual de um sistema, uma combinação lógica de várias entidades relacionadas ou o sistema geral. |
| Estado de integridade | Um status definido e mensurável que fornece insights operacionais significativos sobre a integridade de uma entidade. |
| Sinal de saúde | Fluxos de dados individuais que fornecem insights sobre o comportamento operacional de uma entidade. |
| Modelo de modelos | Um escopo de modelagem agregado no qual as entidades representam modelos de saúde distintos para sistemas de componentes. |
Recomendamos que você assista a este vídeo para obter uma compreensão de alto nível da modelagem de saúde.
O que é saúde, modelagem de saúde e um modelo de saúde?
O termo saúde refere-se ao status operacional de uma entidade e suas dependências. Essa entidade pode ser uma unidade individual de um sistema, uma combinação lógica de várias entidades relacionadas ou o sistema geral.
Recomendamos que você represente a saúde em um dos três estados:
Saudável: Opera de forma ideal e atende às expectativas de qualidade
Degradado: Exibe um comportamento menos saudável, o que indica problemas potenciais
Não saudável: Em estado crítico e requer atenção imediata
Observação
Você pode representar a saúde com uma pontuação em vez de estados para fornecer mais granularidade nos dados.
Os estados de integridade são derivados da combinação de dados de monitoramento com informações de domínio. Cada estado deve ser definido e mensurável. Os estados de saúde são calculados usando sinais de saúde, que são fluxos de dados individuais que fornecem insights sobre o comportamento operacional de uma entidade. Os sinais podem incluir métricas, logs, rastreamentos ou outras características de qualidade. Por exemplo, um sinal de saúde para uma entidade de máquina virtual (VM) pode rastrear a métrica de utilização da CPU. Outros sinais para essa entidade podem incluir uso de memória, latência de rede ou taxas de erro.
Ao definir sinais de saúde, considere os requisitos não funcionais para o trabalho. No exemplo de utilização da CPU, inclua os limites esperados para cada estado de integridade. Se a utilização exceder o limite tolerado de acordo com os requisitos de carga de trabalho, o sistema fará a transição de Íntegro para Degradado ou Não íntegro. Essas alterações de estado disparam os alertas ou ações apropriados.
A modelagem de integridade exige que as entidades tenham estados bem definidos derivados de vários sinais de integridade e contextualizados para a carga de trabalho. Por exemplo, a definição de integridade de uma VM pode ser:
Íntegro: os principais requisitos e metas não funcionais, como tempo de resposta, utilização de recursos e desempenho geral do sistema, são totalmente atendidos. Por exemplo, 95% das solicitações são processadas em 500 milissegundos. A carga de trabalho usa recursos de VM como CPU, memória e armazenamento de forma otimizada e mantém um equilíbrio entre as demandas de carga de trabalho e a capacidade disponível. A experiência do usuário está nos níveis esperados.
Degradado: os recursos não estão funcionando de maneira ideal, mas ainda estão operacionais. Por exemplo, o disco de armazenamento está enfrentando problemas de limitação. Os usuários podem experimentar respostas lentas.
Não saudável: A degradação está além dos limites tolerados. Os recursos não estão mais responsivos ou disponíveis, e o sistema não está mais atendendo aos níveis de desempenho aceitáveis. A experiência do usuário é severamente afetada.
O resultado da modelagem de saúde é um modelo ou uma representação gráfica de entidades lógicas e seus relacionamentos para uma arquitetura de carga de trabalho. Cada nó tem uma definição de estado de saúde.
Importante
Modelagem de saúde é um conceito abstrato que você pode implementar e aplicar em diferentes escopos se tiver uma boa compreensão dos cenários de negócios.
Na imagem:
As entidades são componentes lógicos da carga de trabalho que representam aspectos do sistema. Eles podem ser componentes de infraestrutura, como servidores, bancos de dados e redes. Eles também podem ser módulos de aplicativos específicos, pods, serviços ou microsserviços. Ou as entidades podem capturar interações do usuário e fluxos do sistema dentro da carga de trabalho.
Observação
Os fluxos de usuário e sistema resumem os requisitos não funcionais em cenários de negócios que envolvem componentes de aplicativo e infraestrutura. Este resumo reflete o valor comercial do aplicativo.
As relações entre entidades espelham as cadeias de dependência dentro do sistema. Por exemplo, um módulo de aplicativo pode chamar componentes de infraestrutura específicos que formam uma relação.
Considere um cenário em que uma carga de trabalho de comércio eletrônico passa por um aumento de mensagens com falha em uma fila do Barramento de Serviço do Azure, o que está causando falhas nos pagamentos. Esse problema é crítico para a organização devido à perda de receita implícita. Embora um desenvolvedor de aplicativos possa entender o efeito desse pico de métrica nos pagamentos, esse conhecimento tribal não é frequentemente compartilhado entre a equipe de operações.
Um modelo de saúde pode proporcionar aos operadores visibilidade imediata do problema e de seus efeitos. O fluxo de pagamento depende do Barramento de Serviço, que é um dos componentes de carga de trabalho. A representação visual revela a condição degradada da instância do Barramento de Serviço e seu impacto no fluxo de pagamento. Os operadores podem entender a importância do problema e concentrar seus esforços de correção nesse componente específico.
A modelagem de saúde foi importante no cenário anterior das seguintes maneiras:
Ele melhorou o tempo de detecção (TTD) e o tempo de mitigação (TTM), permitindo um isolamento mais rápido do problema, o que levou a uma detecção mais rápida de problemas e possíveis correções.
Os operadores receberam alertas com base nas condições de saúde, o que reduziu a interferência desnecessária. As operadoras receberam notificações que forneceram contexto específico sobre o impacto comercial nos pagamentos.
As cadeias de dependência ajudaram os operadores a entender completamente a extensão dos problemas operacionais. Esse conhecimento acelerou as avaliações de impacto e levou a respostas priorizadas. Os operadores também identificaram facilmente problemas em cascata ou correlacionados.
Os operadores realizaram atividades pós-incidentes com precisão porque o modelo de saúde forneceu insights sobre as causas principais das anomalias e os sinais de saúde específicos envolvidos.
Isso tornou os dados de monitoramento significativos para todos os membros da equipe. Ele preencheu a lacuna entre o conhecimento tribal e as percepções compartilhadas.
A organização usou o modelo de saúde como base para investimentos futuros em operações baseadas em IA para obter insights inteligentes.
Esquema do modelo de saúde
Os modelos de saúde fornecem um esquema de dados distinto otimizado para casos de uso de observabilidade. Esse esquema transforma a modelagem de saúde de um conceito abstrato em uma solução mensurável. Ao modelar seus requisitos, objetivos e contexto arquitetônico específicos, você pode adaptar os dados de saúde ao seu cenário exclusivo.
A saúde é um conceito de dados relativos. Cada modelo representa dados de saúde que são exclusivos e priorizados para seu escopo contextual, mesmo que use o mesmo conjunto de entidades. O que constitui saudável em um cenário específico pode diferir significativamente em outros contextos.
Por exemplo, considere recursos do Azure do mesmo tipo em sua carga de trabalho.
- A VM A executa um aplicativo sensível à CPU.
- A VM B lida com um serviço com uso intensivo de memória.
As definições de saúde para essas máquinas são diferentes. As métricas de utilização da CPU provavelmente influenciam o status de integridade da VM A, e a VM B pode priorizar métricas relacionadas à memória.
Importante
Um modelo de saúde não deve tratar todas as falhas da mesma forma. Deve distinguir claramente entre falhas esperadas ou transitórias, mas recuperáveis, e um verdadeiro estado de desastre.
Criar um modelo de saúde
A primeira etapa para criar um modelo de saúde é um exercício de design lógico, que normalmente envolve as atividades descritas nas seções a seguir.
Avalie o design da carga de trabalho
Comece este exercício de design lógico avaliando os seguintes componentes do design da carga de trabalho.
Componentes de infraestrutura, como clusters de computação e bancos de dados
Componentes de aplicativos executados na computação e seus componentes relevantes
Dependências lógicas ou físicas entre componentes
Por exemplo, o modelo de integridade de um aplicativo de comércio eletrônico deve representar o estado atual de processos críticos, como entrada do usuário, check-out e pagamentos.
Contextualize usando requisitos de negócios
Avalie a importância relativa e o impacto geral de cada fluxo em sua organização. Considere fatores como experiência do usuário, segurança e eficiência operacional. Por exemplo, na maioria dos cenários, a falha de um processo de pagamento é provavelmente mais significativa do que a falha de um processo de relatório.
Identifique caminhos de escalonamento para lidar com problemas relacionados a cada fluxo. Para obter mais informações, consulte Otimizar o design da carga de trabalho usando fluxos.
Observação
Você percebe o valor da modelagem de saúde somente quando incorpora seus cenários e contexto de negócios. Em seguida, você pode racionalizar o impacto comercial dos problemas operacionais.
Mapeamento para métricas de confiabilidade
Procure métricas de confiabilidade relevantes em todo o design do aplicativo.
Considere a definição de SLIs (indicadores de nível de serviço) e SLOs (objetivos de nível de serviço) para todo o aplicativo e seus processos de negócios individuais. Esses SLIs e SLOs devem estar alinhados com os sinais de saúde específicos considerados para seu modelo de saúde. Ao fazer isso, você cria uma definição abrangente de saúde que reflete com precisão a obtenção de um nível de serviço aceitável para o aplicativo.
Importante
SLIs e SLOs são sinais críticos de saúde. Eles criam uma definição significativa de saúde que reflete o nível de serviço que você deseja, bem como outros atributos de qualidade. Você também pode definir objetivos de integridade do serviço (SHOs) para capturar a integridade que deseja obter em um intervalo de tempo agregado.
Identifique sinais de saúde
Para criar um modelo de saúde abrangente, correlacione vários tipos de dados de monitoramento, incluindo métricas, logs e traces. Ao fazer isso, você garante que o conceito de estado de saúde reflita com precisão o estado durante o tempo de execução de uma entidade específica ou de toda a carga de trabalho.
Utilizar métricas e logs da plataforma
No contexto da modelagem de saúde, é essencial coletar métricas e logs em nível de plataforma dos recursos subjacentes do Azure. Essas métricas incluem porcentagem de CPU, entrada e saída de rede e operações de disco por segundo. Você pode usar esses dados em seu modelo de saúde para detectar e prever possíveis problemas, mantendo um ambiente confiável.
Além disso, essa abordagem ajuda a diferenciar entre falhas transitórias ou interrupções temporárias e falhas não transitórias ou problemas persistentes.
Observação
Como prática recomendada, você deve configurar todos os recursos do aplicativo para direcionar logs e métricas de diagnóstico para a tecnologia de agregação de log escolhida. Crie proteções usando o Azure Policy para garantir configurações de diagnóstico consistentes em todo o aplicativo e impor a configuração escolhida para cada serviço do Azure.
Adicionar logs de aplicativos
Os logs de aplicativos são uma fonte importante de dados de diagnóstico para seu modelo de saúde. Aqui estão algumas práticas recomendadas para o log de aplicativos:
Use registro semântico ou estruturado. Os logs estruturados facilitam o consumo automatizado e a análise de dados de log em grande escala.
Considere armazenar métricas de recursos do Azure e dados de diagnóstico em um workspace de Logs do Azure Monitor em vez de uma conta de armazenamento. Usando esse método, você pode criar sinais de saúde usando consultas Kusto para uma avaliação eficiente.
Registre dados no ambiente de produção. Capture dados abrangentes enquanto o aplicativo opera no ambiente de produção. Informações suficientes são essenciais para a avaliação da saúde e para diagnosticar quaisquer problemas de produção detectados.
Registre eventos nos limites de serviço. Inclua uma ID de correlação que atravesse os limites do serviço. Se uma transação envolver vários serviços e um deles falhar, a ID de correlação ajudará você a rastrear solicitações em todo o aplicativo e identificar a causa da falha.
Use registro assíncrono Evite operações de log síncronas que possam bloquear o código do aplicativo. O log assíncrono assegura a disponibilidade ao evitar o acúmulo de solicitações durante as escritas de log.
Separe o registro de aplicação da auditoria. Mantenha os logs de auditoria separadamente dos logs de diagnóstico. Embora os registros de auditoria atendam aos requisitos de conformidade ou regulamentares, mantê-los distintos evita transações perdidas.
Implementar rastreamento distribuído
Implemente o rastreamento distribuído correlacionando a telemetria entre fluxos críticos do sistema. A telemetria correlacionada fornece insights sobre transações de ponta a ponta e é essencial para uma análise de causa raiz (RCA) eficaz quando ocorrem falhas.
Usar probes de saúde
Implemente e execute investigações de integridade fora do aplicativo para verificar explicitamente a integridade e a capacidade de resposta do aplicativo. Use as respostas de sondagem como sinais em seu modelo de saúde.
Você pode implementar sondas de saúde mensurando o tempo de resposta do aplicativo como um todo ou de componentes individuais. As sondas podem executar processos para medir a latência e verificar a disponibilidade ou para extrair informações do aplicativo. Para obter mais informações, consulte Padrão de Monitoramento de Ponto de Extremidade para Saúde.
A maioria dos balanceadores de carga dá suporte à execução de sondas de saúde que pingam os pontos de extremidade do aplicativo em intervalos configurados. Como alternativa, você pode usar um serviço de vigilância externo. Um serviço de watchdog agrega verificações de integridade de vários componentes no ambiente de trabalho. Os watchdogs também podem hospedar código que faz correção imediata para condições de saúde conhecidas.
Adotar técnicas de monitoramento estrutural e funcional
O monitoramento estrutural envolve equipar o aplicativo com logs e métricas semânticas. O aplicativo coleta diretamente essas métricas, que incluem consumo de memória atual, latência de solicitação e outros dados relevantes no nível do aplicativo.
Fortaleça seus processos de monitoramento usando o monitoramento funcional. Essa abordagem se concentra na medição dos serviços da plataforma e seu efeito na experiência geral do usuário. Ao contrário do monitoramento estrutural, o monitoramento funcional não requer conhecimento detalhado do sistema. Ele testa o comportamento visível externamente do aplicativo. Essa abordagem é útil para avaliar SLOs (Objetivos de Nível de Serviço) e SLIs (Indicadores de Nível de Serviço).
Modele o projeto
Representar o design do aplicativo identificado como entidades e relacionamentos. Mapeie sinais de integridade para componentes específicos para quantificar estados de integridade em um nível de entidade. Considere a criticidade dos componentes para determinar como os estados de saúde devem se propagar através do modelo. Por exemplo, os componentes de relatório podem não ser tão críticos quanto outros componentes, o que resulta em efeitos diferentes na saúde geral da carga de trabalho.
Definir alertas acionáveis
Use os estados de integridade avaliados para disparar alertas e ações automatizadas. A saúde deve ser integrada aos runbooks de operações existentes como um princípio fundamental de dados de observabilidade.
Normalmente, há um mapeamento de um para um entre os dados de monitoramento e as regras de alerta, o que pode levar a resultados indesejáveis, como tempestades de alerta e ruído de alerta ambiente. Por exemplo, em um cluster de computação, grandes volumes de alertas no nível da VM com base na utilização da CPU e na contagem de erros podem sobrecarregar os operadores durante falhas e causar atrasos na resolução. Da mesma forma, quando há um grande número de alertas configurados, o ruído de alerta geralmente resulta em alertas que são não percebidos ou ignorados.
Um modelo de saúde introduz a separação entre dados de monitoramento e regras de alerta. Uma definição de integridade agrega muitos sinais em um único estado de integridade, o que diminui o número de alertas para que os operadores possam se concentrar apenas em alertas de alto valor que são críticos para a organização. Considere o cenário de e-commerce. Você pode configurar um alerta para enviar notificações sobre alterações na saúde do fluxo de pagamentos do processo, em vez de alterações nos recursos subjacentes, como a fila do Barramento de Serviço.
Observação
A capacidade de gerar alertas em todas as camadas do modelo de saúde proporciona flexibilidade para os diferentes perfis de carga de trabalho. Os proprietários de aplicativos e gerentes de produto podem ser alertados sobre alterações de estado de integridade nos principais cenários de negócios ou em toda a carga de trabalho. Os operadores podem ser alertados com base na integridade da infraestrutura ou dos componentes do aplicativo.
Visualizar o modelo
Crie representações visuais, como tabelas ou gráficos, para comunicar de maneira eficaz o estado atual e o histórico do modelo de saúde. Certifique-se de que a visualização esteja alinhada com o contexto de negócios e forneça insights acionáveis.
Ao visualizar o seu modelo de saúde, considere adotar uma abordagem de semáforo para tornar os estados de saúde imediatamente claros em cadeias de dependência.
Atribuir verde para saudável, amarelo para degradado e vermelho para insalubre. Ao identificar rapidamente os estados codificados por cores, você pode localizar com eficiência a causa raiz de qualquer degradação do aplicativo.
Observação
Recomendamos que você considere os requisitos de acessibilidade para pessoas com deficiência visual ao criar um painel para seu modelo de saúde. Para obter as melhores práticas de diagramação, consulte Diagramas de design de arquitetura.
Adote seu modelo de saúde
Depois de criar um modelo de integridade, considere os seguintes casos de uso para conduzir a detecção e a interpretação de falhas ou problemas operacionais.
Aplicabilidade a várias funções
A modelagem de saúde pode fornecer informações específicas para funções de trabalho ou para cargos no mesmo contexto da carga de trabalho. Por exemplo, um papel de DevOps pode precisar de informações sobre saúde operacional. Um oficial de segurança pode estar mais preocupado com sinais de intrusão e exposição de segurança. Um administrador de banco de dados provavelmente só está interessado em um subconjunto do modelo de aplicativo por meio dos recursos do banco de dados.
Adapte insights de saúde para diferentes partes interessadas. Considere a criação de modelos separados a partir de conjuntos de dados sobrepostos.
Validação contínua
Use seu modelo de saúde para otimizar os processos de teste e validação, como teste de carga e teste de caos. Você pode validar o estado operacional em tempo de execução durante o teste e avaliar a eficácia do seu modelo em cenários de escala e falha, incorporando modelos de saúde ao ciclo de vida da engenharia.
Saúde organizacional
Embora a modelagem de integridade seja comumente associada à quantificação de estados de integridade para aplicativos individuais, sua aplicabilidade se estende além desse escopo.
Em um nível de carga de trabalho individual, os modelos de saúde fornecem uma base para a observabilidade do aplicativo e insights operacionais. Cada aplicativo pode ter seu próprio modelo de integridade que captura o que cada estado de integridade significa em seu contexto.
Você pode combinar vários modelos de saúde em uma estrutura de alto nível criando um modelo de modelos. Por exemplo, você pode criar a pegada de observabilidade de uma unidade de negócios ou de um ambiente de nuvem inteiro usando modelos de saúde como componentes em um modelo maior. Os modelos de saúde representam cargas de trabalho dentro da propriedade como nós no gráfico de nível superior. Use as relações nesse modelo para capturar dependências entre aplicativos, incluindo fluxos de dados, interações de serviço e infraestrutura compartilhada.
Considere uma empresa de varejo que possui vários aplicativos para comércio eletrônico, pagamentos e processamento de pedidos. Você pode definir cada um desses aplicativos como um modelo de saúde independente para quantificar o que saúde significa para essa carga de trabalho. Em seguida, você pode usar um modelo principal para mapear todos esses modelos de integridade de componentes como entidades e assim capturar o impacto operacional interaplicativos por meio de cadeias de dependência. Por exemplo, se o aplicativo de comércio eletrônico não estiver íntegro, ele terá um efeito cascata no aplicativo de pagamento.
Tendências de saúde e IA para operações de TI
A modelagem de saúde fornece uma linha de base operacional quantificada ajustada a um contexto de negócios específico. A IA para operações de TI (AIOps) é uma maneira popular de aumentar a eficiência operacional. Os dados de saúde são uma entrada fundamental para modelos de aprendizado de máquina analisarem tendências de saúde. Por exemplo, os modelos de aprendizado de máquina podem:
Extraia mais insights das alterações de estado e recomende ações.
Analise as tendências de saúde ao longo do tempo para orientar a previsão de problemas e o aperfeiçoamento do modelo.
Mantenha seu modelo de saúde
A manutenção de um modelo de saúde é uma atividade de engenharia contínua que se alinha ao desenvolvimento e às operações do aplicativo. À medida que seu aplicativo evolui, certifique-se de que seu modelo de saúde evolua em paralelo.
Além disso, trate os modelos de saúde como artefatos relacionados à carga de trabalho que devem ser integrados ao ciclo de vida de desenvolvimento. Adote infraestrutura como código (IaC) para gerenciamento consistente e controlado por versão do seu modelo de saúde. Use a automação para que o modelo permaneça atualizado à medida que você adiciona ou remove componentes de infraestrutura e aplicativo da carga de trabalho.
Os dados de saúde diminuem gradualmente de valor ao longo do tempo. Para otimizar a eficiência operacional e minimizar os custos, evite reter dados de saúde por mais de 30 dias. Se necessário, você pode arquivar dados para atender aos requisitos de auditoria ou em cenários que envolvem análise de padrões de longo prazo em IA para operações de TI.
Observação
Ao arquivar dados de saúde, certifique-se de associá-los ao estado de configuração do modelo. Interpretar as mudanças de estado pode ser um desafio sem esse contexto.
Facilitação do Azure
A modelagem de saúde é um exercício lógico que é independente de ferramentas e de tecnologia. No entanto, é um processo intensivo que muitas vezes é complexo e requer investimentos significativos em engenharia.
Os modelos de integridade do Azure Monitor permitem que você crie, gerencie e interaja facilmente com modelos de integridade diretamente no Azure. Eles fornecem uma plataforma de dados unificada que se integra perfeitamente ao restante do Azure Monitor, oferecendo alertas embutidos e visualizações prontas para uso, tanto gráficas quanto tabulares, para seus dados de saúde do sistema. Para cenários avançados, as capacidades de plano de dados de consulta e de API permitem o uso flexível de estados de saúde, incorporando facilmente essas informações em suas ferramentas operacionais existentes, como painéis do Grafana.
Links relacionados
- Para obter informações sobre modelos de integridade nativos do Azure, consulte a visão geral dos modelos de integridade do Azure Monitor.
- Para implementar investigações de integridade no ASP.NET, consulte Verificações de integridade no ASP.NET Core.
- Para obter informações sobre métricas de monitoramento, consulte Visão geral das métricas do Azure Monitor.
- Para obter informações sobre como usar o Application Insights, consulte Application Insights.
- Para obter considerações de design e recomendações que se aplicam a cargas de trabalho de missão crítica, consulte Cargas de trabalho de missão crítica no Azure.
- Para obter uma experiência prática, consulte Desenhar um modelo de saúde para sua carga de trabalho crítica de missão.