Melihat latensi permintaan aplikasi

Pelajari cara mengumpulkan dan melihat data latensi dari aplikasi Anda:

  1. Buat cluster Google Kubernetes Engine (GKE) menggunakan Google Cloud CLI.

  2. Download dan deploy aplikasi contoh ke cluster Anda.

  3. Membuat rekaman aktivitas dengan mengirimkan permintaan HTTP ke aplikasi contoh.

  4. Lihat informasi latensi dari trace yang Anda buat.

  5. Jalankan pembersihan.


Jika ingin mengikuti panduan langkah demi langkah untuk tugas ini langsung di Konsol Google Cloud, klik Pandu saya:

Pandu saya


Sebelum memulai

  1. Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.

  2. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  3. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  4. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  5. Aktifkan API Google Kubernetes Engine and Cloud Trace.

    Mengaktifkan API

  6. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  7. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  8. Aktifkan API Google Kubernetes Engine and Cloud Trace.

    Mengaktifkan API

Membuat cluster GKE

  1. Di toolbar, klik Activate Cloud Shell, lalu lakukan langkah-langkah berikut di Cloud Shell.

  2. Membuat cluster:

    gcloud container clusters create cloud-trace-demo --zone us-central1-c
    

    Perintah sebelumnya, yang memerlukan waktu beberapa menit untuk diselesaikan, akan membuat cluster standar dengan nama cloud-trace-demo di zona us-central1-c.

  3. Konfigurasikan kubectl untuk memperbarui kredensialnya secara otomatis agar menggunakan identitas yang sama dengan Google Cloud CLI:

    gcloud container clusters get-credentials cloud-trace-demo --zone us-central1-c
    
  4. Verifikasi akses ke cluster Anda:

    kubectl get nodes
    

    Contoh output perintah ini adalah:

    NAME                                              STATUS   ROLES    AGE   VERSION
    gke-cloud-trace-demo-default-pool-063c0416-113s   Ready    <none>   78s   v1.22.12-gke.2300
    gke-cloud-trace-demo-default-pool-063c0416-1n27   Ready    <none>   79s   v1.22.12-gke.2300
    gke-cloud-trace-demo-default-pool-063c0416-frkd   Ready    <none>   78s   v1.22.12-gke.2300
    

Download dan deploy serta aplikasikan

Download dan deploy aplikasi Python yang menggunakan framework Flask dan paket OpenTelemetry. Aplikasi dijelaskan di bagian Tentang aplikasi pada halaman ini.

Di Cloud Shell, lakukan hal berikut:

  1. Clone aplikasi Python dari GitHub:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    
  2. Jalankan perintah berikut untuk men-deploy aplikasi contoh:

    cd python-docs-samples/trace/cloud-trace-demo-app-opentelemetry && ./setup.sh
    

    Skrip setup.sh memerlukan waktu beberapa menit untuk diselesaikan.

    Skrip ini mengonfigurasi tiga layanan menggunakan image bawaan, lalu menunggu semua resource disediakan. Workload tersebut diberi nama cloud-trace-demo-a, cloud-trace-demo-b, dan cloud-trace-demo-c.

    Contoh output perintah ini adalah:

    deployment.apps/cloud-trace-demo-a is created
    service/cloud-trace-demo-a is created
    deployment.apps/cloud-trace-demo-b is created
    service/cloud-trace-demo-b is created
    deployment.apps/cloud-trace-demo-c is created
    service/cloud-trace-demo-c is created
    
    Wait for load balancer initialization complete......
    Completed.
    

Membuat data rekaman aktivitas

trace menjelaskan waktu yang diperlukan aplikasi untuk menyelesaikan satu operasi.

Untuk membuat rekaman aktivitas, jalankan perintah berikut di Cloud Shell:

curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')

Respons perintah sebelumnya akan terlihat seperti berikut:

Hello, I am service A
And I am service B
Hello, I am service C

Anda dapat menjalankan perintah curl beberapa kali untuk menghasilkan beberapa rekaman aktivitas.

Melihat data latensi

  1. Di panel navigasi konsol Google Cloud, pilih Trace, lalu pilih Trace explorer:

    Buka Trace explorer

    Setiap trace direpresentasikan oleh titik pada grafik dan baris dalam tabel.

    Screenshot berikut menunjukkan beberapa rekaman aktivitas:

    Jendela Trace Explorer untuk panduan memulai.

  2. Untuk melihat rekaman aktivitas secara mendetail, pilih titik di grafik atau baris dalam tabel.

    Diagram sebar dimuat ulang dan titik yang Anda pilih ditandai dengan lingkaran yang digambar di sekitar titik, dan semua titik lain yang mewakili semua trace lainnya akan diredupkan.

    Diagram Gantt menampilkan informasi tentang trace yang dipilih. Baris pertama dalam diagram Gantt adalah untuk trace, dan ada satu baris untuk setiap span dalam trace. span menjelaskan berapa lama waktu yang diperlukan untuk melakukan sub-operasi lengkap.

    Detail tambahan tentang setiap span ditampilkan di panel detail.

  3. Untuk melihat informasi detail informasi tentang span, pada diagram Gantt, pilih span.

Tentang aplikasi

Aplikasi contoh yang digunakan dalam panduan memulai ini tersedia di repositori GitHub. Repositori ini berisi informasi tentang cara menggunakan aplikasi di lingkungan selain Cloud Shell. Aplikasi contoh ditulis dalam Python, menggunakan framework Flask dan paket OpenTelemetry, serta dijalankan di cluster GKE.

Instrumentasi

File app.py di repositori GitHub, berisi instrumentasi yang diperlukan untuk mengambil dan mengirim data rekaman aktivitas ke project Google Cloud Anda:

  • Aplikasi ini mengimpor beberapa paket OpenTelemetry:

    from opentelemetry import trace
    from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter
    from opentelemetry.instrumentation.flask import FlaskInstrumentor
    from opentelemetry.instrumentation.requests import RequestsInstrumentor
    from opentelemetry.propagate import set_global_textmap
    from opentelemetry.propagators.cloud_trace_propagator import CloudTraceFormatPropagator
    from opentelemetry.sdk.trace import TracerProvider
    from opentelemetry.sdk.trace.export import BatchSpanProcessor
    
  • Aplikasi ini menginstrumentasikan permintaan web dengan konteks rekaman aktivitas dan otomatis melacak pengendali Flask dan permintaan ke layanan lain:

    app = flask.Flask(__name__)
    FlaskInstrumentor().instrument_app(app)
    RequestsInstrumentor().instrument()
  • Aplikasi mengonfigurasi pengekspor Cloud Trace sebagai penyedia pelacakan, yang menyebarkan konteks pelacakan dalam format Cloud Trace:

    def configure_exporter(exporter):
        """Configures OpenTelemetry context propagation to use Cloud Trace context
    
        Args:
            exporter: exporter instance to be configured in the OpenTelemetry tracer provider
        """
        set_global_textmap(CloudTraceFormatPropagator())
        tracer_provider = TracerProvider()
        tracer_provider.add_span_processor(BatchSpanProcessor(exporter))
        trace.set_tracer_provider(tracer_provider)
    
    configure_exporter(CloudTraceSpanExporter())
    tracer = trace.get_tracer(__name__)
  • Cuplikan kode berikut menunjukkan cara mengirim permintaan di Python. OpenTelemetry secara implisit menyebarkan konteks rekaman aktivitas untuk Anda dengan permintaan keluar:

    if endpoint is not None and endpoint != "":
        data = {"body": keyword}
        response = requests.get(
            endpoint,
            params=data,
        )
        return keyword + "\n" + response.text
    else:
        return keyword, 200
    
    

Cara kerja aplikasi

Agar lebih jelas, di bagian ini, cloud-trace-demo dihilangkan dari nama layanan. Misalnya, layanan cloud-trace-demo-c direferensikan sebagai c.

Aplikasi ini membuat tiga layanan bernama a, b, dan c. Layanan a dikonfigurasi untuk memanggil layanan b, layanan b dikonfigurasi untuk memanggil layanan c. Untuk mengetahui detail tentang konfigurasi layanan, lihat file YAML di repositori GitHub.

Saat Anda mengeluarkan permintaan HTTP ke layanan a dalam panduan memulai ini, Anda menggunakan perintah curl berikut:

curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')

Perintah curl berfungsi sebagai berikut:

  1. kubectl mengambil alamat IP layanan bernama cloud-trace-demo-a.
  2. Kemudian, perintah curl akan mengirimkan permintaan HTTP ke layanan a.
  3. Layanan a menerima permintaan HTTP dan mengirimkan permintaan ke layanan b.
  4. Layanan b menerima permintaan HTTP dan mengirimkan permintaan ke layanan c.
  5. Layanan c menerima permintaan HTTP dari layanan b dan menampilkan string Hello, I am service C ke layanan b.
  6. Layanan b menerima respons dari layanan c, menambahkannya ke string And I am service B, dan menampilkan hasil ke layanan a.
  7. Layanan a menerima respons dari layanan b dan menambahkannya ke string Hello, I am service A.
  8. Respons dari layanan a dicetak di Cloud Shell.

Pembersihan

Agar akun Google Cloud Anda tidak dikenakan biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.

Jika Anda membuat project baru dan tidak lagi memerlukannya, hapus project tersebut.

Jika Anda menggunakan project yang sudah ada, lakukan hal berikut:

  1. Untuk menghapus cluster Anda, jalankan perintah berikut di Cloud Shell:

    gcloud container clusters delete cloud-trace-demo --zone us-central1-c

Langkah selanjutnya