Voltar ao blog Security and Reliability

Consegue seguir uma ação falhada em toda a sua stack de aplicações autoalojadas? Uma lista de verificação para correlacionar registos

Uma lista de sugestões operacionais para investigar uma ação falhada entre componentes: delimite o percurso, escolha um identificador e teste o que os registos permitem realmente reconstruir.

Um programador segue um identificador nos registos do proxy, da aplicação, do trabalhador e da base de dados

Mapeie a ação antes de pesquisar os registos

Comece por uma falha visível para o utilizador e esboce o percurso que o trabalho poderá seguir. Um mapa de investigação possível inclui o proxy inverso, a aplicação, um trabalhador em segundo plano, a base de dados e quaisquer dependências externas envolvidas. Trate-o como uma hipótese: uma determinada aplicação poderá usar apenas alguns destes componentes ou tratar o trabalho de outra forma.

As verificações deste artigo são sugestões operacionais, não requisitos universais nem recomendações atribuídas a um fornecedor. Adapte-as aos componentes e às ferramentas que utiliza. Para delimitar a pesquisa, anote que evento espera encontrar em cada etapa e onde pode consultar os registos.

  • Anote a ação, a hora aproximada e o resultado esperado.
  • Liste os componentes que poderão tratá-la, incluindo qualquer trabalhador assíncrono.
  • Registe onde pode consultar os registos de cada componente e que campos permitem pesquisar.
  • Assinale os componentes cujos registos não estão acessíveis para esta investigação.
Mapeie a ação antes de pesquisar os registos

Escolha um identificador e verifique o que é registado

Como procedimento de investigação, pode escolher um ID de pedido ou de correlação como valor comum a procurar nos eventos relacionados. Não assuma que todos os serviços o aceitam, propagam ou registam: verifique a configuração e os registos efetivos de cada componente.

Se um pedido recebido já tiver um identificador, decida como o tratar de acordo com a configuração da aplicação. Não considere um valor fornecido pelo cliente prova fiável sem verificar como é processado. O teste prático é observar se o valor escolhido aparece nos registos relevantes.

  • Escolha um nome e um formato de campo que os componentes envolvidos possam registar.
  • Verifique primeiro o proxy e a aplicação e, depois, cada componente a jusante.
  • Se um componente não registar esse identificador, anote outros campos disponíveis que possam ajudar a delimitar a pesquisa.
  • Como precaução operacional, não use credenciais, tokens ou informações pessoais como identificador.
Escolha um identificador e verifique o que é registado

Verifique separadamente as tarefas em fila

Uma ação do utilizador pode estar associada a trabalho em fila. Para investigar esse percurso, verifique se os registos mostram a colocação da tarefa na fila e o resultado observado pelo trabalhador. O comportamento e os nomes dos campos dependem da aplicação e da configuração utilizadas.

Se o sistema de tarefas usar um identificador próprio, uma opção operacional é registar a relação entre esse identificador e o ID de pedido ou de correlação escolhido. Confirme nos registos se essa ligação existe; não a dê por garantida.

  • Procure um evento de colocação na fila e anote os identificadores aí disponíveis.
  • Verifique se os registos do trabalhador permitem encontrar o início e o resultado da tarefa.
  • Se não encontrar uma ligação entre a ação e a tarefa, registe essa lacuna na investigação.
  • Distinga, com base nos registos disponíveis, uma tarefa sem evento de colocação na fila de uma tarefa colocada na fila cujo resultado não encontrou.

Compare marcas temporais e campos com cuidado

Como sugestão de investigação, compare as marcas temporais e os campos apresentados pelos componentes. Verifique o fuso horário indicado e se as marcas temporais incluem essa informação. Se os eventos parecerem fora de ordem, trate-o como um ponto a investigar, em vez de assumir que a ordem apresentada demonstra a sequência real.

A documentação da Datadog recomenda que, antes de correlacionar registos com rastos, estes estejam em formato JSON ou sejam analisados pelo processador de registos adequado ao nível da linguagem. Consulte a fonte: [Correlate Logs and Traces — Datadog](https://docs.datadoghq.com/tracing/other_telemetry/connect_logs_and_traces/). Esta recomendação refere-se à correlação com rastos; para uma pesquisa baseada apenas em registos, confirme o que as suas próprias ferramentas conseguem identificar.

  • Observe que campos estão disponíveis, como marca temporal, serviço, gravidade, mensagem e identificador.
  • Verifique se o visualizador de registos identifica os campos que pretende pesquisar.
  • Prefira um nome de campo estável para o identificador nos componentes em que pode configurar os registos.
  • Não assuma que um valor em texto não estruturado pode ser pesquisado como um campo.

Faça um teste controlado antes de depender do rasto

Uma forma prática de avaliar a sua pesquisa é executá-la com uma ação de baixo risco cujo resultado consiga observar. Escolha um identificador conhecido e compare os registos dos componentes envolvidos. Evite um teste que possa afetar dados importantes ou operações comerciais.

Avalie se os registos permitem reconstruir uma sequência útil: onde a ação aparece, que componentes a registam e onde o resultado se torna visível. Se a sequência terminar, anote a passagem em falta e considere se pode obter mais informação através da configuração disponível.

  • Escolha uma ação de teste e um resultado observável que não ponham em risco operações importantes.
  • Pesquise pelo identificador escolhido e compare os eventos encontrados.
  • Registe os componentes ou as transições para os quais não encontrou eventos.
  • Anote marcas temporais ambíguas e campos que as ferramentas não permitiram pesquisar.

Limite os dados usados na investigação

Como precaução operacional, reveja os campos que os registos expõem antes de alargar a recolha ou partilhar o acesso. Evite incluir credenciais, tokens de acesso ou dados pessoais que não sejam necessários para a investigação.

Considere quem precisa de consultar os registos e durante quanto tempo pretende mantê-los, tendo em conta as necessidades e os requisitos aplicáveis à sua situação. Este artigo não estabelece políticas de acesso ou retenção para um produto ou fornecedor específico.

  • Inspecione exemplos de registos antes de alterar a recolha ou o acesso.
  • Pondere limitar o acesso às pessoas que precisam dos registos para as tarefas em causa.
  • Defina deliberadamente um período de retenção adequado às suas necessidades.
  • Volte a rever os campos dos registos depois de alterações à aplicação ou à configuração.

Defina o que pretende que os registos demonstrem

Um identificador comum pode ajudar a encontrar eventos relacionados, mas, por si só, não demonstra todas as etapas de uma ação. Ao documentar uma investigação, indique quais os componentes cujos registos consultou e quais as ligações que não conseguiu confirmar.

Como escolha de governação, pode distinguir os registos consultados para investigar o comportamento do sistema dos registos que a sua organização possa necessitar para responsabilização ou auditoria. Determine separadamente que fontes são adequadas aos seus objetivos; a lista de verificação não estabelece requisitos para esse efeito.

  • Descreva as conclusões com base nos eventos que conseguiu consultar.
  • Registe as lacunas de cobertura ou as ligações que não conseguiu verificar.
  • Se precisar de evidência para responsabilização ou auditoria, avalie separadamente que registos são adequados a esse objetivo.

Perguntas frequentes

É obrigatório usar rastreio distribuído para seguir esta lista?

Não. A lista descreve uma investigação baseada nos registos que consegue consultar e num identificador, quando os componentes o disponibilizam. Não pressupõe que os serviços suportem rastreio distribuído.

Os registos têm de estar em formato JSON?

A documentação da Datadog recomenda JSON ou análise pelo processador de registos adequado ao nível da linguagem para correlacionar registos com rastos. Isso não estabelece um requisito universal para qualquer pesquisa de registos. Consulte a documentação em https://docs.datadoghq.com/tracing/other_telemetry/connect_logs_and_traces/ e confirme o que as suas ferramentas conseguem analisar.

Como sei se os registos são suficientes para uma necessidade de auditoria?

Esta lista não determina que evidência é suficiente para fins de auditoria ou responsabilização. Identifique esses objetivos separadamente e avalie que registos são apropriados à sua aplicação e aos requisitos aplicáveis.

Fontes e leituras adicionais

  1. Correlate Logs and Traces — Datadog
  2. Application logs and agent traces in one view — Braintrust