Os detectores são tarefas individuais de detecção de anomalias que podem ser configuradas para rodar simultaneamente, analisando dados provenientes de diferentes fontes. Cada detector é configurado de forma independente, permitindo flexibilidade e escalabilidade ao lidar com grandes volumes de dados em tempo real ou em análises históricas.
A criação de um detector começa com a seleção da opção "Criar Detector". Após isso, você deverá inserir os detalhes básicos do detector, como o nome e uma breve descrição que defina claramente o propósito do detector. A próxima etapa consiste em especificar a fonte de dados, onde você deve selecionar o índice desejado para servir como origem para a análise. O timestamp, ou carimbo de data e hora, é uma parte crucial dessa configuração, pois permite que o detector sincronize os dados corretamente. É necessário selecionar o campo de timestamp dentro do índice para garantir a precisão temporal dos dados coletados.
Uma vez configurados os dados de origem e timestamp, o próximo passo é definir as configurações do trabalho do detector, principalmente o intervalo de tempo durante o qual os dados serão agregados. Este intervalo de coleta de dados tem um impacto direto na precisão do modelo de detecção de anomalias, sendo que intervalos mais curtos podem levar a resultados mais rápidos, mas também a uma maior probabilidade de falsos positivos. Para mitigar isso, o método de singling, que utiliza pontos de dados consecutivos, pode ser aplicado, gerando amostras para alimentar o modelo. Contudo, é importante lembrar que esse processo exige uma quantidade suficiente de pontos de dados consecutivos para gerar amostras precisas.
Outro aspecto importante da configuração do detector é o tempo de latência da janela de dados. Em muitos cenários, os dados não são ingeridos em tempo real, o que pode causar um atraso entre a coleta e o processamento dos dados. Ao configurar o tempo de latência da janela, você permite que o detector ajuste o intervalo de coleta para garantir que todos os dados relevantes sejam capturados, compensando eventuais atrasos na ingestão dos dados.
Além disso, é possível especificar um índice de resultados customizado onde os resultados de detecção de anomalias serão armazenados. Para isso, basta adicionar o prefixo "opensearch-ad-plugin-result-" ao nome do índice que você escolher, garantindo que os resultados da detecção sejam organizados de maneira eficiente para análise posterior.
No que diz respeito ao modelo de detecção, um dos primeiros passos é adicionar uma ou mais características ao detector. As características são campos dentro do índice que o detector deve monitorar em busca de anomalias. Para cada característica, você deve definir um método de agregação como média, soma, mínimo ou máximo, dependendo do que deseja analisar. Caso o modelo envolva várias características, ele relacionará as anomalias entre essas variáveis, mas é preciso ter em mente que a performance do modelo pode diminuir à medida que o número de características aumenta. Esse processo geralmente exige ajustes iterativos, pois mais características podem levar a uma precisão reduzida ou maior chance de falsos positivos.
Uma recomendação fundamental ao lidar com grandes volumes de dados é configurar campos de categoria para dados de alta cardinalidade, como endereços IP ou códigos de produto. Estes campos ajudam a segmentar os dados, permitindo uma análise mais detalhada dentro de cada entidade ou categoria, facilitando a identificação e depuração de problemas.
Além disso, ao configurar o detector, é importante considerar o número de entidades únicas que serão suportadas pelo cluster. Isso pode ser calculado utilizando a fórmula específica para estimar o número máximo de entidades com base no número de nós de dados e o tamanho da memória disponível no cluster. Caso o número real de entidades seja maior que o estimado, o detector tentará modelar as entidades mais frequentes ou recentes, priorizando aquelas com maior ocorrência no conjunto de dados.
Um fator crítico na análise de anomalias é o tamanho da janela de agregação, que determina o número de intervalos de dados a serem considerados durante o processo de detecção. Essa configuração deve ser ajustada conforme a natureza do seu conjunto de dados, pois diferentes tamanhos de janelas podem gerar resultados mais precisos dependendo do seu caso de uso específico.
Ao configurar as características e realizar a detecção de anomalias, é recomendável utilizar amostras de dados para prever os resultados de anomalias antes de realizar a detecção em tempo real. A amostra de dados, que é composta por um pequeno número de pontos de dados, ajuda a ajustar as configurações e a garantir que o modelo esteja operando corretamente. Caso os resultados não correspondam às expectativas, ajustes no intervalo do detector ou nas configurações de agregação podem ser necessários.
Após a configuração, o detector pode ser iniciado para buscar anomalias em tempo real ou em uma análise histórica. A análise em tempo real permite detectar problemas à medida que os dados são ingeridos, enquanto a análise histórica possibilita a identificação de padrões ou anomalias em períodos mais longos, como semanas ou meses. Realizar uma análise histórica inicial é altamente recomendado, pois ela permite testar diferentes conjuntos de características e ajustar o modelo de forma mais controlada antes de entrar em produção com o detector em tempo real.
Por fim, ao analisar os resultados da detecção de anomalias, deve-se observar o tempo de inicialização e o número de pontos de dados que foram processados. Se o detector estiver em estado de "inicialização" por mais de um dia, uma agregação dos dados existentes pode ser necessária para verificar se há pontos de dados ausentes. Caso o modelo tenha sido configurado corretamente, você verá a correlação entre as anomalias detectadas e os valores previstos, além de gráficos de calor e de linhas que exibem as ocorrências de anomalias em diferentes pontos no tempo.
No processo de configuração e análise, é importante lembrar que a escolha do intervalo de detecção, o número de características, e a forma como as entidades são modeladas têm grande impacto na qualidade e precisão da detecção de anomalias. Esses ajustes devem ser feitos com cuidado, pois, dependendo da configuração, o modelo pode apresentar falsos positivos ou negativos, comprometendo a eficácia da análise.
Como Gerenciar a Complexidade da Observabilidade Comercial com OpenTelemetry e Agentes de Instrumentação
Os dados de rastreamento são gerados na pasta build/native/agent-output. Para configurar o registro de depuração interna do agente, é necessário ativar a seguinte opção: -Dotel.javaagent.debug=true. Contudo, deve-se ter cautela ao habilitar o log de depuração, pois ele impacta negativamente o desempenho da aplicação.
A observabilidade comercial apresenta uma série de benefícios e desafios próprios, sendo a compreensão de suas limitações e vantagens crucial para sua implementação eficaz. Um dos pontos mais relevantes é a compatibilidade com pacotes específicos. Em alguns casos, a observabilidade comercial oferece suporte para servidores EAI e mainframes CICS, como TIBCO e webMethods. No entanto, a lógica interna do rastreamento é desenhada de forma que não haja interrupções significativas na geração dos resultados, o que a torna vantajosa em alguns cenários.
Dentro da observabilidade, o agente desempenha um papel central, tanto em implementações comerciais quanto nas realizadas com OpenTelemetry. A principal função desses agentes é instrumentar os rastreamentos, mas também é importante compreender como depurá-los e solucionar problemas, uma vez que cada agente possui uma estrutura interna que pode gerar dificuldades no rastreamento e na propagação dos dados.
Para garantir que o rastreamento de ponta a ponta (E2E) seja eficaz, é recomendado que se ative o log para capturar uma série de identificadores importantes. Entre eles estão: trace_id, span_id, dt.trace_id, dt_span_id, thread id, thread name, traceparent, tracestate, x-dynatrace, dtd, entre outros. A presença de valores anômalos nesses identificadores, como trace IDs incorretos ou ausentes, facilita a localização de seções problemáticas no log.
Historicamente, a observabilidade comercial implementou seus próprios cabeçalhos e métodos de propagação antes da popularização do OpenTelemetry. Atualmente, muitos agentes de observabilidade comercial podem associar seus próprios cabeçalhos aos cabeçalhos do OpenTelemetry, fundindo spans instrumentados por diversos agentes. Essa fusão, no entanto, pode gerar o que é conhecido como "caos de agentes", situação onde múltiplos agentes de rastreamento causam confusão ao interagir entre si.
Ao trabalhar com diferentes agentes de rastreamento, como o Micrometer, OpenTelemetry e observabilidade comercial, três cenários podem surgir:
-
O agente de observabilidade comercial gera o traceparent e o x-headers, propagando-os corretamente.
-
Quando o Micrometer é utilizado juntamente com o agente comercial, os traceparent e x-headers podem não coincidir, o que gera um erro de rastreamento.
-
Se OpenTelemetry, Micrometer e o agente comercial forem usados ao mesmo tempo, os traceparent e x-headers também tendem a ser diferentes, aumentando a complexidade da análise.
Esses cenários revelam o potencial para falhas no processo de propagação do rastreamento, seja no OpenTelemetry ou na observabilidade comercial. Em alguns casos, o rastreamento será bem-sucedido com a observabilidade comercial, mas falhará com o OpenTelemetry, e vice-versa. A solução para esses conflitos pode exigir depuração detalhada, e um entendimento mais profundo de como cada agente se comporta em diferentes situações.
Quando a propagação de rastreamento falha ou é imprecisa, é importante que as equipes de SRE (Site Reliability Engineering) tenham um conjunto de diretrizes claras. Elas devem ser capazes de explicar o comportamento interno dos agentes e colaborar com os desenvolvedores para encontrar soluções que minimizem o tempo e os esforços gastos na resolução de problemas. Isso é fundamental, especialmente quando se investe grandes quantias em soluções de observabilidade comercial, mas os resultados não são satisfatórios.
Com o avanço da automação na observabilidade comercial, ferramentas como o Dynatrace oferecem uma variedade de recursos para melhorar a coleta e análise de dados de rastreamento. Agentes comerciais utilizam sensores para gerar spans, mas há desafios na instrumentação correta de consumidores de servidores, clientes e produtores internos. Em alguns casos, a ordem, a estrutura e o relacionamento dos spans podem ser exibidos de forma errada. Por exemplo, ao fazer requisições REST, a ordem dos spans pode ser exibida corretamente, mas ao trabalhar com GraphQL, essa ordem pode estar invertida, ou até o ID do span pai pode ser incorreto.
A observabilidade comercial também permite a definição da ordem e do papel dos spans, garantindo maior controle sobre o fluxo de dados. Outras funcionalidades, como a definição de tracestate para melhorar a interoperabilidade entre diferentes sistemas de rastreamento, também são importantes. Além disso, é possível adicionar métodos e parâmetros Java aos spans, o que facilita a identificação e a pesquisa de spans, similar ao que o OpenTelemetry faz com os atributos do span.
A automação também permite a captura de eventos de rastreamento, incluindo o cabeçalho e o corpo das mensagens, que podem ser analisadas para maior detalhamento. Com a ativação de funções como a injeção e extração de contextos de rastreamento nos cabeçalhos, a integração entre o OpenTelemetry e a observabilidade comercial torna-se mais eficiente. No entanto, ao tentar combinar traces instrumentados por diferentes agentes, como o OpenTelemetry e a observabilidade comercial, problemas de propagação podem surgir.
Para lidar com isso, a solução pode ser a integração de funcionalidades como o tracestate, mas em muitos casos, o que se torna necessário é o desenvolvimento de instrumentação manual ou automatizada usando o SDK da observabilidade comercial. Essa abordagem ajuda a melhorar a precisão dos rastreamentos de ponta a ponta, garantindo que os IDs de rastreamento se alinhem corretamente entre os agentes e que os traces sejam propagados de maneira coesa.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский