Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menguasai Analisis Surih dengan Pautan Span menggunakan openTelemetry dan Signoz (Panduan Praktikal, Bahagian 2)

Menguasai Analisis Surih dengan Pautan Span menggunakan openTelemetry dan Signoz (Panduan Praktikal, Bahagian 2)

Barbara Streisand
Barbara Streisandasal
2024-10-25 04:28:02729semak imbas

Dalam tutorial sebelumnya, kami mempelajari cara menggunakan pautan span untuk menjejak interaksi dalam sistem teragih

Dalam tutorial ini, kita akan melihat cara melaksanakan Amalan Terbaik untuk Menggunakan Pautan Span dan Kes Penggunaan Lanjutan

Amalan Terbaik untuk Menggunakan Pautan Span dalam OpenTelemetry

Apabila berurusan dengan sistem teragih yang kompleks, memilih strategi pengesanan yang betul adalah penting untuk mengekalkan kejelasan dan prestasi.

Dalam OpenTelemetry, dua alatan utama yang anda gunakan ialah perhubungan ibu bapa-anak dan pautan span. Mari terokai masa dan cara menggunakan pautan span dengan berkesan, terutamanya berbanding dengan hubungan ibu bapa-anak yang lebih biasa.

1. Bila Menggunakan Pautan Span dan Hubungan Ibu Bapa-Anak

Memahami masa untuk menggunakan pautan span berbanding jejak ibu bapa-anak adalah penting untuk memetakan cara perkhidmatan anda berkomunikasi dengan betul.

Hubungan Ibu Bapa-Anak: Model Pengesanan Standard

Hubungan ibu bapa-anak dalam pengesanan adalah mudah. Jika satu perkhidmatan memanggil yang lain, jejak itu mencipta pautan induk-anak langsung antara dua rentang. Rentang kanak-kanak bergantung pada rentang induk, dengan jelas menunjukkan aliran operasi.

Model ini berfungsi dengan baik dalam operasi segerak, di mana satu tugasan secara langsung mencetuskan tugasan lain, dan ia mengikuti perkembangan linear, seperti:

  • Permintaan pengguna mencetuskan fungsi.
  • Fungsi memanggil pangkalan data.
  • Pangkalan data mengembalikan respons.
  • Setiap tindakan ini akan menjadi rentang anak daripada tindakan sebelumnya, membentuk surih yang kemas dan berurutan.

Span Pautan

Dalam sistem dunia sebenar, terutamanya yang menggunakan perkhidmatan mikro atau proses tak segerak, tidak semua operasi mengikuti aliran hierarki yang kemas ini. Di sinilah pautan span menjadi berharga.

Pautan rentang membolehkan anda menyambungkan dua rentang yang mungkin tidak mengikut corak sebab dan akibat langsung. Contohnya:

Tugas Tak Segerak: Baris gilir mesej mungkin menghantar permintaan kepada perkhidmatan pemprosesan, tetapi anda juga mungkin mahu menyambungkan permintaan itu kepada perkhidmatan asal yang mencetuskannya.

Kerja Kelompok: Anda mungkin mempunyai sistem yang memproses data dalam kelompok, di mana berbilang kerja anak dipautkan kembali kepada satu peristiwa pencetus, tetapi kerja ini tidak dilaksanakan secara berurutan.

Proses Di mana Pautan Span Menambah Nilai:

Sistem Terpisah atau Tak Segerak:
Di mana satu proses memulakan proses yang lain, tetapi tiada panggilan langsung.

Berbilang Ibu Bapa: Jika berbilang proses menyumbang kepada satu hasil (cth., data daripada beberapa perkhidmatan digabungkan menjadi satu laporan), pautan rentang membolehkan anda menyambungkan semua rentang yang berkaitan.

Peristiwa Berkaitan: Pautan span sesuai apabila anda perlu mengaitkan span daripada surih yang berbeza, seperti apabila kegagalan dalam satu perkhidmatan menyebabkan ralat pada perkhidmatan lain secara tidak langsung.

Proses yang menjadikan Span Links Berlebihan:

Operasi Segerak: Jika hubungan antara tugas adalah langsung dan segerak, pautan span boleh mengacaukan visualisasi surih anda tanpa menambah nilai sebenar. Dalam kes ini, kekalkan hubungan ibu bapa-anak untuk kesederhanaan.

Gunakan Strategi Persampelan dengan Pautan Span untuk mengoptimumkan Prestasi Penjejakan:

Dalam sistem trafik tinggi, tidak setiap rentang atau pautan perlu ditangkap. Pensampelan ialah strategi di mana hanya sebahagian daripada jejak direkodkan, memastikan anda menangkap data yang mencukupi untuk analisis tanpa membebankan sistem anda.

Pensampelan Berasaskan Kepala: Ini menangkap jejak pada titik masuk (kepala) sistem anda. Anda boleh menggunakan ini pada perkhidmatan utama, memastikan pautan span hanya dibuat untuk jejak keutamaan atau penting.

Pensampelan Berasaskan Ekor: Sampel ini mengesan berdasarkan hasil, seperti menangkap hanya surih yang mengakibatkan ralat. Anda boleh menggunakan ini untuk memastikan pautan span digunakan dalam kes yang berkemungkinan besar memerlukan penyiasatan mendalam, seperti kegagalan.

2. Penamaan dan Penstrukturan Span Pautan untuk Kejelasan

Konvensyen penamaan yang baik dan jejak berstruktur adalah penting untuk mendapatkan data kebolehmerhatian yang sempurna, terutamanya apabila pautan span terlibat. Nama span harus menerangkan dengan jelas perkara yang diwakilinya. Ini menjadi lebih penting apabila menggunakan pautan span, kerana hubungan antara span tidak selalunya kelihatan jelas.

Konvensyen Penamaan Konsisten:

Gunakan corak yang konsisten untuk nama rentang, seperti memasukkan nama perkhidmatan, fungsi atau tindakan. Contohnya, rentang untuk perkhidmatan pemprosesan pembayaran mungkin dinamakan payment-service.processPayment.

Nyatakan Peranan Rentang Terpaut:

Dalam nama rentang anda, nyatakan peranan rentang terpaut jika berkaitan. Contohnya, user-authentication.request boleh dipautkan ke session-creation.init, menjadikan hubungan antara mereka jelas.

Rentang Berkaitan Kumpulan: rentang kumpulan secara logik Contohnya, jika berbilang perkhidmatan mikro menyumbang kepada satu proses yang lebih besar, pastikan pautan rentang dan penamaan membantu mengenal pasti perkhidmatan yang bertanggungjawab untuk setiap bahagian.

Sebab Pautan Dokumen: Jika boleh, dokumen sebab pautan span wujud, sama ada dalam surih itu sendiri (melalui metadata) atau dalam dokumentasi anda. Ini boleh semudah ulasan ringkas dalam kod pengesanan yang menerangkan hubungan antara dua rentang.

Penjejakan Ralat Kes Penggunaan Lanjutan untuk menggunakan Pautan Span dalam Aplikasi anda

Cara Menggunakan Pautan Span untuk Mengesan Aliran Ralat Antara Perkhidmatan

Bayangkan anda menguruskan aplikasi web yang kompleks dengan pelbagai perkhidmatan mikro, setiap perkhidmatan mikro bertanggungjawab untuk bahagian pengalaman pengguna yang berbeza.

Pengguna mungkin membuat pesanan, yang mencetuskan perkhidmatan pembayaran, perkhidmatan inventori dan perkhidmatan penghantaran. Jika ralat berlaku di suatu tempat dalam rantaian ini, adalah penting untuk mengetahui tempat ia berlaku dan cara ia memberi kesan kepada perkhidmatan lain. Di sinilah pautan span masuk.

Pautan span membolehkan anda menyambungkan jejak yang tidak berada dalam hubungan ibu bapa-anak secara langsung, tetapi masih mempunyai kaitan kontekstual. menggunakan pautan span untuk penjejakan ralat, anda boleh mengaitkan ralat dalam satu perkhidmatan dengan kesan seterusnya pada perkhidmatan lain , walaupun mereka tidak berkongsi hubungan langsung.

Kes Penggunaan: Katakan perkhidmatan pembayaran anda menghadapi ralat semasa cuba memproses transaksi, dan kegagalan ini secara tidak langsung memberi kesan kepada perkhidmatan penghantaran. Menggunakan pautan rentang, anda boleh membuat perhubungan antara rentang ralat daripada perkhidmatan pembayaran dan tempoh perkhidmatan penghantaran yang mengesan isu tersebut.

Ini membantu anda menggambarkan aliran ralat merentas perkhidmatan dan memahami kesan riaknya.

Contoh Kod untuk Menangkap dan Memautkan Ralat Merentas Perkhidmatan Mikro

Mari lihat bagaimana anda mungkin menangkap ralat ini menggunakan OpenTelemetry dan membuat pautan rentang antara ralat tersebut. Berikut ialah contoh mudah menggunakan Python:

from opentelemetry import trace

# Initialize tracer
tracer = trace.get_tracer("order-service")

# Create a span in the payment service
with tracer.start_as_current_span("payment-processing") as payment_span:
    try:
        # Simulate a payment process that raises an error
        process_payment()
    except Exception as e:
        payment_span.record_exception(e)
        payment_span.set_status(trace.Status(trace.StatusCode.ERROR, str(e)))

        # Capture the error trace and create a span link
        error_link = trace.Link(payment_span.get_span_context())

# Now in the shipping service, you can link this error trace
with tracer.start_as_current_span("shipping-service", links=[error_link]) as shipping_span:
    # Handle the impact of the payment error here
    process_shipping()

Mastering Trace Analysis with Span Links using openTelemetry and Signoz (A Practical Guide,Part 2)

Penjelasan coretan kod di atas

Jangka masa pemprosesan pembayaran menangkap ralat apabila pembayaran gagal.
Pautan span (error_link) dibuat menggunakan konteks tempoh pemprosesan pembayaran.

Pautan ini kemudiannya ditambahkan pada tempoh perkhidmatan penghantaran, membolehkan anda mengesan cara ralat pembayaran mempengaruhi proses penghantaran.

Anda boleh menggunakan alatan seperti SigNoz untuk menggambarkan ralat ini, menjadikannya lebih mudah untuk mengenal pasti punca isu.

Melaksanakan Pautan Span dalam Seni Bina Perkhidmatan Mikro Kompleks

Kes Penggunaan Dunia Sebenar: Menggunakan Pautan Span untuk Menjejaki Interaksi Pelanggan Merentasi Seni Bina Berbilang Perkhidmatan

Mari kita ambil senario dunia sebenar. Bayangkan platform e-dagang di mana tindakan pelanggan, seperti membuat pesanan, dikendalikan oleh beberapa perkhidmatan: Perkhidmatan Pesanan, Perkhidmatan Inventori, Perkhidmatan Pembayaran dan Perkhidmatan Penghantaran.

Pengguna yang membuat satu pesanan boleh menjana berbilang rentang, satu untuk setiap perkhidmatan.

Kini, rentang ini biasanya diatur dalam hubungan ibu bapa-anak, di mana Perkhidmatan Pesanan mungkin merupakan ibu bapa kepada Perkhidmatan Pembayaran dan sebagainya. Tetapi bagaimana jika anda ingin menjejaki hubungan yang lebih kompleks?

Sebagai contoh, jika Perkhidmatan Inventori menyemak tahap stok secara bebas selepas pengesahan pembayaran, ia bukan anak langsung Perkhidmatan Pembayaran. Pautan span membolehkan anda menyambungkan perkhidmatan ini secara langsung, mencipta gambaran yang lebih tepat tentang cara perkhidmatan anda berinteraksi.

Mengapa Span Links penting dalam Seni Bina Kompleks

Pautan span memberi anda fleksibiliti untuk menangkap interaksi bukan linear ini, memberikan pandangan menyeluruh tentang tindakan pengguna yang merentas perkhidmatan. Ini amat berguna untuk menyelesaikan masalah pengalaman pengguna, seperti penghantaran tertangguh akibat semakan inventori.

Cara Span Links Meningkatkan Kebolehlihatan dalam Sistem Tanpa Pelayan atau Didorong Peristiwa

Dalam sistem tanpa pelayan atau didorong oleh peristiwa, perkhidmatan sering berinteraksi secara terpisah, peristiwa mencetuskan tindakan tanpa perkhidmatan mempunyai pengetahuan langsung antara satu sama lain.

Sebagai contoh, acara daripada Perkhidmatan Pembayaran mungkin mencetuskan Perkhidmatan Kemas Kini Inventori melalui bas acara. Memandangkan perkhidmatan ini tidak mempunyai hubungan ibu bapa dan anak, mengesannya dengan kaedah tradisional boleh menjadi mencabar.

Cara Menggunakan Pautan Span untuk Tanpa Pelayan

Pautan span boleh bertindak sebagai gam antara perkhidmatan terputus-putus ini. Apabila acara dijana daripada satu perkhidmatan dan digunakan oleh yang lain, anda boleh membuat pautan span yang menghubungkan span acara asal dengan span perkhidmatan yang digunakan.

Dengan cara ini, walaupun fungsi tanpa pelayan anda berjalan secara bebas, anda masih boleh mendapatkan kisah penuh interaksi.

Contoh: Katakan Perkhidmatan Pembayaran anda menghantar mesej ke baris gilir selepas memproses pembayaran dan mesej ini mencetuskan Fungsi Kemas Kini Stok dalam seni bina tanpa pelayan.

Berikut ialah coretan kod tentang cara anda boleh memautkan rentang ini

from opentelemetry import trace

# Initialize tracer
tracer = trace.get_tracer("order-service")

# Create a span in the payment service
with tracer.start_as_current_span("payment-processing") as payment_span:
    try:
        # Simulate a payment process that raises an error
        process_payment()
    except Exception as e:
        payment_span.record_exception(e)
        payment_span.set_status(trace.Status(trace.StatusCode.ERROR, str(e)))

        # Capture the error trace and create a span link
        error_link = trace.Link(payment_span.get_span_context())

# Now in the shipping service, you can link this error trace
with tracer.start_as_current_span("shipping-service", links=[error_link]) as shipping_span:
    # Handle the impact of the payment error here
    process_shipping()

Mastering Trace Analysis with Span Links using openTelemetry and Signoz (A Practical Guide,Part 2)

Dengan persediaan ini, anda boleh mengesan aliran daripada pemprosesan pembayaran kepada kemas kini stok, walaupun ia beroperasi secara tidak segerak.

Apabila divisualisasikan, ia menjadi jelas bagaimana bahagian berlainan aplikasi tanpa pelayan anda berinteraksi, meningkatkan keupayaan anda untuk mendiagnosis kesesakan atau kelewatan yang tidak dijangka.

Mengapa pendekatan ini penting untuk Kebolehlihatan

Pemantauan tradisional mungkin menunjukkan kepada anda bahawa kemas kini stok adalah perlahan, tetapi dengan pautan span, anda boleh mengesan kelewatan itu kembali kepada peristiwa pembayaran tertentu yang mencetuskannya.

Tahap cerapan ini tidak ternilai untuk mengoptimumkan sistem anda dan memastikan pengalaman pengguna yang lancar.

Rekap Pembelajaran Utama:

Pautan span ialah ciri OpenTelemetry yang kurang digunakan yang berkuasa yang boleh meningkatkan korelasi surih dengan ketara dalam sistem teragih.

Tetapi apakah sebenarnya maksudnya, dan mengapa anda perlu mengambil berat?

Bayangkan aplikasi anda sebagai rangkaian perkhidmatan dan proses yang berbeza, semuanya berkomunikasi dan bekerja bersama-sama untuk memenuhi permintaan pengguna. anda akan sering menghadapi senario di mana hubungan ibu bapa-anak yang mudah antara jejak tidak cukup menangkap kerumitan perkara yang berlaku.

Sebagai contoh, bagaimana jika kerja latar belakang sedang memproses peristiwa yang dicetuskan oleh tindakan pengguna atau berbilang perkhidmatan berfungsi bersama secara tidak segerak? Di sinilah pautan span masuk untuk menyelesaikan cabaran dengan mudah.

Jadi, apakah faedah menggunakan pautan span?

Menghubungkan Rentang Melangkaui Kekangan Ibu Bapa-Anak:

Pautan span membolehkan anda menyambungkan jejak merentas perkhidmatan tanpa terikat dengan struktur hierarki biasa rentang ibu bapa dan anak.

Ini amat berguna apabila anda ingin mengaitkan peristiwa yang berlaku serentak atau berkongsi konteks yang sama tetapi tidak mempunyai hubungan langsung ibu bapa-anak. Contohnya, memautkan surih daripada perkhidmatan yang menghadap pengguna kepada proses latar belakang boleh memberi anda pandangan yang lebih holistik tentang cara tindakan pengguna memberi kesan kepada prestasi sistem.

Ia membantu meningkatkan Penyahpepijatan dan Penyelesaian Masalah:

Dengan pautan span, anda memperoleh perspektif yang lebih kaya tentang cara perkhidmatan yang berbeza berinteraksi, terutamanya semasa aliran kerja yang kompleks. Dengan melihat rentang mana yang berkaitan melalui pautan, anda boleh mengenal pasti kesesakan, corak ralat atau isu prestasi yang mungkin sukar dikesan sebaliknya. Ini menjadikan pautan span sebagai alat yang berkuasa untuk menyahpepijat isu yang merangkumi pelbagai perkhidmatan.

Ia memberikan Keterlihatan Lebih Baik dalam Sistem Tak Segerak:

Untuk aplikasi yang bergantung pada pemprosesan tak segerak, seperti yang menggunakan baris gilir mesej atau seni bina dipacu peristiwa, pautan span tidak ternilai.

Ia membolehkan anda menjejaki kitaran hayat tugas atau mesej semasa ia mengalir melalui perkhidmatan yang berbeza. Ini boleh membantu anda memahami kesan satu peristiwa merentas keseluruhan sistem anda, menjadikannya lebih mudah untuk mengoptimumkan dan memperhalusi proses anda.

Ringkasnya, pautan span membolehkan anda mencipta gambaran yang lebih berkaitan dan bermakna tentang gelagat aplikasi anda, yang membawa kepada kebolehmerhatian yang lebih baik dan pemahaman yang lebih mendalam tentang cara sistem yang diedarkan anda beroperasi.

Dengan memanfaatkan pautan span dengan berkesan, anda boleh meningkatkan korelasi surih, menjadikan penyelesaian masalah lebih pantas dan memberikan paparan yang lebih lengkap tentang prestasi sistem anda.

Pautan ke Dokumentasi OpenTelemetry yang Berkaitan untuk Pautan Span

Bagi mereka yang ingin mendalami panduan rasmi tentang pautan rentang dan konsep berkaitan, sumber berikut akan berguna untuk penyelidikan anda:

Dokumentasi OpenTelemetry Span Links

Ini adalah rujukan utama untuk memahami cara membuat dan mengurus pautan span. Ia merangkumi spesifikasi API untuk memautkan rentang, dengan contoh dalam pelbagai bahasa pengaturcaraan yang disokong. Ia merupakan titik permulaan yang bagus untuk memahami butiran teknikal cara pautan span berfungsi di bawah hud.

Penyebaran Konteks OpenTelemetry

Memahami penyebaran konteks adalah kunci untuk memanfaatkan sepenuhnya pautan rentang, dan dokumentasi ini memberikan gambaran keseluruhan menyeluruh tentang cara konteks diurus merentas jejak. Ini amat membantu jika anda ingin memastikan ketekalan dalam data pengesanan anda merentas perkhidmatan yang diedarkan.

Strategi Persampelan OpenTelemetry

Apabila melaksanakan pautan span, adalah penting untuk mengetahui cara pensampelan mempengaruhi jejak anda. Bahagian dokumentasi ini menyediakan panduan terperinci tentang cara mengkonfigurasi strategi pensampelan yang berbeza, membantu anda mencapai keseimbangan yang betul antara kebutiran data dan prestasi.

Pautan ini adalah sumber yang berharga untuk rujukan dan aplikasi praktikal, menjadikannya penting untuk sesiapa sahaja yang serius untuk menguasai keupayaan pengesanan OpenTelemetry. Tandai buku sumber ini dan gunakannya sebagai panduan semasa anda membina persediaan kebolehmerhatian yang lebih kompleks.

Jika anda mempunyai soalan atau penjelasan lanjut, sila kongsikannya di bahagian komen.

Atas ialah kandungan terperinci Menguasai Analisis Surih dengan Pautan Span menggunakan openTelemetry dan Signoz (Panduan Praktikal, Bahagian 2). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn