


Menggunakan Zipkin dan Jaeger untuk melaksanakan pengesanan teragih dalam Beego
Menggunakan Zipkin dan Jaeger untuk melaksanakan pengesanan teragih dalam Beego
Dengan populariti perkhidmatan mikro, pembangunan sistem teragih telah menjadi semakin biasa. Walau bagaimanapun, sistem yang diedarkan juga membawa cabaran baharu, seperti cara menjejak aliran permintaan antara pelbagai perkhidmatan, cara menganalisis dan mengoptimumkan prestasi perkhidmatan, dsb. Dalam hal ini, penyelesaian pengesanan yang diedarkan telah menjadi komponen yang semakin penting. Artikel ini akan memperkenalkan cara menggunakan Zipkin dan Jaeger untuk melaksanakan pengesanan teragih dalam Beego.
Permintaan pengesanan merentas berbilang perkhidmatan ialah matlamat utama pengesanan teragih. Aliran log berpusat atau aliran metrik tidak dapat menyelesaikan masalah ini kerana aliran ini tidak dapat memberikan korelasi antara perkhidmatan. Permintaan mungkin memerlukan berbilang perkhidmatan untuk berfungsi bersama, dan perkhidmatan ini mesti mengetahui masa tindak balas dan gelagat perkhidmatan lain. Pendekatan tradisional adalah untuk mencatat pelbagai metrik dan kemudian melonggarkan ambang untuk mengelakkan sekatan apabila menerima permintaan. Tetapi pendekatan ini boleh menyembunyikan masalah seperti gangguan dan isu prestasi. Pengesanan teragih ialah penyelesaian untuk pengesanan permintaan silang perkhidmatan. Dalam pendekatan ini, apabila permintaan mengalir antara perkhidmatan, setiap perkhidmatan menjana satu siri ID yang akan menjejaki keseluruhan permintaan.
Mari lihat cara melaksanakan pengesanan teragih dalam Beego.
Zipkin dan Jaeger kini merupakan penyelesaian pengesanan teragih yang paling popular. Kedua-dua alatan menyokong OpenTracing API, membolehkan pembangun log dan mengesan permintaan merentas perkhidmatan dengan cara yang konsisten.
Pertama, kita perlu memasang dan memulakan Zipkin atau Jaeger, dan kemudian mengkonfigurasi pengesanan teragih dalam aplikasi Beego. Dalam artikel ini, kami akan menggunakan Zipkin.
Pasang Zipkin:
curl -sSL https://zipkin.io/quickstart.sh | bash -s java -jar zipkin.jar
Setelah Zipkin dilancarkan, anda boleh mengakses UI webnya melalui http://localhost:9411.
Seterusnya, kami perlu menambah sokongan untuk OpenTracing API dalam Beego. Kami boleh menggunakan pakej opentracing-go dan log permintaan silang perkhidmatan dan acara lain menggunakan API yang disediakannya. Contoh kod penjejakan adalah seperti berikut:
import ( "github.com/opentracing/opentracing-go" ) func main() { // Initialize the tracer tracer, closer := initTracer() defer closer.Close() // Start a new span span := tracer.StartSpan("example-span") // Record some events span.SetTag("example-tag", "example-value") span.LogKV("example-key", "example-value") // Finish the span span.Finish() } func initTracer() (opentracing.Tracer, io.Closer) { // Initialize the tracer tracer, closer := zipkin.NewTracer( zipkin.NewReporter(httpTransport.NewReporter("http://localhost:9411/api/v2/spans")), zipkin.WithLocalEndpoint(zipkin.NewEndpoint("example-service", "localhost:80")), zipkin.WithTraceID128Bit(true), ) // Set the tracer as the global tracer opentracing.SetGlobalTracer(tracer) return tracer, closer }
Dalam contoh di atas, kami mula-mula memulakan penjejak Zipkin dan kemudian menggunakannya untuk merekodkan beberapa acara. Kita boleh menambah teg dan pasangan nilai kunci dan menamatkan span dengan memanggil span.Finish().
Sekarang, mari tambahkan pengesanan teragih pada aplikasi Beego kami.
Pertama, mari tambahkan kebergantungan opentracing-go dan zipkin-go-opentracing. Kita boleh melakukan ini menggunakan mod go atau memasang pakej secara manual.
go get github.com/opentracing/opentracing-go go get github.com/openzipkin/zipkin-go-opentracing
Kemudian, kita perlu memulakan perisian tengah penjejak Zipkin dan penjejak Beego dalam aplikasi Beego. Berikut ialah kod sampel untuk perisian tengah pengesan Beego:
import ( "net/http" "github.com/astaxie/beego" opentracing "github.com/opentracing/opentracing-go" "github.com/openzipkin/zipkin-go-opentracing" ) func TraceMiddleware() func(http.ResponseWriter, *http.Request, http.HandlerFunc) { return func(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) { // Initialize the tracer tracer, closer := initTracer() defer closer.Close() // Extract the span context from the HTTP headers spanCtx, err := tracer.Extract(opentracing.HTTPHeaders, opentracing.HTTPHeadersCarrier(r.Header)) if err != nil && err != opentracing.ErrSpanContextNotFound { beego.Error("failed to extract span context:", err) } // Start a new span span := tracer.StartSpan(r.URL.Path, ext.RPCServerOption(spanCtx)) // Set some tags span.SetTag("http.method", r.Method) span.SetTag("http.url", r.URL.String()) // Inject the span context into the HTTP headers carrier := opentracing.HTTPHeadersCarrier(r.Header) if err := tracer.Inject(span.Context(), opentracing.HTTPHeaders, carrier); err != nil { beego.Error("failed to inject span context:", err) } // Set the span as a variable in the request context r = r.WithContext(opentracing.ContextWithSpan(r.Context(), span)) // Call the next middleware/handler next(w, r) // Finish the span span.Finish() } } func initTracer() (opentracing.Tracer, io.Closer) { // Initialize the Zipkin tracer report := zipkinhttp.NewReporter("http://localhost:9411/api/v2/spans") defer report.Close() endpoint, err := zipkin.NewEndpoint("example-service", "localhost:80") if err != nil { beego.Error("failed to create Zipkin endpoint:", err) } nativeTracer, err := zipkin.NewTracer( report, zipkin.WithLocalEndpoint(endpoint), zipkin.WithTraceID128Bit(true)) if err != nil { beego.Error("failed to create Zipkin tracer:", err) } // Initialize the OpenTracing API tracer tracer := zipkinopentracing.Wrap(nativeTracer) // Set the tracer as the global tracer opentracing.SetGlobalTracer(tracer) return tracer, report }
Dalam kod sampel di atas, kami mentakrifkan perisian tengah bernama TraceMiddleware. Perisian tengah ini akan mengekstrak konteks penjejakan sedia ada daripada pengepala HTTP (jika ada) dan menggunakannya untuk mencipta penjejak baharu untuk permintaan tersebut. Kami juga menetapkan rentang dalam konteks permintaan supaya semua perisian tengah dan pengendali lain boleh mengaksesnya. Akhir sekali, selepas pelaksanaan pengendali tamat, kami memanggil kaedah finish() pada span supaya Zipkin boleh merekodkan penjejakan saling bergantung merentas semua perkhidmatan yang diminta.
Kami juga perlu melampirkan perisian tengah ini pada penghala Beego kami. Kita boleh melakukan ini menggunakan kod berikut dalam kod permulaan penghala:
beego.InsertFilter("*", beego.BeforeRouter, TraceMiddleware())
Sekarang, lancarkan aplikasi Beego anda dan lawati http://localhost:9411 untuk membuka UI Zipkin untuk melihat data penjejakan.
Melaksanakan pengesanan teragih dalam aplikasi Beego mungkin kelihatan rumit, tetapi dengan menggunakan perpustakaan opentracing-go dan zipkin-go-opentracing, kami boleh menambah fungsi ini dengan mudah. Ini menjadi semakin penting apabila kami terus meningkatkan bilangan dan kerumitan perkhidmatan kami, membolehkan kami memahami cara perkhidmatan kami berfungsi bersama dan memastikan ia berfungsi dengan baik sepanjang proses pengendalian permintaan.
Atas ialah kandungan terperinci Menggunakan Zipkin dan Jaeger untuk melaksanakan pengesanan teragih dalam Beego. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dengan peningkatan pengkomputeran awan dan perkhidmatan mikro, kerumitan aplikasi telah meningkat. Oleh itu, pemantauan dan diagnostik menjadi salah satu tugas pembangunan yang penting. Dalam hal ini, Prometheus dan Grafana ialah dua alat pemantauan dan visualisasi sumber terbuka yang popular yang boleh membantu pembangun memantau dan menganalisis aplikasi dengan lebih baik. Artikel ini akan meneroka cara menggunakan Prometheus dan Grafana untuk melaksanakan pemantauan dan membimbangkan dalam rangka kerja Beego. 1. Pengenalan Beego ialah aplikasi web pembangunan pesat sumber terbuka.

Dengan perkembangan pesat Internet, penggunaan aplikasi Web menjadi semakin biasa Bagaimana untuk memantau dan menganalisis penggunaan aplikasi Web telah menjadi tumpuan pembangun dan pengendali laman web. Google Analytics ialah alat analitis tapak web yang berkuasa yang boleh menjejak dan menganalisis tingkah laku pelawat tapak web. Artikel ini akan memperkenalkan cara menggunakan Google Analitis dalam Beego untuk mengumpul data tapak web. 1. Untuk mendaftar akaun Google Analitis, anda perlu terlebih dahulu

Dalam era perkembangan teknologi yang pesat hari ini, bahasa pengaturcaraan bermunculan seperti cendawan selepas hujan. Salah satu bahasa yang telah menarik perhatian ramai ialah bahasa Go, yang digemari oleh ramai pembangun kerana kesederhanaan, kecekapan, keselamatan serentak dan ciri-ciri lain. Bahasa Go terkenal dengan ekosistemnya yang kukuh dengan banyak projek sumber terbuka yang sangat baik. Artikel ini akan memperkenalkan lima projek sumber terbuka bahasa Go yang dipilih dan membawa pembaca untuk meneroka dunia projek sumber terbuka bahasa Go. KubernetesKubernetes ialah enjin orkestrasi kontena sumber terbuka untuk automatik

Dalam rangka kerja Beego, pengendalian ralat adalah bahagian yang sangat penting, kerana jika aplikasi tidak mempunyai mekanisme pengendalian ralat yang betul dan lengkap, ia boleh menyebabkan aplikasi itu ranap atau tidak berjalan dengan betul, iaitu untuk projek dan pengguna kami masalah yang sangat serius. Rangka kerja Beego menyediakan satu siri mekanisme untuk membantu kami mengelakkan masalah ini dan menjadikan kod kami lebih teguh dan boleh diselenggara. Dalam artikel ini, kami akan memperkenalkan mekanisme pengendalian ralat dalam rangka kerja Beego dan membincangkan cara ia boleh membantu kami mengelakkan

Dengan perkembangan pesat Internet, sistem teragih telah menjadi salah satu infrastruktur dalam banyak perusahaan dan organisasi. Untuk sistem teragih berfungsi dengan baik, ia perlu diselaraskan dan diuruskan. Dalam hal ini, ZooKeeper dan Curator ialah dua alat yang patut digunakan. ZooKeeper ialah perkhidmatan penyelarasan teragih yang sangat popular yang boleh membantu kami menyelaraskan status dan data antara nod dalam kelompok. Kurator ialah enkapsulasi ZooKeeper

Dengan perkembangan pesat Internet, semakin banyak perusahaan telah mula memindahkan aplikasi mereka ke platform awan. Docker dan Kubernetes telah menjadi dua alat yang sangat popular dan berkuasa untuk penggunaan dan pengurusan aplikasi pada platform awan. Beego ialah rangka kerja Web yang dibangunkan menggunakan Golang Ia menyediakan fungsi yang kaya seperti penghalaan HTTP, lapisan MVC, pengelogan, pengurusan konfigurasi dan pengurusan Sesi. Dalam artikel ini kami akan membincangkan cara menggunakan Docker dan Kub

"Go Language Development Essentials: 5 Syor Rangka Kerja Popular" Sebagai bahasa pengaturcaraan yang pantas dan cekap, bahasa Go digemari oleh semakin ramai pembangun. Untuk meningkatkan kecekapan pembangunan dan mengoptimumkan struktur kod, ramai pembangun memilih untuk menggunakan rangka kerja untuk membina aplikasi dengan cepat. Dalam dunia bahasa Go, terdapat banyak rangka kerja yang sangat baik untuk dipilih. Artikel ini akan memperkenalkan 5 rangka kerja bahasa Go yang popular dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan menggunakan rangka kerja ini dengan lebih baik. 1.GinGin ialah rangka kerja web yang ringan dengan pantas

Dengan perkembangan pesat Internet dan Internet mudah alih, semakin banyak aplikasi memerlukan pengesahan dan kawalan kebenaran, dan JWT (JSON Web Token), sebagai mekanisme pengesahan dan kebenaran yang ringan, digunakan secara meluas dalam aplikasi WEB. Beego ialah rangka kerja MVC berdasarkan bahasa Go, yang mempunyai kelebihan kecekapan, kesederhanaan dan skalabiliti Artikel ini akan memperkenalkan cara menggunakan JWT untuk melaksanakan pengesahan dalam Beego. 1. Pengenalan kepada JWT JSONWebToken (JWT) ialah a
