Kemampuan observasi dengan Envoy

Dokumen ini menunjukkan cara membuat tracing dan logging untuk Envoy {i>proxy<i}. Laporan ini juga menunjukkan kepada Anda cara mengekspor informasi ke Cloud Trace dan Cloud Logging.

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

Penyiapan demo

Dokumen ini menggunakan konfigurasi berikut untuk mendemonstrasikan pelacakan dan logging:

  • Sebuah aplikasi yang memantau porta HTTP dan mengembalikan nama host instance virtual machine (VM) yang menyampaikan permintaan. Pada diagram, aplikasi ini berada di sudut kanan atas, diberi label Layanan HTTP (10.10.10.10:80). Satu atau beberapa VM dapat menyediakan layanan ini.
  • Satu VM Compute Engine yang menjalankan konsumen layanan ini. Di beberapa diagram, ini diberi label Demo Compute Engine VM.
  • Proxy file bantuan Envoy yang diinstal dan dikonfigurasi oleh dan Cloud Service Mesh. Dalam diagram, nilai 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 untuk 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:

    • Traffic load balancing untuk layanan 10.10.10.10:80.
    • Menyimpan informasi log akses untuk setiap permintaan yang dikeluarkan untuk layanan ini.
    • Membuat informasi pelacakan untuk layanan.
  2. Setelah konsumen mengirimkan permintaan ke 10.10.10.10, proxy file bantuan mengarahkan permintaan ke tujuan yang benar.

  3. Proxy file bantuan juga menghasilkan informasi telemetri yang diperlukan:

    1. Menambahkan entri ke log akses pada {i>disk<i} lokal dengan informasi tambahan tentang permintaan tersebut.
    2. Membuat entri trace dan mengirimkannya ke Trace dengan menggunakan pelacakan OpenCensus Envoy.
  4. Agen Logging mengekspor data ini ke Cloud Logging API agar data tersedia di antarmuka Cloud Logging.

Prasyarat

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

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

Menyiapkan layanan demonstrasi dan Cloud Service Mesh

Dokumen ini menggunakan beberapa skrip {i>shell<i} untuk melakukan langkah-langkah yang diperlukan untuk melakukan konfigurasi layanan demonstrasi. Tinjau skrip untuk memahami langkah-langkah spesifik yang mereka lakukan.

  1. Mulai VM Compute Engine dan konfigurasikan 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 diluncurkan apache2 saat VM dimulai dan grup instance terkelola yang menggunakan {i>template<i}. Skrip meluncurkan satu instance tanpa mengaktifkan penskalaan otomatis.

  2. Gunakan Cloud Service Mesh untuk mengonfigurasi perutean bagi 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 fungsi parameter untuk layanan terkelola Cloud Service Mesh.

  3. Mulai VM Compute Engine yang menjalankan konsumen HTTP lokal, dengan proxy file bantuan yang diinstal dan dikonfigurasi di VM. Di kolom perintah berikut, ganti PROJECT_ID dengan project ID yang menjadi tujuan pengiriman informasi Trace. Ini adalah biasanya project Google Cloud yang sama dengan VM Anda.

    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 memiliki Proxy Envoy yang telah dikonfigurasi sebelumnya untuk menggunakan Cloud Service Mesh.

Setelan konfigurasi tambahan berikut mengaktifkan perekaman aktivitas dan logging:

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

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

curl http://10.10.10.10

Pada tahap ini, Envoy menghasilkan informasi logging akses dan pelacakan. Tujuan bagian berikut menjelaskan cara mengekspor log dan informasi pelacakan.

Menyiapkan ekspor trace ke Cloud Trace

Konfigurasi bootstrap Envoy yang Anda buat saat menjalankan Skrip setup-demo-client.sh sudah cukup untuk membuat informasi pelacakan. Semua konfigurasi lainnya bersifat opsional. Jika Anda ingin mengonfigurasi parameter, lihat Halaman konfigurasi OpenCensus Envoy dan mengubah opsi pelacakan dalam konfigurasi bootstrap Envoy.

Setelah mengeluarkan permintaan contoh ke server demonstrasi (curl 10.10.10.10), di Konsol Google Cloud, buka antarmuka Trace (Trace &gt; Daftar trace). Anda akan melihat data trace yang sesuai dengan permintaan yang Anda ajukan.

Untuk 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 VM tempat VM tersebut dijalankan. Untuk mengekspor catatan ini ke Logging, Anda dapat harus menginstal agen Logging secara lokal. Ini Anda perlu menginstal dan mengonfigurasi agen Logging.

Menginstal agen Logging

Instal agen Logging pada VM yang informasi logging diekspor. Untuk contoh konfigurasi ini, VM-nya 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 informasi selengkapnya, lihat Instal 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 dari agen Logging. Namun, lebih sulit untuk memfilter dan memproses entri log teks mentah ketika menggunakan opsi ini.

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

    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. Menginstal 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 informasi selengkapnya, lihat Konfigurasi Agen Logging.

Memverifikasi konfigurasi

  1. Dari VM proxy file bantuan, buat permintaan ke layanan demonstrasi. Tindakan ini akan membuat catatan log lokal baru. Misalnya, Anda dapat menjalankan curl 10.10.10.10.
  2. Di Konsol Google Cloud, buka Logging &gt; Logs Explorer. Di menu drop-down, pilih jenis log envoy-access. Anda melihat entri log untuk permintaan terbaru dalam struktur data tidak terstruktur atau tergantung pada jenis konfigurasi yang Anda pilih sebelumnya.

Pemecahan masalah

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

Mengonfigurasi perekaman aktivitas di beberapa project

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

  • Setiap Envoy harus dikonfigurasi dengan kredensial project yang sedang berjalan.
  • Setiap Envoy mengirimkan data pelacakan ke project yang sesuai dengan kredensial yang menjalankannya.
  • Anda dapat melihat span pelacakan untuk permintaan lintas project jika aplikasi Anda mempertahankan nilai header HTTP X-Cloud-Trace-Context kapan permintaan dibuat.

Melacak kompatibilitas dengan aplikasi gRPC tanpa proxy

Konfigurasi tracer OpenCensus Envoy memungkinkan trace diekspor dari layanan tanpa proxy Aplikasi gRPC dan proxy Envoy agar kompatibel sepenuhnya dalam satu layanan {i>mesh.<i} Untuk kompatibilitas, bootstrap Envoy harus mengonfigurasi konteks pelacakan 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 selesai, tetapi Anda tidak melihat entri logging atau pelacakan pastikan hal berikut:

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

Langkah selanjutnya