Αναθεώρηση:
Project, μπορείτε να το χρησιμοποιήσετεΠρόξενοςήΑπόλλωνΓια να κάνετε το κέντρο διαμόρφωσης, ένα σεμινάριο για το Consul ως κέντρο διαμόρφωσης ASP.NET Core:
Απαιτήσεις: Αποθηκεύουμε τις πληροφορίες διαμόρφωσης του APM στο ενδιάμεσο λογισμικό Consul, επομένως δεν χρειάζεται να συνδεθούμε στον διακομιστή για να τροποποιήσουμε με μη αυτόματο τρόπο τις πληροφορίες διαμόρφωσης στο αρχείο appsettings.json.
Ξεκινήστε το Consul
Ξεκινήστε το ενδιάμεσο λογισμικό consul χρησιμοποιώντας πρώτα την ακόλουθη εντολή:
Εγκαταστήστε πρόσθετα που σχετίζονται με το Consul ASP.NET Core
Στο έργο μας sky-apm-demo, χρησιμοποιήστε το nuget για να εγκαταστήσετε το ενδιάμεσο λογισμικό Consul ως πρόσθετο για την ανάγνωση του κέντρου διαμόρφωσης με την ακόλουθη εντολή:
Τροποποιήστε τη μέθοδο CreateHostBuilder στο αντικείμενο Program για να προσθέσετε την ανάγνωση των πληροφοριών διαμόρφωσης του απομακρυσμένου Consul, ο κώδικας είναι ο εξής:
Εν τω μεταξύ, στο αρχείο appsettings.json, πρέπει να διαμορφώσετε τη διεύθυνση consul_url, ως εξής:
Προσθέστε τις πληροφορίες διαμόρφωσης στον πρόξενο για να ανοίξετε την πλατφόρμα διαχείρισης ιστού:Η σύνδεση με υπερσύνδεσμο είναι ορατή.για να δημιουργήσετε sky-apm-demo/appsettings. Development.json κλειδί, η τιμή είναι η εξής:
Δημιουργήστε μια νέα μέθοδο ελεγκτή test3 για να διαβάσετε τις πληροφορίες της διαμόρφωσης της υπηρεσίας προξένου μας για εύκολη δοκιμή, ως εξής:
ΠρόσβασηΗ σύνδεση με υπερσύνδεσμο είναι ορατή.Μπορείτε να λάβετε τη διαμόρφωση που ορίσαμε κανονικά, ως εξής:
Κοιτάζοντας τα αρχεία καταγραφής skyapm-20201111.log, θα διαπιστώσετε ότι η διεύθυνση στην οποία το SkyApm έχει πρόσβαση στο Skywalking δεν είναι αυτή που διαμορφώσαμε, αλλάΠροεπιλογή: localhost:11800, όπως φαίνεται στο παρακάτω σχήμα:
2020-11-11 15:32:35.869 +08:00 [My_Service] [Πληροφορίες] SkyApm.Transport.Grpc.ConnectionManager : Σύνδεση τερματισμού λειτουργίας[localhost:11800]. 2020-11-11 15:32:45.875 +08:00 [My_Service] [Σφάλμα] SkyApm.Transport.Grpc.ConnectionManager : Χρονικό όριο σύνδεσης διακομιστή.
System.Threading.Tasks.TaskCanceledException: Reached deadline. στο Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObserved State, Nullable'1 προθεσμία) στο Grpc.Core.Channel.ConnectAsync (προθεσμία Nullable'1) στο SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync() Ελέγχουμε τον πηγαίο κώδικα SkyAPM.Agent.AspNetCore στο GitHub και διαπιστώνουμε ότι εάν το πρόγραμμά μας εκχωρήσει πρώτα τις προεπιλεγμένες ρυθμίσεις και, στη συνέχεια, διαβάσει το αρχείο διαμόρφωσης appsettings.json skywalking.json skyapm.json να παρακάμψει τις προηγούμενες προεπιλεγμένες τιμές, όπως φαίνεται στο παρακάτω σχήμα:
Όσον αφορά τη διαμόρφωση, η διαδικασία φόρτωσης έχει ως εξής:
Πότε λοιπόν το SkyAPM δημιούργησε επικοινωνία με το Skywalking;
Ο πηγαίος κώδικας του SkyAPM έχει μια εργασία παρασκηνίου InstrumentationHostedService, κατά την εγγραφή του IHostedService,Το .NET Core καλεί τις μεθόδους StartAsync() και StopAsync() τύπου IHostedService, αντίστοιχα, κατά την εκκίνηση και τη διακοπή της εφαρμογής。
Μπορείτε να ανατρέξετε σε:
Το πρόβλημα τώρα είναι ότι οι πληροφορίες διαμόρφωσης που ορίζονται από τον πρόξενό μας αντικαθίστανται από την προεπιλεγμένη τιμή του SkyAPM και για να λύσουμε αυτό το πρόβλημα, πρέπει να τροποποιήσουμε τον πηγαίο κώδικα, κατεβάζουμε τον πηγαίο κώδικα SkyAPM στο GitHub.
Τροποποιήστε το αρχείο ConfigurationFactory ως εξής:
Τροποποιήστε το αρχείο ConfigurationBuilderExtensions ως εξής:
Για τον τροποποιημένο πηγαίο κώδικα, μπορείτε να ανατρέξετε στον κλάδο μου:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Προστέθηκε λογική κρίση, όταν υπάρχει ήδη η διαμόρφωση SkyAPM, δεν χρησιμοποιεί την προεπιλεγμένη τιμή,Αναγέννησηsky-apm-demo και SkyApm.Agent.AspNetCore, αντιγράψτε όλα τα αρχεία κάτω από την τροποποιημένη βιβλιοθήκη \src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1 φάκελο στο έργο μας \bin\Debug\netcoreapp3.1 και αντικαταστήστε τα.Ανανεώστε το πρόγραμμα περιήγησής σας。
Κοιτάζοντας τα αρχεία καταγραφής apm, μπορείτε να διαπιστώσετε ότι οι πληροφορίες διαμόρφωσης στο consul έχουν διαβαστεί με επιτυχία και η επικοινωνία με το Skywalking έχει αποκατασταθεί με επιτυχία, όπως φαίνεται στο παρακάτω σχήμα:
(Τέλος)
|