Zephyrnet Logo

Um guia prático para monitoramento e observabilidade de dispositivos IoT

Data:

Um guia prático para monitoramento e observabilidade de dispositivos IoT

do Paciente e a observabilidade são vitais para manter a confiabilidade, a eficiência e a segurança dos dispositivos IoT. Quando bem feitos, eles oferecem uma visão geral em tempo real dos seus sistemas IoT, mas também garantem o acesso aos dados necessários para solucionar problemas históricos. No entanto, quando confrontado com os milhares de diversos dispositivos IoT, alcançar estes objetivos traz muitos desafios.

Devo monitorar ou devo observar?

Primeiro, vamos revisar a terminologia em monitoramento e observabilidade de IoT, já que as palavras “monitoramento” e “observabilidade” são frequentemente usadas de forma intercambiável, apesar de suas diferenças.

Comecemos pelo monitoramento, termo com histórico mais consolidado. Basicamente, o monitoramento visa oferecer insights sobre a saúde e o desempenho de um sistema.

Isso começa reunindo e analisando métricas relevantes. A análise normalmente é apresentada por meio de painéis. No entanto, uma pilha de monitoramento razoável deve ir além da representação visual, avaliando as métricas em tempo real e alertando os usuários sobre quaisquer anomalias ou problemas.

Mas há um problema na abordagem tradicional de monitoramento: ela exige que você saiba o que procurar. Este método pode falhar ao encontrar novos problemas.

É aqui que a observabilidade entra em jogo, pois pode ajudá-lo a lidar com as chamadas incógnitas desconhecidas. Simplificando, um sistema é observável quando você pode responder perguntas sobre seu funcionamento interno apenas a partir de seus resultados. As saídas usuais do software incluem logs, métricas e rastreamentos.

Um sistema com boa observabilidade não só é mais fácil de solucionar problemas, mas também permite detectar uma gama muito mais ampla de problemas. Isso ocorre porque você tem insights muito melhores sobre o sistema, por isso é mais fácil obter respostas às suas perguntas sobre o que realmente está acontecendo.

A observabilidade é especialmente importante no contexto da IoT, onde os sistemas envolvem numerosos dispositivos e módulos. Tentar antecipar todas as combinações potenciais de estados que poderiam levar a problemas é impraticável nesta escala, se não impossível.

Métricas Essenciais e Abordagens de Monitoramento

Vamos explorar os dados que valem a pena rastrear e os instrumentos específicos concebidos para nos ajudar nesta tarefa.

Estamos obtendo os dados?

Não é nenhum segredo que a Internet das Coisas muitas vezes tem mais a ver com dados do que com coisas. É por isso que ficar de olho na transmissão de dados dos seus dispositivos é crucial. Uma plataforma IoT sólida deve acompanhar de perto métricas como frequência de mensagens e volume de dados transmitidos.

No entanto, observar manualmente o tráfego de milhares de dispositivos obviamente não é uma atitude sensata. A necessidade de alerta automático é inquestionável neste caso. O mínimo sobre o qual você deve ser alertado é quando o dispositivo não está enviando nenhum dado, mas você espera que isso aconteça.

No entanto, lembre-se de que os dispositivos IoT geralmente operam em ambientes imprevisíveis, como áreas com conexões de Internet não confiáveis. Portanto, um pequeno intervalo na transmissão de dados nem sempre indica um problema com o dispositivo.

Além disso, é uma prática comum armazenar as mensagens em buffer no seu dispositivo ou em um edge gateway, para que você não perca nenhum dado importante. A questão é que você deve ter muito cuidado para não tornar seus limites muito sensíveis. Caso contrário, você será alertado sobre cada problema na rede, o que inevitavelmente leva à fadiga do alerta, e o alerta perderá seu potencial.

Informações gerais sobre a integridade do dispositivo

O monitoramento da integridade do dispositivo envolve o rastreamento de várias métricas importantes. Você pode pensar em CPU, consumo de memória e tráfego de rede. Ter acesso a essas métricas pode ajudar a identificar problemas de desempenho, detectar bugs de software ou até mesmo revelar ataques externos.

Há muitas maneiras de expor essas métricas. No entanto, a comunidade de engenharia está atualmente cativada pelas capacidades de OpenTelemetria.

Um de seus principais argumentos de venda é a abordagem independente do fornecedor. Ou seja, você pode escolher entre um grande número de back-ends de observabilidade para o armazenamento e a seguinte análise. Isso levou à criação de todos os tipos de ferramentas para trabalhar com ele.

Portanto, não importa qual idioma ou sistema você esteja usando, você estará protegido. Isso é muito útil, especialmente no mundo selvagem da IoT, onde cada dispositivo pode executar seu software exclusivo.

OpenTelemetry oferece suporte a três tipos principais de sinais: métricas, logs e rastreamentos. Na maioria dos casos descritos nesta seção, os dispositivos precisam simplesmente expor diversas métricas relevantes, como o consumo atual de memória.

Em seguida, essas métricas precisam ser transportadas para a nuvem, onde você pode visualizá-las, configurar alertas e assim por diante. Esse caminho já está pavimentado para os casos de uso de IoT com projetos como OpenTelemetry Collector ou Telegraf que podem ajudá-lo a coletar métricas de seus dispositivos IoT.

Outros sinais específicos de domínio

Além das características gerais de envio de dados e utilização de recursos, pode ser necessário rastrear alguns valores específicos do domínio. Isso pode envolver o envio de logs, rastreamentos ou mensagens simples contendo conteúdo específico do aplicativo.

Tanto para logs quanto para rastreamentos, você pode contar com o ecossistema OpenTelemetry mais uma vez. Isso permite analisar logs e traces usando seus back-ends preferidos, como Grafana Loki/Tempo ou a pilha Elastic Observability, sem esforço extra! As mensagens são, por outro lado, a funcionalidade central de toda plataforma IoT razoável. Em outras palavras, essas abordagens devem ser fáceis de implementar na maioria dos cenários.

A simplicidade dos registros

Considere uma máquina colheitadeira autônoma, por exemplo. Você pode querer rastrear suas atividades. Uma maneira simples de fazer isso é enviar um log quando a atividade for iniciada com alguns metadados adicionais.

Você pode fazer a mesma coisa quando a atividade terminar e para outros eventos relevantes. Essencialmente, cada registro de log é apenas um evento estruturado com diversas propriedades necessárias. Abaixo segue exemplo de registro enviado quando a colheitadeira inicia sua sequência de atracação:

Além dos campos primários, como carimbo de data/hora e corpo, a mensagem pode conter atributos adicionais que descrevem o evento com mais detalhes. Esses bits extras podem ser úteis quando você está caçando bugs. Portanto, certifique-se de incluir todas as informações importantes.

Os insights contextuais profundos com rastreamentos

Se quiser insights um pouco mais detalhados, você também pode empregar rastreamento. Um rastreamento corresponde a uma operação lógica de um sistema e é implicitamente definido por seus intervalos. Um intervalo representa uma única unidade de trabalho dessa operação. Ele é definido por seus horários de início e término, atributos e, opcionalmente, um intervalo pai.

Graças às referências parentais, o traço forma um gráfico direcionado que descreve a operação específica e suas sub-rotinas. Além disso, os spans podem conter vários eventos de span que descrevem um evento que aconteceu em um momento específico.

Embora os rastreamentos sejam normalmente associados ao monitoramento de sistemas distribuídos, também é possível usar o rastreamento em dispositivos IoT para ajudá-lo a entender o panorama geral do que está acontecendo no campo. Digamos que você esteja curioso para saber como a colheitadeira autônoma retorna à sua estação de ancoragem.

Veja a figura abaixo, onde o encaixe corresponde ao intervalo raiz de nível superior. Primeiro, o harvester precisa localizar a estação de acoplamento, para então chamar uma API. Esta operação corresponde a um intervalo filho. Um exemplo de evento de extensão pode ser o momento em que a colhedora saiu do campo. Ao usar todos os instrumentos de rastreamento juntos, você pode ver o quadro completo da operação do dispositivo.

De volta ao básico com mensagens simples

Em certos cenários, enviar mensagens estruturadas simples pode ser mais prático do que usar sinais OpenTelemetry. Voltando ao exemplo da colheitadeira autônoma, você provavelmente desejaria rastrear sua localização.

Se você quiser visualizar a localização em tempo real, o OpenTelemetry atualmente não oferece suporte a um sinal que se encaixe semanticamente nesse cenário. A correspondência mais próxima provavelmente seria a API de eventos, que ainda está em fase experimental (no momento em que este artigo foi escrito, no primeiro trimestre de 1). Em vez disso, considere enviar a seguinte mensagem JSON:

Idealmente, a plataforma IoT que você está usando deve ser capaz de analisar essas mensagens e ingeri-las no banco de dados adequado de sua escolha. A partir daí, você fica livre para analisar e visualizar os dados de acordo com suas necessidades.

Recriamos este exemplo com a plataforma Spotflow IoT para demonstrar a simplicidade. Montamos um dispositivo que envia periodicamente mensagens com sua localização e velocidade para a plataforma. Em seguida, roteamos o fluxo de dados para nosso coletor de saída Grafana integrado. E é isso! A plataforma agora pega todas as mensagens e as coloca em um banco de dados de série temporal que pode ser consultado no Grafana.

Além disso, este é um ótimo caso de uso para a visualização do Grafana Geomap. Ele permite que você plote facilmente a localização de seus dispositivos. Veja a imagem abaixo, onde utilizamos o Grafana para visualizar os dados recebidos do dispositivo.

Principais lições

E é isso! Agora você está pronto para configurar sua pilha de observabilidade e começar a monitorar seus dispositivos IoT. Gostaríamos que este artigo servisse como ponto de partida no mundo da observabilidade da IoT. Lembre-se das seguintes ideias-chave:

  • Monitore a transmissão de dados: fique atento à transmissão de dados dos seus dispositivos e esteja preparado com alertas para detectar quaisquer interrupções imediatamente.
  • Rastrear métricas de integridade do dispositivo: exibe métricas relevantes sobre a integridade do seu dispositivo para garantir operações tranquilas.
  • Envie dados específicos do aplicativo por meio de logs, rastreamentos e mensagens estruturadas: Pense no seu domínio e no funcionamento do dispositivo e envie todos os dados que possam ser necessários para depuração futura e monitoramento em tempo real.
  • Explore o ecossistema OpenTelemetry: considere usar o ecossistema OpenTelemetry na IoT, pois ele se torna um padrão de observabilidade, oferecendo muitas opções para back-ends de observabilidade e servindo vários tempos de execução de dispositivos.
local_img

Inteligência mais recente

local_img