Recensione:
progetto, puoi usarloConsoleoApolloPer fare il centro di configurazione, un tutorial su Consul come centro di configurazione ASP.NET Core:
Requisiti: Memorizziamo le informazioni di configurazione dell'APM nel middleware Consul, così non dobbiamo accedere al server per modificare manualmente le informazioni di configurazione nel file appsettings.json.
Start Console
Avvia il middleware consul usando prima il seguente comando:
Installa plugin correlati a Consul ASP.NET Core
Nel nostro progetto sky-apm-demo, usa Nuget per installare il middleware Consul come plugin per leggere il centro di configurazione con il seguente comando:
Modifica il metodo CreateHostBuilder nell'oggetto Program per aggiungere la lettura delle informazioni di configurazione remota di Consul, il codice è il seguente:
Nel frattempo, nel file appsettings.json, devi configurare l'indirizzo consul_url come segue:
Aggiungi le nostre informazioni di configurazione a consul per aprire la piattaforma di gestione web:Il login del link ipertestuale è visibile.Per creare sky-apm-demo/appsettings. Development.json chiave, il valore è il seguente:
Crea un nuovo metodo di controller test3 per leggere le informazioni della configurazione del nostro servizio consul e facilitare il test, come segue:
AccessoIl login del link ipertestuale è visibile.Puoi ottenere la configurazione che abbiamo impostato normalmente, come segue:
Guardando i skyapm-20201111.log log, scoprirai che l'indirizzo in cui SkyApm accede a SkyWalking non corrisponde a quello che abbiamo configurato, maPredefinito: localhost:11800, come mostrato nella figura sottostante:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Informazioni] SkyApm.Transport.Grpc.ConnectionManager : Connessione spegnita[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Errore] SkyApm.Transport.Grpc.ConnectionManager: Timeout del server connette.
System.Threading.Tasks.TaskCanceledException: Reached deadline. su Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 deadline) presso Grpc.Core.Channel.ConnectAsync(Nullable'1 deadline) su SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Controlliamo il codice sorgente SkyAPM.Agent.AspNetCore su GitHub e vediamo che se il nostro programma assegna prima le impostazioni predefinite e poi legge il file di configurazione appsettings.json skywalking.json skyapm.json sovrascrivere i valori predefiniti precedenti, come mostrato nella figura sottostante:
Per quanto riguarda la configurazione, il processo di caricamento è il seguente:
Quando ha stabilito la comunicazione SkyAPM con Skywalking?
Il codice sorgente SkyAPM ha un compito di background InstrumentationHostedService, quando si registra IHostedService,.NET Core chiama rispettivamente i metodi StartAsync() e StopAsync() di tipo IHostedService, durante l'avvio e la fermata dell'applicazione。
Puoi fare riferimento a:
Il problema ora è che le informazioni di configurazione impostate dal nostro console vengono sovrascritte dal valore predefinito di SkyAPM, e per risolvere questo problema dobbiamo modificare il codice sorgente, scaricando il codice sorgente SkyAPM su GitHub.
Modifica il file ConfigurationFactory come segue:
Modifica il file ConfigurationBuilderExtensions come segue:
Per il codice sorgente modificato, puoi fare riferimento al mio ramo:Il login del link ipertestuale è visibile.
Giudizio logico aggiuntivo, quando la configurazione SkyAPM esiste già, non utilizza il valore predefinito,Rigenerazionesky-apm-demo e SkyApm.Agent.AspNetCore, copia tutti i file nella libreria modificata \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 nel nostro progetto \bin\Debug\netcoreapp3.1 e sostituiscili.Aggiorna il browser。
Esaminando i log apm, puoi scoprire che le informazioni di configurazione in consul sono state lette con successo e che la comunicazione con Skywalking è stata stabilita con successo, come mostrato nella figura sottostante:
(Fine)
|