??? Jaeger v2 está chegando! Leia a postagem do blog e experimente.
gráfico TD
SDK["OpenTelemetry SDK"] --> |HTTP ou gRPC| COLETOR
COLETOR["Colecionador Jaeger"] --> LOJA[Armazenamento]
COLETOR --> |gRPC| PLUGIN[Plugin de armazenamento]
COLETOR --> |gRPC/amostragem| SDK
PLUGIN -> LOJA
QUERY[Serviço de Consulta Jaeger] --> LOJA
CONSULTA --> |gRPC| PLUG-IN
IU[IU Jaeger] --> |HTTP| CONSULTA
subgrafo Host do Aplicativo
subgrafo Aplicativo de usuário
SDK
fim
fim
Jaeger, inspirado em Dapper e OpenZipkin, é uma plataforma de rastreamento distribuída criada pela Uber Technologies e doada à Cloud Native Computing Foundation. Pode ser usado para monitorar sistemas distribuídos baseados em microsserviços:
Veja também:
Jaeger é hospedado pela Cloud Native Computing Foundation (CNCF) como o 7º projeto de nível superior (formado em outubro de 2019). Se você é uma empresa que deseja ajudar a moldar a evolução de tecnologias empacotadas em contêineres, programadas dinamicamente e orientadas a microsserviços, considere ingressar na CNCF. Para obter detalhes sobre quem está envolvido e como Jaeger desempenha um papel, leia o anúncio de incubação da CNCF Jaeger e o anúncio de formatura de Jaeger.
Jaeger é um projeto de código aberto com governança aberta. Agradecemos contribuições da comunidade e adoraríamos sua ajuda para melhorar e ampliar o projeto. Aqui estão algumas idéias sobre como se envolver. Muitos deles nem requerem qualquer codificação.
O back-end do Jaeger foi projetado para não ter pontos únicos de falha e ser dimensionado de acordo com as necessidades do negócio. Por exemplo, qualquer instalação Jaeger na Uber normalmente processa vários bilhões de períodos por dia.
Os projetos Jaeger e OpenTelemetry têm objetivos diferentes. OpenTelemetry tem como objetivo fornecer APIs e SDKs em vários idiomas para permitir que aplicativos exportem vários dados de telemetria fora do processo, para qualquer número de métricas e back-ends de rastreamento. O projeto Jaeger é principalmente o back-end de rastreamento que recebe dados de telemetria de rastreamento e fornece processamento, agregação, mineração de dados e visualizações desses dados. Para obter mais informações, consulte uma postagem no blog Jaeger e OpenTelemetry.
Jaeger foi originalmente projetado para suportar o padrão OpenTracing. A terminologia ainda é usada na UI Jaeger, mas os conceitos têm mapeamento direto para o modelo de dados de rastreamentos OpenTelemetry.
Capacidade | Conceito OpenTracing | Conceito OpenTelemetry |
---|---|---|
Representar traços como gráficos acíclicos direcionados (não apenas árvores) | referências de extensão | links de extensão |
Atributos de span fortemente digitados | tags de extensão | atributos de extensão |
Eventos/logs fortemente digitados | registros de extensão | eventos de extensão |
O projeto Jaeger recomenda SDKs OpenTelemetry para instrumentação, em vez dos SDKs Jaeger agora obsoletos.
O Jaeger pode ser usado com um número crescente de back-ends de armazenamento:
Jaeger Web UI é implementado em Javascript usando estruturas populares de código aberto como React. Várias melhorias de desempenho foram lançadas na v1.0 para permitir que a UI lide eficientemente com grandes volumes de dados e exiba rastreamentos com dezenas de milhares de intervalos (por exemplo, tentamos um rastreamento com 80.000 intervalos).
O backend Jaeger é distribuído como uma coleção de imagens Docker. Os binários suportam vários métodos de configuração, incluindo opções de linha de comando, variáveis de ambiente e arquivos de configuração em vários formatos (yaml, toml, etc.).
A maneira recomendada de implantar o Jaeger em um cluster Kubernetes de produção é por meio do Operador Jaeger.
O Operador Jaeger fornece uma CLI para gerar manifestos do Kubernetes a partir do Jaeger CR. Isso pode ser considerado uma fonte alternativa aos arquivos de manifesto simples do Kubernetes.
O ecossistema Jaeger também fornece um gráfico Helm como uma forma alternativa de implantar o Jaeger.
Todos os componentes de backend do Jaeger expõem métricas do Prometheus por padrão (outros backends de métricas também são suportados). Os logs são gravados de acordo com o padrão usando a biblioteca de log estruturado zap.
Auditorias de segurança de terceiros da Jaeger estão disponíveis em https://github.com/jaegertracing/security-audits. Consulte a edição nº 1718 para obter o resumo dos mecanismos de segurança disponíveis no Jaeger.
Embora recomendemos a instrumentação de aplicativos com OpenTelemetry, se sua organização já investiu na instrumentação usando bibliotecas Zipkin, você não precisa reescrever todo esse código. Jaeger fornece compatibilidade retroativa com Zipkin aceitando spans em formatos Zipkin (Thrift ou JSON v1/v2) sobre HTTP. Mudar do backend Zipkin é apenas uma questão de rotear o tráfego das bibliotecas Zipkin para o backend Jaeger.
Ocasionalmente, os sinalizadores CLI podem ser descontinuados devido, por exemplo, a melhorias de usabilidade ou novas funcionalidades. Em tais situações, os desenvolvedores que introduzem a suspensão de uso são obrigados a seguir estas diretrizes.
Resumindo, para um sinalizador CLI obsoleto, você deve esperar ver a seguinte mensagem na documentação --help
:
(deprecated, will be removed after yyyy-mm-dd or in release vX.Y.Z, whichever is later)
Um período de carência de pelo menos 3 meses ou duas alterações de versão secundária (o que ocorrer mais tarde) a partir da primeira versão contendo o aviso de descontinuação será fornecido antes que o sinalizador CLI obsoleto possa ser excluído.
Por exemplo, considere um cenário em que a v1.28.0 é lançada em 01 de junho de 2021 contendo um aviso de descontinuação para um sinalizador CLI. Este sinalizador permanecerá em um estado obsoleto até 01 de setembro de 2021 ou v1.30.0, onde poderá ser removido em ou após qualquer um desses eventos. Ele pode permanecer obsoleto por mais tempo do que o período de carência mencionado acima.
O projeto Jaeger tenta rastrear as versões atualmente suportadas do Go, conforme definido pela equipe Go. A remoção do suporte para uma versão Go sem suporte não é considerada uma alteração significativa.
A partir do lançamento do Go 1.21, o suporte para versões Go será atualizado da seguinte forma:
N
do Go, serão feitas atualizações nas etapas de construção e testes para acomodar a versão secundária mais recente do Go.N
do Go, o suporte para a versão N-2
do Go será removido e a versão N-1
se tornará a versão mínima necessária. O projeto Jaeger recomenda SDKs OpenTelemetry para instrumentação, em vez dos SDKs nativos de Jaeger que agora estão obsoletos.
Consulte CONTRIBUINDO.
Consulte CONTRIBUINDO.
Obrigado a todas as pessoas que já contribuíram!
As regras para se tornar um mantenedor estão definidas no documento GOVERNANCE. Abaixo estão os mantenedores oficiais do projeto Jaeger. Use @jaegertracing/jaeger-maintainers
para marcá-los em problemas/RPs.
Alguns repositórios sob jaegertracing org possuem mantenedores adicionais.
Somos gratos aos nossos antigos mantenedores por suas contribuições ao projeto Jaeger.
Os mantenedores e colaboradores do Jaeger se reúnem regularmente em videochamadas. Todos são bem-vindos, incluindo usuários finais. Para obter detalhes da reunião, consulte https://www.jaegertracing.io/get-in-touch/.
Consulte https://www.jaegertracing.io/docs/roadmap/
Tem dúvidas, sugestões, relatórios de bugs? Alcance a comunidade do projeto por meio destes canais:
#jaeger
(preciso entrar no CNCF Slack pela primeira vez)jaeger-tracing
Jaeger como produto consiste em vários componentes. Queremos oferecer suporte a diferentes tipos de usuários, estejam eles usando apenas nossas bibliotecas de instrumentação ou a instalação completa do Jaeger, seja ele executado em produção ou usado para solucionar problemas no desenvolvimento.
Consulte ADOPTERS.md para algumas das organizações que usam Jaeger hoje. Se você gostaria de adicionar sua organização à lista, por favor comente sobre o nosso problema de pesquisa.
Direitos autorais (c) Os Autores Jaeger. Licença Apache 2.0.