Kemampuan observasi dengan Envoy

Dokumen ini menunjukkan cara membuat rekaman aktivitas dan logging untuk proxy Envoy. Bagian ini juga menunjukkan cara mengekspor informasi ke Cloud Trace dan Cloud Logging.

Dengan menggunakan mesh layanan, Anda dapat mengamati traffic ke dan dari layanan, yang memungkinkan pemantauan dan pen-debug-an yang lebih kaya tanpa perubahan kode dalam layanan itu sendiri. Dalam arsitektur proxy sidecar yang digunakan Cloud Service Mesh, proxy adalah komponen yang memproses permintaan dan memberikan informasi telemetri yang diperlukan. Informasi telemetri harus dikumpulkan dan disimpan di lokasi terpusat untuk digunakan lebih lanjut, seperti analisis data, pemberitahuan, dan pemecahan masalah.

Penyiapan demonstrasi

Dokumen ini menggunakan konfigurasi berikut untuk menunjukkan pelacakan dan pencatatan log:

  • Satu aplikasi yang memproses port HTTP dan menampilkan nama host instance virtual machine (VM) yang melayani permintaan. Dalam diagram, aplikasi ini berada di pojok kanan atas, berlabel HTTP service(s) (10.10.10.10:80). Satu atau beberapa VM dapat menyediakan layanan ini.
  • Satu VM Compute Engine yang menjalankan konsumen layanan ini. Dalam diagram, VM ini diberi label Demo Compute Engine VM.
  • Proxy sidecar Envoy yang diinstal dan dikonfigurasi oleh Cloud Service Mesh. Dalam diagram, ini diberi label envoy.
  • Aplikasi konsumen layanan, yang ditampilkan dalam kotak di sebelah kiri, adalah konsumen layanan HTTP yang berjalan di 10.10.10.10:80.
Aplikasi demonstrasi untuk logging dan pemantauan Envoy.
Aplikasi demonstrasi untuk logging dan pemantauan Envoy (klik untuk memperbesar)

Langkah-langkah berikut sesuai dengan label bernomor dalam diagram:

  1. Cloud Service Mesh mengonfigurasi proxy Envoy untuk melakukan hal berikut:

    • Lakukan load balancing traffic untuk layanan 10.10.10.10:80.
    • Menyimpan informasi log akses untuk setiap permintaan yang dikeluarkan untuk layanan ini.
    • Buat informasi pelacakan untuk layanan.
  2. Setelah konsumen mengirim permintaan ke 10.10.10.10, proxy sidecar merutekan permintaan ke tujuan yang benar.

  3. Proxy sidecar juga menghasilkan informasi telemetri yang diperlukan:

    1. Menambahkan entri ke log akses di disk lokal dengan informasi tambahan tentang permintaan.
    2. Membuat entri rekaman aktivitas dan mengirimkannya ke Trace menggunakan rekaman aktivitas OpenCensus Envoy.
  4. Agen Logging mengekspor data ini ke Cloud Logging API sehingga data tersedia di antarmuka Cloud Logging.

Prasyarat

Sebelum Anda menyelesaikan langkah-langkah penyiapan, pastikan hal berikut telah dilakukan:

  1. Traffic Director API diaktifkan dan prasyarat lainnya terpenuhi, seperti yang dijelaskan dalam Bersiap untuk melakukan penyiapan dengan workload VM dan tanpa proxy.
  2. Cloud Trace API diaktifkan.
  3. Akun layanan yang digunakan VM Compute Engine telah mengonfigurasi peran Identity and Access Management (IAM) berikut:
  4. Aturan firewall mengizinkan traffic ke VM yang Anda konfigurasi sebagai bagian dari penyiapan ini.

Menyiapkan layanan demonstrasi dan Cloud Service Mesh

Dokumen ini menggunakan beberapa skrip shell untuk melakukan langkah-langkah yang diperlukan untuk mengonfigurasi layanan demonstrasi. Tinjau skrip untuk memahami langkah-langkah spesifik yang dilakukannya.

  1. Mulai VM Compute Engine dan konfigurasi layanan HTTP di VM:

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_service.sh
    chmod 755 setup_demo_service.sh && ./setup_demo_service.sh
    

    Skrip setup_demo_service.sh membuat template VM yang meluncurkan apache2 saat VM dimulai dan grup instance terkelola yang menggunakan template ini. Skrip meluncurkan satu instance tanpa mengaktifkan penskalaan otomatis.

  2. Gunakan Cloud Service Mesh untuk mengonfigurasi perutean untuk layanan 10.10.10.10:

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_trafficdirector.sh
    chmod 755 setup_demo_trafficdirector.sh && ./setup_demo_trafficdirector.sh
    

    Skrip setup_demo_trafficdirector.sh mengonfigurasi parameter yang diperlukan untuk layanan terkelola Cloud Service Mesh.

  3. Mulai VM Compute Engine yang menjalankan konsumen layanan HTTP, dengan proxy sidecar yang diinstal dan dikonfigurasi di VM. Dalam perintah berikut, ganti PROJECT_ID dengan project ID yang akan dikirimi informasi Trace. Biasanya, project ini sama dengan project tempat VM Anda berada. Google Cloud

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_client.sh
    chmod 755 setup_demo_client.sh && ./setup_demo_client.sh PROJECT_ID
    

    Skrip setup_demo_client.sh membuat VM Compute Engine yang telah dikonfigurasi sebelumnya dengan proxy Envoy untuk menggunakan Cloud Service Mesh.

Setelan konfigurasi tambahan berikut memungkinkan pelacakan dan logging:

  • Variabel metadata node bootstrap TRAFFICDIRECTOR_ACCESS_LOG_PATH dan TRAFFICDIRECTOR_ENABLE_TRACING memungkinkan logging dan pelacakan, seperti yang dijelaskan dalam Mengonfigurasi atribut bootstrap Envoy untuk Cloud Service Mesh.
  • Konfigurasi bootstrap statis memungkinkan ekspor informasi trace ke Trace menggunakan OpenCensus.

Setelah menjalankan skrip ini, Anda dapat login ke VM td-observability-demo-client dan mengakses layanan HTTP yang tersedia di 10.10.10.10:

curl http://10.10.10.10

Pada titik ini, Envoy akan membuat informasi logging akses dan pelacakan. Bagian berikut menjelaskan cara mengekspor log dan informasi pelacakan.

Menyiapkan ekspor rekaman aktivitas ke Cloud Trace

Konfigurasi bootstrap Envoy yang Anda buat saat menjalankan skrip setup-demo-client.sh sudah cukup untuk menghasilkan informasi pelacakan. Semua konfigurasi lainnya bersifat opsional. Jika Anda ingin mengonfigurasi parameter tambahan, lihat halaman konfigurasi OpenCensus Envoy dan ubah opsi pelacakan dalam konfigurasi bootstrap Envoy.

Setelah Anda mengirimkan permintaan contoh ke server demonstrasi (curl 10.10.10.10), di konsol Google Cloud , buka antarmuka Trace (Trace > Daftar trace). Anda akan melihat rekaman aktivitas yang sesuai dengan permintaan yang Anda kirimkan.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan Trace, lihat dokumentasi Cloud Trace.

Menyiapkan ekspor log akses ke Logging

Pada tahap ini, Envoy harus mencatat informasi log akses ke disk lokal VM tempatnya berjalan. Untuk mengekspor data ini ke Logging, Anda harus menginstal agen Logging secara lokal. Tindakan ini memerlukan penginstalan dan konfigurasi agen Logging.

Menginstal agen Logging

Instal agen Logging di VM tempat informasi logging diekspor. Untuk konfigurasi contoh ini, VM adalah td-observability-demo-vm.

curl -sSO https://dl.google.com/cloudagents/add-logging-agent-repo.sh
sudo bash add-logging-agent-repo.sh --also-install

Untuk mengetahui informasi selengkapnya, lihat Menginstal agen Cloud Logging di satu VM.

Mengonfigurasi agen Logging

Anda dapat mengekspor log Envoy sebagai teks tidak terstruktur atau terstruktur.

Mengekspor log Envoy sebagai teks tidak terstruktur

Opsi ini mengekspor data log dari log akses ke Cloud Logging sebagai teks mentah. Setiap entri dalam log akses diekspor sebagai satu entri ke Logging. Konfigurasi ini lebih mudah diinstal karena mengandalkan parser yang didistribusikan dengan versi Agen Logging saat ini. Namun, opsi ini lebih sulit digunakan untuk memfilter dan memproses entri log teks mentah.

  1. Download dan instal file konfigurasi ekspor tidak terstruktur log akses Envoy:

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/envoy_access_fluentd_unstructured.conf
    sudo cp envoy_access_fluentd_unstructured.conf /etc/google-fluentd/config.d/envoy_access.conf
    
  2. Mulai ulang agen; perubahan akan diterapkan saat agen dimulai:

    sudo service google-fluentd restart
    

Mengekspor log Envoy sebagai teks terstruktur

  1. Instal parser log akses Envoy dari GitHub:

    sudo /opt/google-fluentd/embedded/bin/gem install fluent-plugin-envoy-parser
    
  2. Download dan instal file konfigurasi untuk mengekspor log akses Envoy dalam format terstruktur:

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/envoy_access_fluentd_structured.conf
    sudo cp envoy_access_fluentd_structured.conf /etc/google-fluentd/config.d/envoy_access.conf
    
  3. Mulai ulang agen; perubahan akan diterapkan saat agen dimulai:

    sudo service google-fluentd restart
    

Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi agen Logging.

Memverifikasi konfigurasi

  1. Dari VM proxy sidecar, buat permintaan ke layanan demonstrasi. Tindakan ini akan membuat rekaman log lokal baru. Misalnya, Anda dapat menjalankan curl 10.10.10.10.
  2. Di konsol Google Cloud , buka Logging > Logs Explorer. Di menu drop-down, pilih jenis log envoy-access. Anda akan melihat entri log untuk permintaan terbaru dalam format tidak terstruktur atau terstruktur, bergantung pada jenis konfigurasi yang Anda pilih sebelumnya.

Pemecahan masalah

Baca bagian berikut untuk mengetahui informasi tentang cara memecahkan berbagai masalah terkait kemampuan observasi dengan Envoy.

Mengonfigurasi pelacakan di beberapa project

Jika Anda ingin melacak permintaan di seluruh Envoy yang di-deploy di beberapa project, perhatikan hal berikut:

  • Setiap Envoy harus dikonfigurasi dengan kredensial project tempat Envoy tersebut berjalan.
  • Setiap Envoy mengirimkan data rekaman aktivitas ke project yang sesuai dengan kredensial yang digunakannya.
  • Anda dapat melihat rentang rekaman aktivitas untuk permintaan lintas project jika aplikasi Anda mempertahankan nilai header HTTP X-Cloud-Trace-Context saat permintaan dibuat.

Kompatibilitas rekaman aktivitas dengan aplikasi gRPC tanpa proxy

Konfigurasi pelacak OpenCensus Envoy memungkinkan trace yang diekspor dari aplikasi gRPC tanpa proxy dan proxy Envoy agar sepenuhnya kompatibel dalam mesh layanan. Agar kompatibel, bootstrap Envoy harus mengonfigurasi konteks rekaman aktivitas untuk menyertakan format rekaman aktivitas GRPC_TRACE_BIN dalam OpenCensusConfig-nya, sebagai berikut:

tracing:
  http:
      name: envoy.tracers.opencensus
      typed_config:
        "@type": type.googleapis.com/envoy.config.trace.v2.OpenCensusConfig
        stackdriver_exporter_enabled: "true"
        stackdriver_project_id: "PROJECT_ID"
        incoming_trace_context: ["CLOUD_TRACE_CONTEXT", "GRPC_TRACE_BIN"]
        outgoing_trace_context: ["CLOUD_TRACE_CONTEXT", "GRPC_TRACE_BIN"]

Jika konfigurasi sudah selesai, tetapi Anda tidak melihat entri logging atau rekaman aktivitas yang tersedia, verifikasi hal berikut:

  1. Akun layanan untuk VM Compute Engine memiliki izin IAM Trace dan Logging yang diperlukan, seperti yang ditentukan dalam prasyarat. Untuk mengetahui informasi tentang izin IAM Trace, lihat Kontrol akses. Untuk mengetahui informasi tentang izin Logging, lihat Kontrol akses.
  2. Untuk logging: Pastikan tidak ada error di /var/log/google-fluentd/google-fluentd.log.
  3. Untuk logging: Pastikan entri baru muncul di file log akses lokal saat permintaan dikeluarkan.

Langkah berikutnya