Kemampuan observasi dengan Envoy
Dokumen ini menunjukkan cara membuat pelacakan dan logging untuk proxy Envoy. Artikel ini juga menunjukkan cara mengekspor informasi ke Cloud Trace dan Cloud Logging.
Dengan mesh layanan, Anda dapat mengamati traffic ke dan dari layanan, sehingga pemantauan dan proses debug yang lebih lengkap dapat dilakukan tanpa mengubah kode pada layanan itu sendiri. Dalam arsitektur proxy file bantuan 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 agar dapat digunakan lebih lanjut, seperti analisis data, pemberitahuan, dan pemecahan masalah.
Penyiapan demonstrasi
Dokumen ini menggunakan konfigurasi berikut untuk mendemonstrasikan perekaman aktivitas dan logging:
- Satu aplikasi yang memproses port HTTP dan menampilkan nama host instance virtual machine (VM) yang menyalurkan permintaan. Dalam diagram, aplikasi ini berada di pojok kanan atas, dengan 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. Dalam diagram, label ini diberi label VM Demo Compute Engine.
- Proxy file bantuan Envoy yang diinstal dan dikonfigurasi oleh Cloud Service Mesh. Dalam diagram, ini diberi label envoy.
- Aplikasi konsumen layanan, yang ditampilkan pada kotak di sebelah kiri, adalah
konsumen layanan HTTP yang berjalan di
10.10.10.10:80
.
Langkah-langkah berikut sesuai dengan label bernomor dalam diagram:
Cloud Service Mesh mengonfigurasi proxy Envoy untuk melakukan hal berikut:
- Melakukan load balancing terhadap traffic untuk layanan
10.10.10.10:80
. - Menyimpan informasi log akses untuk setiap permintaan yang diajukan untuk layanan ini.
- Membuat informasi pelacakan untuk layanan.
- Melakukan load balancing terhadap traffic untuk layanan
Setelah konsumen mengirimkan permintaan ke
10.10.10.10
, proxy file bantuan akan merutekan permintaan ke tujuan yang benar.Proxy file bantuan juga menghasilkan informasi telemetri yang diperlukan:
- Menambahkan entri ke log akses di disk lokal dengan informasi tambahan tentang permintaan tersebut.
- Membuat entri rekaman aktivitas dan mengirimkannya ke Rekaman Aktivitas menggunakan pelacakan OpenCensus Envoy.
Agen Logging mengekspor data ini ke Cloud Logging API sehingga data tersebut tersedia di antarmuka Cloud Logging.
Prasyarat
Sebelum menyelesaikan langkah-langkah penyiapan, pastikan hal berikut sudah dilakukan:
- Traffic Director API diaktifkan dan prasyarat lainnya terpenuhi, seperti yang dijelaskan dalam Persiapan menyiapkan VM dan workload tanpa proxy.
- Cloud Trace API diaktifkan.
- Akun layanan yang digunakan VM Compute Engine memiliki peran Pengelolaan Akses dan Identitas (IAM) berikut yang dikonfigurasi:
- Peran Agen Cloud Trace
(
roles/cloudtrace.agent
) - Peran Penulis Log
(
roles/logging.logWriter
)
- Peran Agen Cloud Trace
(
- Aturan firewall mengizinkan traffic ke VM yang Anda konfigurasikan sebagai bagian dari penyiapan ini.
Menyiapkan layanan demonstrasi dan Cloud Service Mesh
Dokumen ini menggunakan beberapa skrip shell untuk melakukan langkah-langkah yang diperlukan guna mengonfigurasi layanan demonstrasi. Tinjau skrip untuk memahami langkah-langkah spesifik yang dijalankannya.
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 meluncurkan Apache2 saat VM dimulai dan grup instance terkelola yang menggunakan template ini. Skrip meluncurkan satu instance tanpa mengaktifkan penskalaan otomatis.Gunakan Cloud Service Mesh untuk mengonfigurasi pemilihan rute 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.Mulai VM Compute Engine yang menjalankan konsumen layanan HTTP, dengan proxy file bantuan yang diinstal dan dikonfigurasi di VM. Dalam perintah berikut, ganti
PROJECT_ID
dengan ID project yang menjadi tujuan pengiriman informasi Rekaman Aktivitas. Project ini biasanya sama dengan project Google Cloud yang mencakup 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 untuk menggunakan Cloud Service Mesh.
Setelan konfigurasi tambahan berikut mengaktifkan perekaman aktivitas dan logging:
- Variabel metadata node bootstrap
TRAFFICDIRECTOR_ACCESS_LOG_PATH
danTRAFFICDIRECTOR_ENABLE_TRACING
memungkinkan logging dan pelacakan, seperti yang dijelaskan dalam Mengonfigurasi atribut bootstrap Envoy untuk Cloud Service Mesh. - Konfigurasi bootstrap statis memungkinkan ekspor informasi rekaman aktivitas 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 tahap ini, Envoy menghasilkan informasi pelacakan dan logging akses. Bagian berikut menjelaskan cara mengekspor log dan informasi rekaman aktivitas.
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 > Trace list).
Anda akan melihat rekaman aktivitas yang sesuai dengan permintaan yang Anda ajukan.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan Trace, lihat dokumentasi Cloud Trace.
Menyiapkan ekspor log akses ke Pencatatan
Pada tahap ini, Envoy harus mencatat informasi log akses ke disk lokal VM tempat Envoy berjalan. Untuk mengekspor data ini ke Logging, Anda harus menginstal agen Logging secara lokal. Hal ini memerlukan penginstalan dan konfigurasi agen Logging.
Menginstal agen Logging
Instal agen Logging di VM tempat informasi logging diekspor. Untuk contoh konfigurasi ini, VM-nya 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 bergantung pada parser yang didistribusikan dengan agen Logging versi saat ini. Namun, akan lebih sulit untuk memfilter dan memproses entri log teks mentah saat menggunakan opsi ini.
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
Mulai ulang agen; perubahan akan diterapkan saat agen dimulai:
sudo service google-fluentd restart
Mengekspor log Envoy sebagai teks terstruktur
Instal parser log akses Envoy dari GitHub:
sudo /opt/google-fluentd/embedded/bin/gem install fluent-plugin-envoy-parser
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
Mulai ulang agen; perubahan akan diterapkan saat agen dimulai:
sudo service google-fluentd restart
Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi agen Logging.
Memverifikasi konfigurasi
- Dari VM proxy file bantuan, buat permintaan ke layanan demonstrasi.
Tindakan ini akan membuat data log lokal baru. Misalnya, Anda dapat menjalankan
curl 10.10.10.10
. - 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 dalam beberapa project, perhatikan hal-hal berikut:
- Setiap Envoy harus dikonfigurasi dengan kredensial project tempat Envoy berjalan.
- Setiap Envoy mengirimkan data rekaman aktivitas ke project yang sesuai dengan kredensial yang dijalankannya.
- Anda dapat melihat span pelacakan untuk permintaan lintas project jika aplikasi Anda
mempertahankan nilai header HTTP
X-Cloud-Trace-Context
saat permintaan dibuat.
Kompatibilitas pelacakan dengan aplikasi gRPC tanpa proxy
Konfigurasi tracer OpenCensus Envoy memungkinkan pelacakan yang diekspor dari aplikasi gRPC tanpa proxy dan proxy Envoy sepenuhnya kompatibel dalam mesh layanan. Untuk kompatibilitas, 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 rekaman aktivitas atau logging tersedia, verifikasi hal berikut:
- Akun layanan untuk VM Compute Engine memiliki izin IAM dan Logging yang diperlukan, seperti yang ditentukan dalam prasyarat. Untuk mengetahui informasi tentang izin Trace IAM, lihat Kontrol akses. Untuk mengetahui informasi tentang izin Logging, lihat Kontrol akses.
- Untuk logging: Pastikan tidak ada error di
/var/log/google-fluentd/google-fluentd.log
. - Untuk logging: Pastikan entri baru muncul di file log akses lokal saat permintaan dikeluarkan.
Langkah selanjutnya
- Untuk menemukan informasi terkait, lihat Kemampuan observasi dengan aplikasi gRPC tanpa proxy.
- Untuk menemukan informasi pemecahan masalah Cloud Service Mesh umum, lihat Memecahkan masalah deployment yang menggunakan Envoy.