Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 24815|Resposta: 1

[ASP.NET] ASP.NET Core Link Tracing (3) O SkyAPM é baseado na configuração dinâmica do Consul

[Copiar link]
Postado em 2020-11-11 16:13:50 | | | |
Revisar:

ASP.NET Rastreamento de Link Principal (1) Instale o tutorial de Skywalking
https://www.itsvse.com/thread-9456-1-1.html

ASP.NET O rastreamento de links core (2) utiliza integração SkyAPM
https://www.itsvse.com/thread-9458-1-1.html



projeto, você pode usarCônsulouApolloPara fazer o centro de configuração, um tutorial sobre o Consul como um centro de configuração ASP.NET Core:

Arquitetura: ASP.NET Core configura dinamicamente as atualizações quentes com base no Consul
https://www.itsvse.com/thread-9421-1-1.html
Requisitos: Armazenamos as informações de configuração do APM no middleware Consul, para não precisarmos fazer login no servidor para modificar manualmente as informações de configuração no arquivo appsettings.json.

Início do Consul

Inicie o middleware consul primeiro usando o seguinte comando:




Instale plugins relacionados ao Consul ASP.NET Core

No nosso projeto sky-apm-demo, use o Nuget para instalar o middleware Consul como um plugin para ler o centro de configuração com o seguinte comando:

Modifique o método CreateHostBuilder no objeto Program para adicionar a leitura das informações remotas de configuração do Consul, o código é o seguinte:

Enquanto isso, no arquivo appsettings.json, você precisa configurar o endereço consul_url, da seguinte forma:



Adicione nossas informações de configuração ao consul para abrir a plataforma de gerenciamento web:O login do hiperlink está visível.Para criar Sky-APM-Demo/AppSettings. Development.json chave, o valor é o seguinte:



Crie um novo método de controlador test3 para ler as informações da configuração do nosso serviço consul e facilitar o teste, conforme segue:

AcessoO login do hiperlink está visível.Você pode obter a configuração que definimos normalmente, da seguinte forma:



Olhando os registros de skyapm-20201111.log, você verá que o endereço onde o SkyApm acessa o Skywalking não é o que configuramos, masPadrão: localhost:11800, como mostrado na figura abaixo:



2020-11-11 15:32:35.869 +08:00 [My_Service] [Informações] SkyApm.Transport.Grpc.ConnectionManager: Desligar conexão[localhost:11800].
2020-11-11 15:32:45.875 +08:00 [My_Service] [Erro] SkyApm.Transport.Grpc.ConnectionManager: Tempo limite do servidor para conectar.
System.Threading.Tasks.TaskCanceledException: Reached deadline.
   em Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, prazo de Nullable'1)
   em Grpc.Core.Channel.ConnectAsync (prazo de Nullable'1)
   em SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync()
Verificamos o código-fonte SkyAPM.Agent.AspNetCore no GitHub e vemos que, se nosso programa atribuir primeiro as configurações padrão e depois ler o arquivo de configuração appsettings.json skywalking.json skyapm.json sobrescrever os valores padrão anteriores, como mostrado na figura abaixo:



Quanto à configuração, o processo de carregamento é o seguinte:



Então, quando o SkyAPM estabeleceu comunicação com o Skywalking?



O código-fonte SkyAPM possui uma tarefa em segundo plano InstrumentationHostedService, ao registrar o IHostedService,O .NET Core chama os métodos StartAsync() e StopAsync() do tipo IHostedService, respectivamente, durante o início e o fim da aplicação

Você pode consultar para:

Um serviço baseado no .NET Core no Linux
https://www.itsvse.com/thread-9447-1-1.html
O problema agora é que as informações de configuração definidas pelo nosso consul são sobrescritos pelo valor padrão do SkyAPM, e para resolver esse problema, precisamos modificar o código-fonte, baixamos o código-fonte do SkyAPM no GitHub.

Modifique o arquivo ConfigurationFactory da seguinte forma:

Modifique o arquivo ConfigurationBuilderExtensions da seguinte forma:

Para o código-fonte modificado, você pode consultar meu ramo:O login do hiperlink está visível.

Julgamento lógico adicional, quando a configuração SkyAPM já existe, não usa o valor padrão,Regenerarsky-apm-demo e SkyApm.Agent.AspNetCore, copie todos os arquivos da biblioteca modificada \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 para o nosso projeto \bin\Debug\netcoreapp3.1 e os substitua.Atualize seu navegador

Ao olhar os logs do APM, você pode descobrir que as informações de configuração no consul foram lidas com sucesso e a comunicação com o Skywalking foi estabelecida com sucesso, como mostrado na figura abaixo:




(Fim)




Anterior:. .NET MySQL Connector Conflitos DbProviderFactories (.NET MySQL Connector Conflicts DbP...
Próximo:O .NET Core exibe serviços e implementações registrados e seus ciclos de vida
Postado em 2023-6-2 14:24:31 |
Bom adesivo
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com