Ferramentas e SDKs

O que é o OpenTracing e por que ele é importante

Já discutimos anteriormente por que a observabilidade do sistema é importante em sistemas distribuídos e os desafios que ela pode ajudar a superar - se você não viu, pode ver Matt Ingenthron's Introdução ao O problema aquiA seguir, discutiremos por que a equipe do Couchbase SDK escolheu OpenTracing como sua API de rastreamento e por que achamos que isso é importante. Também abordaremos uma breve introdução aos SDKs ThresholdLoggingTracer com o SDK do .NET (no OpenTracing, o .NET é usado como veículo para demonstrar o rastreador; funcionalidade semelhante estará disponível em cada um dos SDKs).

Por que o OpenTracing?

OpenTracing é uma API padronizada que descreve como estruturar as informações de rastreamento em um ambiente de sistema distribuído e como as solicitações podem ultrapassar os limites do processo. O OpenTracing nos permite separar os dados que estão sendo coletados do mecanismo que coleta e faz algo com esses dados. Outra grande vantagem para nós é que o OpenTracing é independente de fornecedor, o que significa que podemos oferecer o máximo de flexibilidade para usar uma implementação de rastreamento distribuído personalizada ou de terceiros sem precisar aderir a um protocolo de rede prescrito ou a uma estrutura de dados em trânsito.

No Couchbase, a observabilidade e a integração do OpenTracing são importantes para nós. Sabemos que fazemos parte de uma solução maior para o cliente e queremos ajudar a informar a visão do que está acontecendo com os elementos que conhecemos. Para os SDKs do Couchbase, definimos uma coleção de etapas que descrevem a jornada de uma solicitação (Get, Upsert etc.) desde o envio até o momento em que a resposta está pronta. No mundo do OpenTracing, essas etapas são chamadas de **Span**s e têm informações de tempo (início/fim). Os spans também podem ser "marcados" com informações adicionais, como IDs, nomes de endpoints, detalhes da rede etc. Todas essas informações são úteis para ajudar a obter um instantâneo do que estava acontecendo no momento.

Cada um dos SDKs define os seguintes intervalos para uma solicitação:

Etapa Descrição
solicitar codificação Transcodifique o conteúdo do documento de um objeto nativo para uma string JSON
envio para o servidor Enviar a solicitação pela rede e aguardar uma resposta
decodificação de respostas Transcodifique o conteúdo do documento de resposta de uma cadeia de caracteres JSON para um objeto nativo

OBSERVAÇÃO: a codificação da solicitação e a decodificação da resposta são necessárias apenas para algumas operações; por exemplo, o Get omitiria a "codificação da solicitação".*

Além de todo o trabalho específico do SDK, o servidor Couchbase foi aprimorado para retornar a duração da operação como parte das respostas KV para corresponder a outros serviços, como N1QL, FTS e Analytics. Isso é codificado diretamente no pacote de resposta e será analisado usando o SDK durante o processamento. Isso ajuda a determinar se um tempo excepcionalmente longo foi gasto no atendimento de uma operação e pode ser usado para ajudar a identificar a causa de uma operação lenta (por exemplo, leitura de disco).

Em seguida, a API OpenTracing descreve um Tracer como algo que cria e coleta Spans e faz algo com eles. Os SDKs do Couchbase fornecem uma implementação do Tracer pronta para uso, chamada ThresholdLoggingTracer (veja abaixo). Esse é um rastreador modesto e pronto para uso que agrega solicitações que excedem um limite específico de serviço e as grava em um registro em um determinado intervalo, incluindo um número total e uma pequena amostra dos piores infratores. Obviamente, o número e os limites podem ser ajustados, pois há uma grande variedade de ambientes em que o Couchbase é implantado.

Um ponto importante a ser mencionado aqui é que os SDKs do Couchbase permitem intencionalmente que a implementação do Tracer seja substituída. Isso nos dá a vantagem de permitir que a implementação do Tracer seja trocada (personalizada ou produto) sem exigir que nenhuma lógica interna seja modificada.

Mais detalhes sobre a especificação do OpenTracing estão disponíveis em aqui.

ThresholdLoggingTracer usando C# .NET

Ok, muita conversa teórica até agora, vamos mostrar isso em ação. A seguir, um exemplo simples da função ThresholdLoggingTracer em ação no SDK do .NET.

Tentamos selecionar padrões sensatos para o ThresholdLoggingTracer para equilibrar a captura de detalhes valiosos com o não envio de spam aos arquivos de registro. Além disso, a partir da próxima versão secundária de cada SDK, tudo isso será ativado por padrão. Isso significa que você terá tudo isso de graça, sem fazer nada a mais!

Um exemplo da saída do registro é semelhante a este (observe que esse formato pode mudar entre DP, beta e GA - queremos feedback!)

No exemplo acima, você pode ver que agrupamos as operações por tipo, por exemplo, "kv", e fornecemos um número total de operações que excederam o limite definido pelo serviço. Há também uma amostra das operações mais lentas que fornece detalhes adicionais. Essas informações podem ser muito valiosas ao tentar diagnosticar um problema. As amostras também incluem a propriedade "server_us", que indica por quanto tempo o servidor estava processando essa operação.

CNCF

Fundação de computação nativa em nuvem (CNCF) é uma comunidade de projetos de software de código aberto criados com contêineres e que fazem parte de um ecossistema de microsserviços desde o início. É um recurso valioso que permite que os projetos colaborem com engenheiros talentosos e ganhem visibilidade enquanto amadurecem. Isso é extremamente importante para projetos pequenos, a fim de garantir que eles recebam suporte e que tenham um trampolim para o mercado.

O OpenTracing foi aceito nesse programa e é um incubação projeto. Isso só ajudará a melhorar sua visibilidade e alcance, o que só pode ser bom para eles e para nós à medida que o projeto amadurece.

Obviamente, como ele ainda está em fase de incubação e o padrão OpenTracing ainda não atingiu a versão 1.0, isso significa que a interface que ofereceremos nos SDKs do Couchbase acompanhará o padrão à medida que ele evoluir. Isso significa que nossa interface será marcada como não comprometido no momento, e isso pode mudar até mesmo entre as micro versões. Nosso objetivo será atualizá-lo para comprometido quando o OpenTracing atingir a versão 1.0.

Próximas etapas

Agora que exploramos os motivos pelos quais o Couchbase escolheu o OpenTracing como nossa API de rastreamento e o que ela nos permitiu oferecer aos nossos usuários, podemos discutir como usar o rastreador pronto para uso e como integrá-lo a outras soluções de rastreamento. Michael Nitschinger vai se aprofundar em Observabilidade do tempo de resposta com o SDK Java do Couchbase e, em seguida, mostrar como fazer a integração com o Jaeger sistema de rastreamento.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Author

Posted by Mike Goldsmith, engenheiro sênior de SDK, Couchbase

Mike Goldsmith é engenheiro sênior de SDK na Couchbase, com ampla experiência em projetos de big data. Recentemente, Mike gostou muito de trabalhar com o Docker.

3 Comentários

  1. Obrigado, Mike, por esse artigo.

    Você mencionou: As amostras também incluem a propriedade "server_us", que indica por quanto tempo o servidor estava processando essa operação.

    Também vejo a propriedade server_duration_us. Você pode me ajudar a entender qual é a diferença entre as duas?

  2. Mike Goldsmith, engenheiro sênior de SDK, Couchbase julho 26, 2019 em 6:39 am

    Isso parece ser um erro no JSON, que agora foi corrigido. Há apenas uma propriedade server_us que representa o tempo necessário para processar a solicitação no servidor.

  3. Obrigado, Mike.

    O recurso de rastreamento semelhante também está incorporado no SDK do C e, em caso afirmativo, ele imprimiria rastreamentos/logs semelhantes?

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.