Como otimizar rapidamente o desempenho e a latência do banco de dados CnosDB: usando o sistema de rastreamento distribuído Jaeger

Em um ambiente de produção formal, o desempenho e a latência do banco de dados são essenciais para garantir a operação estável e eficiente do sistema. Especialmente ao interagir com o banco de dados CnosDB, torna-se importante obter uma compreensão mais profunda do seu desempenho. Neste momento, o sistema de rastreamento distribuído Jaeger desempenha um papel importante. Neste blog, nos aprofundaremos em como rastrear e monitorar o banco de dados CnosDB usando Jaeger para obter uma compreensão mais completa de seu desempenho, latência e possíveis problemas.

Saiba mais sobre Jaeger e CnosDB

Jaeger: Jaeger é um poderoso sistema de rastreamento distribuído de código aberto, compatível com a API OpenTracing e projetado para monitorar e depurar o processo de solicitação na arquitetura de serviço de software. Ao capturar o fluxo de solicitações entre diferentes microsserviços, Jaeger ajuda os desenvolvedores a identificar gargalos de desempenho e possíveis problemas.

CnosDB: CnosDB é um banco de dados de código aberto de alto desempenho comumente usado para armazenar e gerenciar grandes quantidades de dados de série temporal. Em uma arquitetura de microsserviços, o CnosDB geralmente atua como backend para armazenamento e recuperação de dados.

Habilite o suporte Jaeger no CnosDB

Cancele  o comentário de configuração [trace] [https://docs.cnosdb.com/zh/latest/reference/config.html#trace] para ativar a função de rastreamento Jaeger.

| Dica: Para que a configuração tenha efeito, é necessário reiniciar o serviço.

[trace]
  auto_generate_span = false
[trace.log]
  path = '/tmp/cnosdb'
[trace.jaeger]
  jaeger_agent_endpoint = 'http://127.0.0.1:14268/api/traces'
  max_concurrent_exports = 2
  max_queue_size = 4096

Instale e inicie o Jaeger

| Para outros métodos de implantação, consulte  Jaeger Deployment [https://www.jaegertracing.io/docs/deployment/]

docker run -d --name jaeger \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 16686:16686 \
  -p 14268:14268 \
  jaegertracing/all-in-one:latest

Após a inicialização bem-sucedida, use seu navegador para acessar http://127.0.0.1:16686

Rastreie eventos no CnosDB

1. Adicione contexto de extensão à solicitação.

| Você pode definir auto_generate_span = true no arquivo de configuração para gerá-lo automaticamente. Se você precisar analisar uma instrução específica, personalize o valor uber-trace-id na solicitação. O formato é o seguinte (para obter instruções detalhadas sobre o formato, por favor consulte: Formato de propagação [https : //www.jaegertracing.io/docs/1.46/client-libraries/#propagation-format])

uber-trace-id: 3a3a43:432e345:0:1

Exemplo:

| Para a fonte de dados no exemplo, consulte:
https://docs.cnosdb.com/zh/latest/start/quick_start.html

Consulte os dados na tabela aérea no banco de dados oceanic_station, classifique-os em ordem cronológica inversa e retorne os primeiros 5 dados.

curl -i -u "root:" -H "Accept: application/json" -H "uber-trace-id: 3a3a43:432e345:0:1" -XPOST "http://127.0.0.1:8902/api/v1/sql?db=oceanic_station&pretty=true" -d "select * from air order by time desc limit 5;"

Use painéis para análise

 

1. Período de registro:

Quando um aplicativo cliente envia uma consulta ou solicitação de gravação ao banco de dados CnosDB, o CnosDB envia o registro Span resultante para Jaeger. Cada período representa um estágio da solicitação, incluindo tempo de processamento, nome da operação e outras informações relacionadas.

2.Selecione Serviço:

Na caixa suspensa Serviço da interface do usuário Jaeger, selecione o serviço relacionado ao CnosDB (por exemplo: cnosdb_singleton_1001).

3. Encontre rastros:

Na interface, clique no botão “Encontrar Rastros” e o sistema irá recuperar todos os rastros relacionados ao serviço selecionado. Isso exibirá uma série de solicitações e intervalos correspondentes.

4. Analise os detalhes do rastreamento:

Clique no traço de interesse para entrar na visualização detalhada. Nesta visualização você verá todo o processo de solicitação e o tempo de execução de cada span. Essas informações de tempo ajudarão você a entender quanto tempo leva para processar cada etapa da sua consulta.

5. Otimize consultas e sistemas:

Com o registro de tempo detalhado, você pode analisar com precisão o desempenho da consulta. Num ambiente de produção formal, isto se tornará uma ferramenta valiosa para otimizar declarações de consulta e melhorar o desempenho do sistema. Ao analisar o tempo de execução de cada período, você pode encontrar etapas que podem causar atrasos e tomar medidas de otimização direcionadas.

Além disso, Jaeger também pode rastrear outros eventos do CnosDB, como segue:

  1. Componente de consulta
  2. API REST
  3. API Arrow Flight SQL

Conclusão

Ao usar o Jaeger para rastrear o desempenho e a latência do banco de dados CnosDB, podemos obter uma compreensão mais abrangente do desempenho do banco de dados. Ao inserir código instrumentado apropriado em segmentos de código críticos, podemos capturar o fluxo de solicitações e interações de banco de dados, identificar facilmente gargalos de desempenho e resolver possíveis problemas prontamente. A integração do Jaeger e do CnosDB nos permite obter insights mais profundos e melhorar o desempenho geral e a confiabilidade.

Exemplo estendido

Solicitação de API REST

curl -i -u "root:" -H "Accept: application/json" -H "uber-trace-id: 3a3a43:432e345:0:1" -XPOST "http://127.0.0.1:8902/api/v1/sql?db=usage_schema&pretty=true" -d "select * from user_queries order by time desc limit 5;"

curl -i -u "root:" -H "Accept: application/json" -H "uber-trace-id: 3a3a43:432e345:0:1" -XPOST "http://127.0.0.1:8902/api/v1/sql?db=usage_schema&pretty=true" -d "CREATE TABLE air (visibility DOUBLE,temperature DOUBLE,presssure DOUBLE,TAGS(station));"

curl -i -u "root:" -H "Accept: application/json" -H "uber-trace-id: 3a3a43:432e345:0:1"  -XPOST "http://127.0.0.1:8902/api/v1/write?db=public&pretty=true" -d "ma,station=XiaoMaiDao visibility=50,temperature=63,pressure=52"

Usando o Prometheus para leitura e escrita remota

remote_write:
- url: "http://127.0.0.1:8902/api/v1/prom/write?db=prometheus"
 headers:
 uber-trace-id: '3a3a43:432e345:0:1'
 basic_auth:
 username: 'root'
 password: ''
remote_read cnosdb
remote_read:
- url: "http://127.0.0.1:8902/api/v1/prom/read?db=prometheus"
headers:
 uber-trace-id: '3a3a43:432e345:0:1'
basic_auth:
 username: 'root'
 password:

Escreva usando OpenTSDB

curl -i -u "root:" -H "Accept: application/json" -H "uber-trace-id: 3a3a43:432e345:0:1" -XPOST "http://127.0.0.1:8902/api/v1/opentsdb/write?db=public" -d 'opentsdb 1689054412124000000 1 tag1=t1 field1="f1" value1=1'

curl -i -u "root:" -H "Accept: application/json" -H "uber-trace-id: 3a3a43:432e345:0:1" -XPOST "http://127.0.0.1:8902/api/v1/opentsdb/put?db=public" -d '[{"metric":"tsdbput","timestamp": 1689069407572000000,"value": 9,"tags":{"tag1":"t1","tag2":"t2"}}]'

Introdução ao CnosDB

CnosDB é um banco de dados de série temporal distribuído de código aberto, de alto desempenho e fácil de usar, que foi lançado oficialmente e é totalmente de código aberto.

Bem-vindo a seguir o site da nossa comunidade: https://cn.cnosdb.com

Acho que você gosta

Origin blog.csdn.net/CnosDB/article/details/132328184
Recomendado
Clasificación