apigeectl diagnostic
.
Data Sistem apa yang diambil?
Pengumpul diagnostik menangkap jenis data berikut:
- Mengubah level Log.
- Jstack
- yaml konfigurasi POD.
- {i>Output<i} PS -ef.
- dump TCP.
- Output TERATAS.
Apa yang terjadi pada data?
Saat kolektor Diagnostik mengambil data, data akan diupload ke bucket penyimpanan di project Google Cloud Anda. Anda dapat melihat data yang disimpan di Google Cloud Platform: browser Cloud Storage.
Secara opsional, Anda dapat memilih untuk membagikan data ini kepada Dukungan Google Apigee saat membuat tiket dukungan.
Prasyarat untuk menjalankan kolektor Diagnostik
Sebelum menggunakan kolektor Diagnostik, Anda harus menyelesaikan prasyarat berikut:
Bucket Google Cloud Storage
Membuat bucket Google Cloud Storage dengan nama unik di project Google Cloud Anda. Anda dapat membuat dan mengelola bucket dengan perintah gsutil
atau di Google Cloud Platform: browser Cloud Storage.
Contoh:
gsutil mb gs://apigee_diagnostic_data
Creating gs://apigee_diagnostic_data/...
Lihat Membuat bucket penyimpanan untuk mengetahui petunjuknya.
Akun layanan
Buat akun layanan dengan peran Storage Admin (roles/storage.admin
) di project Anda, dan download file kunci .json
akun layanan.
Akun layanan dapat memiliki nama unik apa pun. Panduan ini menggunakan "apigee-diagnostic
"
untuk nama akun layanan.
Contoh:
gcloud config set project ${PROJECT_ID}
gcloud iam service-accounts create apigee-diagnostic
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:apigee-diagnostic@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.admin"
gcloud iam service-accounts keys create ${PROJECT_ID}-apigee-diagnostic.json \ --iam-account=apigee-diagnostic@${PROJECT_ID}.iam.gserviceaccount.com
Lihat:
- Membuat dan mengelola akun layanan.
- Membuat dan mengelola kunci akun layanan.
- Memahami peran: Peran Cloud Storage.
Menggunakan kolektor Diagnostik
Urutan untuk menggunakan kolektor Diagnostik adalah:
- Konfigurasikan stanza Diagnostik di file
overrides.yaml
untuk memilih jenis informasi, penampung Apigee, dan masing-masing pod yang data diagnostiknya diinginkan. Lihat Mengonfigurasioverrides.yaml
untuk kolektor Diagnostik. - Jalankan kolektor Diagnostik dengan perintah
apigeectl
berikut.apigeectl diagnostic -f OVERRIDES_FILE
Dengan OVERRIDES_FILE adalah jalur ke file
overrides.yaml
Anda. - Periksa log:
- Dapatkan pod di namespace
apigee-diagnostic
.kubectl get pods -n apigee-diagnostic
- Catat pod dengan nama yang berisi
diagnostic-collector
- Periksa log dengan perintah berikut:
kubectl -n apigee-diagnostic logs -f POD_NAME
Dengan POD_NAME adalah nama pod kolektor Diagnostik.
Anda juga dapat melihat log yang dikumpulkan di Google Cloud Platform: browser Cloud Storage.
- Dapatkan pod di namespace
- Setelah Anda mengumpulkan data, hapus pengumpul Diagnostik. Anda tidak dapat menjalankannya lagi hingga Anda menghapusnya.
apigeectl diagnostic delete -f OVERRIDES_FILE
Mengonfigurasi overrides.yaml
untuk kolektor Diagnostik
Sebelum dapat menjalankan kolektor Diagnostik, Anda harus mengonfigurasinya dalam file overrides.yaml
.
Untuk referensi lengkap tentang properti konfigurasi diagnostic
, lihat
Referensi properti konfigurasi:
diagnostic
.
Properti wajib
Properti berikut diperlukan agar kolektor Diagnostik dapat dijalankan.
diagnostic.serviceAccountPath
: Jalur ke file kunci akun layanan untuk akun layanan dengan peran Storage Admin di Prasyarat.diagnostic.operation
: Menentukan apakah akan mengumpulkan semua statistik atau hanya log.Nilai adalah:
"ALL"
atau"LOGGING"
Jika Anda menetapkan
diagnostic.operation
ke"LOGGING"
, properti berikut wajib diisi:diagnostic.bucket
: Nama bucket Google Cloud Storage tempat data diagnostik Anda akan disimpan. Ini adalah bucket yang Anda buat dalam Prasyarat.diagnostic.container
: Menentukan jenis pod tempat Anda mengambil data. Nilainya dapat berupa salah satu dari:Nilai container
Komponen Apigee Namespace Kubernetes Contoh nama pod dalam penampung ini apigee-cassandra
Cassandra apigee
apigee-cassandra-default-0
istio-proxy
Ingress Istio istio-system
istio-ingressgateway-696879cdf8-9zzzf
apigee-mart-server
MART apigee
apigee-mart-hybrid-example-d89fed1-151-jj2ux-l7nlb
apigee-runtime
Message Processor apigee
apigee-runtime-hybrid-example-3b2ebf3-151-s64bh-g9qmv
apigee-synchronizer
Penyelaras apigee
apigee-synchronizer-hybrid-example-3b2ebf3-151-xx4z6cg78
apigee-udca
UDCA apigee
apigee-udca-hybrid-example-3b2ebf3-151-q4g2c-vnzg9
apigee-watcher
Pengamat apigee
apigee-watcher-hybrid-example-d89fed1-151-cpu3s-sxxdf
diagnostic.namespace
: Namespace Kubernetes tempat pod yang datanya Anda kumpulkan berada. Namespace harus benar untuk penampung yang Anda tentukan dengandiagnostic.container
.diagnostic.podNames
: Nama masing-masing pod tempat Anda ingin mengumpulkan data diagnostik. Contoh:diagnostic: … podNames: - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-2wcjn - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-6xzn2
Properti hanya diperlukan jika operasi disetel ke LOGGING
Properti berikut hanya diperlukan saat menjalankan kolektor Diagnostik dengan
diagnostic.operation
adalah LOGGING
.
diagnostic.loggerNames
: Menentukan menurut nama logger yang akan dikumpulkan datanya. Untuk Apigee Hybrid versi 1.6.0, satu-satunya nilai yang didukung adalahALL
, yang berarti semua logger. Contoh:diagnostic: … loggingDetails: loggerNames: - ALL
diagnostic.logLevel
: Menentukan perincian data logging yang akan dikumpulkan. Di Apigee Hybrid 1.6, HanyaFINE
yang didukung.diagnostic.logDuration
: Durasi data log yang dikumpulkan dalam milidetik. Nilai standarnya adalah30000
.
Properti opsional
Properti berikut bersifat opsional.
diagnostic.tcpDumpDetails.maxMsgs
: Menetapkan jumlah maksimum pesantcpDump
yang akan dikumpulkan. Apigee merekomendasikan nilai maksimum tidak lebih besar dari1000
.diagnostic.tcpDumpDetails.timeoutInSeconds
: Menetapkan jumlah waktu dalam detik untuk menunggutcpDump
menampilkan pesan.diagnostic.threadDumpDetails.delayInSeconds
: Penundaan dalam detik antara pengumpulan setiap thread dump. Harus digunakan dengandiagnostic.threadDumpDetails.iterations
.diagnostic.threadDumpDetails.iterations
: Jumlah iterasi dump thread jstack yang akan dikumpulkan. Harus digunakan dengandiagnostic.threadDumpDetails.delayInSeconds
.
Contoh umum
Berikut adalah contoh stanza diagnostic
yang menampilkan semua kemungkinan entri:
diagnostic: # required properties: serviceAccountPath: "service-accounts/apigee-diagnostics.json" operation: "ALL" bucket: "diagnostics_data" container: "apigee-runtime" namespace: "apigee" podNames: - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-2wcjn - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-6xzn2 # required if operation is Logging loggingDetails: loggerNames: - ALL logLevel: FINE logDuration: 30000 # optional properties: tcpDumpDetails: maxMsgs: 10 timeoutInSeconds: 100 threadDumpDetails: iterations: 5 delayInSeconds: 2
Kasus penggunaan umum
Contoh berikut menunjukkan cara mengonfigurasi dan menggunakan kolektor Diagnostik dalam beberapa situasi umum.
Latensi Proxy Tinggi
Dalam hal ini, Apigee-runtime memerlukan waktu lama untuk memproses permintaan, sehingga pelanggan melihat latensi proxy yang tinggi. Anda perlu mengumpulkan output Jstack dan TOP.
- Pilih 2 pod runtime mana saja.
- Buat stanza
diagnostic
dengan struktur berikut:diagnostic: serviceAccountPath: "service-accounts/apigee-diagnostics.json" operation: "ALL" bucket: "diagnostics_data" container: "apigee-runtime" namespace: "apigee" podNames: - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-2wcjn - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-6xzn2 tcpDumpDetails: maxMsgs: 10 threadDumpDetails: iterations: 15 delayInSeconds: 1
- Setelah mengonfigurasi stanza
diagnostic
, jalankan kolektor Diagnostik.apigeectl diagnostic -f OVERRIDES_FILE
- Kumpulkan log dan hapus kolektor Diagnostik.
apigeectl diagnostic delete -f OVERRIDES_FILE
Masalah jaringan / konektivitas
Anda perlu menjalankan diagnostik di apigee-runtime serta pod gateway masuk.
- Pilih 2 pod runtime mana saja.
- Buat stanza
diagnostic
dengan struktur berikut:diagnostic: serviceAccountPath: "service-accounts/apigee-diagnostics.json" operation: "ALL" bucket: "diagnostics_data" container: "apigee-runtime" namespace: "apigee" podNames: - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-2wcjn - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-6xzn2 tcpDumpDetails: maxMsgs: 1000
- Setelah mengonfigurasi stanza
diagnostic
, jalankan kolektor Diagnostik.apigeectl diagnostic -f OVERRIDES_FILE
- Kumpulkan log dan hapus kolektor Diagnostik.
apigeectl diagnostic delete -f OVERRIDES_FILE
- Pilih dua pod dari gateway ingress Istio.
- Konfigurasi ulang stanza
diagnostic
Anda dengan pod ingress Istio:diagnostic: serviceAccountPath: "service-accounts/apigee-diagnostics.json" operation: "ALL" bucket: "diagnostics_data" container: "istio-proxy" namespace: "istio-system" podNames: - istio-ingressgateway-696879cdf8-9zzzf - istio-ingressgateway-696879cdf8-6abc7 tcpDumpDetails: maxMsgs: 1000
- Setelah mengonfigurasi stanza
diagnostic
, jalankan kolektor Diagnostik.apigeectl diagnostic -f OVERRIDES_FILE
- Kumpulkan log dan hapus kolektor Diagnostik.
apigeectl diagnostic delete -f OVERRIDES_FILE
Proxy menampilkan error tak terduga atau kontrak baru tidak diterapkan
Dalam hal ini, Anda perlu mengubah level log agar melakukan debug selama minimal 5 menit, atau bahkan 10 menit seperti dalam contoh ini. Hal ini akan menambah jumlah log, tetapi informasi yang berguna akan dicatat. Anda akan menjalankan kolektor Diagnostik dua kali, sekali di runtime Apigee, lalu di sinkronisasi Apigee.
- Pilih 2 pod runtime mana saja.
- Buat stanza
diagnostic
dengan struktur berikut:diagnostic: serviceAccountPath: "service-accounts/apigee-diagnostics.json" operation: "LOGGING" bucket: "diagnostics_data" namespace: "apigee" container: "apigee-runtime" podNames: - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-2wcjn - apigee-runtime-hybrid-example-3b2ebf3-150-8vfoj-6xzn2 loggingDetails: loggerNames: - ALL logLevel: FINE logDuration: 60000
- Setelah mengonfigurasi stanza
diagnostic
, jalankan kolektor Diagnostik.apigeectl diagnostic -f OVERRIDES_FILE
- Kumpulkan log dan hapus kolektor Diagnostik.
apigeectl diagnostic delete -f OVERRIDES_FILE
- Pilih 2 pod sinkronisasi apa pun.
- Buat stanza
diagnostic
dengan struktur berikut:diagnostic: serviceAccountPath: "service-accounts/apigee-diagnostics.json" operation: "LOGGING" bucket: "diagnostics_data" namespace: "apigee" container: "apigee-synchronizer" podNames: - apigee-synchronizer-hybrid-example-3b2ebf3-150-xx4z-6cg78 - apigee-synchronizer-hybrid-example-3b2ebf3-150-xx4z-1a2b3 loggingDetails: loggerNames: - ALL logLevel: FINE logDuration: 60000
- Setelah mengonfigurasi stanza
diagnostic
, jalankan kolektor Diagnostik.apigeectl diagnostic -f OVERRIDES_FILE
- Kumpulkan log dan hapus kolektor Diagnostik.
apigeectl diagnostic delete -f OVERRIDES_FILE