apigeectl diagnostic.
Data Sistem apa yang diambil?
Pengumpul diagnostik merekam jenis data berikut:
- Mengubah Level log.
- Jstack.
- YAML konfigurasi POD.
- Output PS -ef.
- TCP dump.
- Output TOP.
Apa yang terjadi pada data?
Saat pengumpul Diagnostik merekam data, data tersebut akan diupload ke bucket penyimpanan di project Google Cloud Anda. Anda dapat melihat data yang disimpan di Google Cloud Platform: Browser Cloud Storage.
Anda dapat memilih untuk membagikan data ini kepada Dukungan Google Apigee saat membuat tiket dukungan.
Prasyarat untuk menjalankan Pengumpul diagnostik
Sebelum menggunakan Pengumpul diagnostik, Anda harus menyelesaikan prasyarat berikut:
Bucket Google Cloud Storage
Buat bucket Google Cloud Storage dengan nama unik di project Google Cloud Anda. Anda dapat
membuat dan mengelola bucket dengan perintah gcloud storage atau di
Google Cloud
Platform: Browser Cloud Storage.
Contoh:
gcloud storage buckets create 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, lalu 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.comLihat:
- Membuat dan mengelola akun layanan.
- Membuat dan mengelola kunci akun layanan.
- Memahami peran: Peran Cloud Storage.
Menggunakan Pengumpul diagnostik
Urutan untuk menggunakan Pengumpul diagnostik adalah:
- Konfigurasi stanza Diagnostik dalam file
overrides.yamlAnda untuk memilih jenis informasi, penampung Apigee, dan pod individual yang ingin Anda dapatkan data diagnostiknya. Lihat Mengonfigurasioverrides.yamluntuk Pengumpul diagnostik. - Jalankan pengumpul Diagnostik dengan perintah
apigeectlberikut.apigeectl diagnostic -f OVERRIDES_FILE
Dengan OVERRIDES_FILE adalah jalur ke file
overrides.yamlAnda. - 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 pengumpul 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 Pengumpul diagnostik
Sebelum dapat menjalankan Pengumpul diagnostik, Anda harus mengonfigurasinya di file
overrides.yaml.
Untuk referensi lengkap properti konfigurasi diagnostic, lihat
Referensi properti konfigurasi:
diagnostic.
Properti wajib
Properti berikut diperlukan agar pengumpul Diagnostik dapat berjalan.
diagnostic.serviceAccountPath: Jalur ke file kunci akun layanan untuk akun layanan dengan peran Admin Storage di Prasyarat.diagnostic.operation: Menentukan apakah akan mengumpulkan semua statistik atau hanya log.Nilainya adalah:
"ALL"atau"LOGGING"Jika Anda menetapkan
diagnostic.operationke"LOGGING", properti berikut diwajibkan:diagnostic.bucket: Nama bucket penyimpanan Google Cloud tempat data diagnostik Anda akan disimpan. Ini adalah bucket yang Anda buat di Prasyarat.diagnostic.container: Ini menentukan jenis pod yang Anda gunakan untuk merekam data. Nilainya dapat berupa salah satu dari:Nilai containerKomponen Apigee Namespace Kubernetes Contoh nama pod dalam penampung ini apigee-cassandraCassandra apigeeapigee-cassandra-default-0istio-proxyIngress Istio istio-systemistio-ingressgateway-696879cdf8-9zzzfapigee-mart-serverMART apigeeapigee-mart-hybrid-example-d89fed1-151-jj2ux-l7nlbapigee-runtimeMessage Processor apigeeapigee-runtime-hybrid-example-3b2ebf3-151-s64bh-g9qmvapigee-synchronizerPenyinkron apigeeapigee-synchronizer-hybrid-example-3b2ebf3-151-xx4z6cg78apigee-udcaUDCA apigeeapigee-udca-hybrid-example-3b2ebf3-151-q4g2c-vnzg9apigee-watcherPengamat apigeeapigee-watcher-hybrid-example-d89fed1-151-cpu3s-sxxdfdiagnostic.namespace: Namespace Kubernetes tempat pod yang datanya Anda kumpulkan berada. Namespace harus benar untuk penampung yang Anda tentukan dengandiagnostic.container.diagnostic.podNames: Nama setiap 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 yang hanya diperlukan jika operasi ditetapkan ke LOGGING
Properti berikut hanya diperlukan saat menjalankan Pengumpul diagnostik dengan
diagnostic.operation adalah LOGGING.
diagnostic.loggerNames: Menentukan berdasarkan nama logger mana 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, hanyaFINEyang didukung.diagnostic.logDuration: Durasi dalam milidetik data log yang dikumpulkan. Nilai umumnya adalah30000.
Properti opsional
Properti berikut bersifat opsional.
diagnostic.tcpDumpDetails.maxMsgs: Menetapkan jumlah maksimum pesantcpDumpyang akan dikumpulkan. Apigee merekomendasikan nilai maksimum tidak lebih besar dari1000.diagnostic.tcpDumpDetails.timeoutInSeconds: Menetapkan jumlah waktu dalam detik untuk menunggutcpDumpmenampilkan pesan.diagnostic.threadDumpDetails.delayInSeconds: Penundaan dalam detik antara pengumpulan setiap dump thread. Harus digunakan dengandiagnostic.threadDumpDetails.iterations.diagnostic.threadDumpDetails.iterations: Jumlah iterasi jstack thread dump 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 Pengumpul diagnostik dalam beberapa situasi umum.
Latensi Proxy Tinggi
Dalam hal ini, Apigee-runtime membutuhkan waktu yang lama untuk memproses permintaan, sehingga menyebabkan pelanggan melihat latensi proxy yang tinggi. Anda perlu mengumpulkan output Jstack dan TOP.
- Pilih 2 pod runtime.
- Buat stanza
diagnosticAnda 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 Pengumpul diagnostik.apigeectl diagnostic -f OVERRIDES_FILE
- Kumpulkan log dan hapus Pengumpul diagnostik.
apigeectl diagnostic delete -f OVERRIDES_FILE
Masalah jaringan / konektivitas
Anda perlu menjalankan diagnostik pada pod gateway masuk dan apigee-runtime.
- Pilih 2 pod runtime.
- Buat stanza
diagnosticAnda 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 Pengumpul diagnostik.apigeectl diagnostic -f OVERRIDES_FILE
- Kumpulkan log dan hapus Pengumpul diagnostik.
apigeectl diagnostic delete -f OVERRIDES_FILE
- Pilih dua pod dari gateway ingress Istio.
- Konfigurasi ulang stanza
diagnosticAnda 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 Pengumpul diagnostik.apigeectl diagnostic -f OVERRIDES_FILE
- Kumpulkan log dan hapus Pengumpul diagnostik.
apigeectl diagnostic delete -f OVERRIDES_FILE
Proxy menampilkan error yang tidak terduga atau kontrak baru tidak diterapkan
Dalam hal ini, Anda perlu mengubah tingkat log ke debug setidaknya selama 5 menit, atau bahkan 10 menit seperti dalam contoh ini. Tindakan ini akan meningkatkan jumlah log, tetapi informasi yang berguna akan dicatat. Anda akan menjalankan Pengumpul diagnostik dua kali, sekali di runtime Apigee, lalu di sinkronisasi Apigee.
- Pilih 2 pod runtime.
- Buat stanza
diagnosticAnda 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 Pengumpul diagnostik.apigeectl diagnostic -f OVERRIDES_FILE
- Kumpulkan log dan hapus Pengumpul diagnostik.
apigeectl diagnostic delete -f OVERRIDES_FILE
- Pilih 2 pod sinkronisasi.
- Buat stanza
diagnosticAnda 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 Pengumpul diagnostik.apigeectl diagnostic -f OVERRIDES_FILE
- Kumpulkan log dan hapus Pengumpul diagnostik.
apigeectl diagnostic delete -f OVERRIDES_FILE