Observabilidade de aplicativos com Apache Kafka e SigNoz
SigNoz ajuda os desenvolvedores a começarem a atingir suas metas de observabilidade rapidamente e com o mínimo de esforço.
SigNoz é uma plataforma de observabilidade de aplicativos de código aberto. Construído em React and Go, o SigNoz foi escrito desde o início para permitir que os desenvolvedores comecem com seus objetivos de observabilidade o mais rápido possível e com o mínimo de esforço.
Este artigo analisa o software em detalhes, incluindo a arquitetura, a implantação baseada em Kubernetes e alguns usos comuns do SigNoz.
Arquitetura SigNoz
SigNoz une vários componentes para criar um sistema escalonável e fracamente acoplado, fácil de usar. Alguns dos componentes mais importantes são:
- Coletor OpenTelemetry
- Apache Kafka
- Druida Apache
OpenTelemetry Collector é o mecanismo de coleta de dados de rastreamento ou métricas. Isso permite que a SigNoz ingira dados em formatos padrão do setor, incluindo Jaeger, Zipkin e OpenConsensus. Em seguida, os dados coletados são encaminhados ao Apache Kafka.
SigNoz usa Kafka e processadores de fluxo para ingestão em tempo real de grandes volumes de dados de observabilidade. Esses dados são então repassados ao Apache Druid, que é excelente no armazenamento desses dados para análise SQL de curto e longo prazo.
Depois que os dados são nivelados e armazenados no Druid, o serviço de consulta do SigNoz pode consultar e passar os dados para o frontend do SigNoz React. O front-end então cria belos gráficos para os usuários visualizarem os dados de observabilidade.
(Nitish Tiwari, CC BY-SA 4.0)
Instale o SigNoz
Os componentes do SigNoz incluem Apache Kafka e Druid. Esses componentes são fracamente acoplados e funcionam em conjunto para garantir uma experiência perfeita para o usuário final. Considerando todos os componentes, é melhor executar o SigNoz como uma combinação de microsserviços no Kubernetes ou Docker Compose (para testes locais).
Este exemplo usa uma implantação baseada em gráfico do Kubernetes Helm para instalar o SigNoz no Kubernetes. Como pré-requisito, você precisará de um cluster Kubernetes. Se você não tiver um cluster Kubernetes disponível, poderá usar ferramentas como MiniKube ou Kind para criar um cluster de teste em sua máquina local. Observe que a máquina deve ter pelo menos 4 GB disponíveis para que isso funcione.
Depois de ter o cluster disponível e o kubectl configurado para se comunicar com o cluster, execute:
$ git clone https://github.com/SigNoz/signoz.git && cd signoz
$ helm dependency update deploy/kubernetes/platform
$ kubectl create ns platform
$ helm -n platform install signoz deploy/kubernetes/platform
$ kubectl -n platform apply -Rf deploy/kubernetes/jobs
$ kubectl -n platform apply -f deploy/kubernetes/otel-collector
Isso instala o SigNoz e contêineres relacionados no cluster. Para acessar a interface do usuário (IU), execute o comando kubectl port-forward
; por exemplo:
$ kubectl -n platform port-forward svc/signoz-frontend 3000:3000
Agora você deve conseguir acessar o painel do SigNoz usando um navegador local no endereço http://localhost:3000
.
Agora que sua plataforma de observabilidade está pronta, você precisa de um aplicativo que gere dados de observabilidade para visualizar e rastrear. Para este exemplo, você pode usar o HotROD, um aplicativo de exemplo desenvolvido pela equipe Jaegar.
Para instalá-lo, execute:
$ kubectl create ns sample-application
$ kubectl -n sample-application apply -Rf sample-apps/hotrod/
Explore os recursos
Agora você deve ter um aplicativo de amostra com instrumentação adequada instalado e em execução na configuração de demonstração. Consulte o painel do SigNoz para obter métricas e dados de rastreamento. Ao chegar à página inicial do painel, você verá uma lista de todos os aplicativos configurados que estão enviando dados de instrumentação para o SigNoz.
(Nitish Tiwari, CC BY-SA 4.0)
Métricas
Ao clicar em um aplicativo específico, você será direcionado para a página inicial do aplicativo. A página Métricas exibe as informações dos últimos 15 minutos (esse número é configurável), como latência do aplicativo, taxa de transferência média, taxa de erro e os principais endpoints que o aplicativo está acessando. Isso lhe dá uma visão panorâmica do status do aplicativo. Quaisquer picos de erros, latência ou carga são imediatamente visíveis.
(Nitish Tiwari, CC BY-SA 4.0)
Rastreamento
A página Traces lista todas as solicitações em ordem cronológica com detalhes de alto nível. Assim que você identificar uma única solicitação de interesse (por exemplo, algo que está demorando mais do que o esperado para ser concluído), você poderá clicar no rastreamento e observar intervalos individuais para cada ação que aconteceu dentro dessa solicitação. O modo de detalhamento oferece inspeção completa para cada solicitação.
(Nitish Tiwari, CC BY-SA 4.0)
(Nitish Tiwari, CC BY-SA 4.0)
Explorador de uso
A maioria das métricas e dados de rastreamento são muito úteis, mas apenas por um determinado período. Com o passar do tempo, os dados deixam de ser úteis na maioria dos casos. Isto significa que é importante planejar uma duração de retenção adequada para os dados; caso contrário, você pagará mais pelo armazenamento. O Usage Explorer fornece uma visão geral dos dados ingeridos por hora, dia e semana.
(Nitish Tiwari, CC BY-SA 4.0)
Adicionar instrumentação
Até agora, você analisou métricas e rastreamentos do aplicativo HotROD de amostra. Idealmente, você deseja instrumentar seu aplicativo para que ele envie dados de observabilidade ao SigNoz. Faça isso seguindo a Visão Geral da Instrumentação no site da SigNoz.
SigNoz oferece suporte a uma biblioteca de instrumentação independente de fornecedor, OpenTelemetry, como a principal forma de configurar a instrumentação. OpenTelemetry oferece bibliotecas de instrumentação para diversas linguagens com suporte para instrumentação automática e manual.
Saber mais
SigNoz ajuda os desenvolvedores a começar rapidamente com métricas e aplicativos de rastreamento. Para saber mais, você pode consultar a documentação, ingressar na comunidade e acessar o código-fonte no GitHub.