Memecahkan masalah log Apigee yang tidak ada di Cloud Logging

Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Tidak ada dokumentasi Apigee Edge yang setara untuk topik ini.

Gejala

Mengirim log Apigee API ke Cloud Logging adalah kasus penggunaan umum. Hal ini umumnya dilakukan melalui kebijakan MessageLogging atau kebijakan ServiceCallout. Pada kedua kasus ini, Apigee menggunakan Cloud Logging API untuk menulis log.

Dalam beberapa kasus, Anda mungkin tidak melihat log Apigee API di Cloud Logging.

Pesan error

Tidak ada pesan error yang ditampilkan.

Kemungkinan Penyebab

Penyebab Deskripsi Petunjuk pemecahan masalah yang berlaku untuk
Cloud Logging API tidak diaktifkan Pastikan Anda telah mengaktifkan Cloud Logging API di project Google Cloud organisasi Apigee Anda. Apigee dan Apigee Hybrid
Akun Layanan Proxy yang Salah Akun layanan yang digunakan pada waktu deployment (Apigee) atau dalam konfigurasi runtime (Apigee Hybrid) mungkin telah dihapus/salah dikonfigurasi. Apigee dan Apigee Hybrid
Nama project salah dalam konfigurasi kebijakan Nama project dalam konfigurasi kebijakan tidak sama dengan nama yang terkait dengan organisasi Apigee. Apigee dan Apigee Hybrid
Peran/izin tidak ada untuk akun layanan runtime Untuk Apigee Hybrid, pastikan akun layanan runtime memiliki peran Service Account Token Creator. Hal ini mewajibkan penggunaan autentikasi Google. Apigee hybrid
Ukuran entri log melebihi batas Cloud Logging yang diizinkan Cloud Logging memiliki batas ukuran entri sebesar 256 KB yang tidak dapat diubah. Apigee dan Apigee Hybrid

Penyebab: Cloud Logging API tidak diaktifkan

Diagnosis

Pastikan Cloud Logging API diaktifkan. Lihat Mencantumkan layanan yang diaktifkan untuk mengetahui petunjuk cara mencantumkan API dan layanan yang diaktifkan di Konsol Google Cloud.

Resolusi

Jika Cloud Logging API tidak diaktifkan, aktifkan menggunakan langkah-langkah di Mengaktifkan layanan. Diperlukan waktu beberapa menit untuk mengaktifkan API.

Jika Anda tidak dapat menyelesaikan masalah saat log tidak terlihat di Cloud Logging karena Cloud Logging API tidak diaktifkan, lihat Harus mengumpulkan informasi diagnostik.

Penyebab: Akun layanan proxy salah dikonfigurasi

Diagnosis

Apigee

  1. Temukan nama akun layanan.
    1. Menggunakan UI Apigee:
      1. Klik Develop > API Proxies lalu klik nama proxy. Misalnya, TurboBooks.
      2. Di bagian Deployment, nama Akun Layanan ditampilkan.

    2. Menggunakan Apigee API:

      Lakukan panggilan API Apigee berikut:

      curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/PROXY_NAME/revisions/REVISION_NUMBER/deployments"

      Ganti kode berikut:

      • ORG_NAME: Nama organisasi Anda. Contoh, apigee-example-org.
      • ENV_NAME: Nama lingkungan. Contoh, myenv.
      • PROXY_NAME: Nama proxy. Contoh, TurboBooks.
      • REVISION_NUMBER: Nomor revisi. Contoh, 4.

      Contoh:

      curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/apigee-example-org/environments/myenv/apis/TurboBooks/revisions/4/deployments"

      Sesuatu yang mirip dengan yang berikut ini ditampilkan:

      {
        "environment": "myenv",
        "apiProxy": "TurboBooks",
        "revision": "4",
        "deployStartTime": "1687408163394",
        "state": "READY",
        "instances": [
          {
            "instance": "apiginstance",
            "deployedRevisions": [
              {
                "revision": "4",
                "percentage": 100
              }
          .
          .
          .
          .
        "serviceAccount": "projects/-/serviceAccounts/envsa-79@apigee-example-org.iam.gserviceaccount.com"
      }

      Dengan serviceAccount adalah akun layanan yang terkait dengan proxy API.

  2. Pastikan hal berikut untuk akun layanan proxy ini:
    1. Akun layanan ini harus berada dalam project Google Cloud yang sama dengan yang Anda gunakan untuk membuat organisasi Apigee. Misalnya, apigee-example-org.
    2. Pengguna yang men-deploy proxy memiliki izin iam.serviceAccounts.actAs pada akun layanan ini.
    3. Akun layanan proxy memiliki izin yang diperlukan untuk memanggil layanan Cloud Logging.

Apigee hybrid

Untuk Apigee Hybrid, selain langkah-langkah yang tercantum dalam Apigee, buka file overrides.yaml dan pastikan ada akun layanan yang ditentukan di setiap lingkungan yang memerlukan autentikasi Google. Contoh:

envs:
  - name: "ENVIRONMENT_NAME"
    serviceAccountPaths:
      runtime: "KEY_FILE_PATH"

Ganti kode berikut:

  • ENVIRONMENT_NAME: Nama lingkungan. Sebagai contoh, myenv.
  • KEY_FILE_PATH: Jalur ke file kunci akun layanan runtime. Biasanya, Anda sudah membuat akun layanan di Membuat akun layanan selama penginstalan.

Resolusi

  1. Jika akun layanan tidak berada dalam project Google Cloud yang sama dengan yang Anda gunakan untuk membuat organisasi Apigee, akun layanan perlu dibuat di project Google Cloud yang sama dan digunakan. Hal ini juga disebutkan dalam Menggunakan autentikasi Google.
  2. Jika pengguna yang men-deploy proxy tidak memiliki izin iam.serviceAccounts.actAs di akun layanan ini, lihat Memberikan satu peran.
  3. Jika akun layanan proxy tidak memiliki izin yang diperlukan untuk memanggil layanan Cloud Logging, lihat Memberikan satu peran.

Jika langkah-langkah dalam dokumen ini tidak menyelesaikan masalah saat akun layanan proxy salah dikonfigurasi untuk Apigee dan Apigee Hybrid, lihat Harus mengumpulkan informasi diagnostik.

Penyebab: Nama project salah dalam konfigurasi kebijakan

Diagnosis

Jika Anda menggunakan kebijakan MessageLogging untuk mengirim log ke Cloud Logging:

  1. Di Apigee UI, klik tab Develop > API Proxies > API proxy name > Develop.
  2. Di panel Code, cari elemen <CloudLogging>.
  3. Verifikasi bahwa nilai <LogName> adalah nama project yang benar:
    <CloudLogging>
      <LogName>projects/PROJECT_ID/logs/LOG_ID</LogName>
    </CloudLogging>

    Ganti kode berikut:

    • PROJECT_ID: Project ID Google Cloud. Sebagai contoh, apigee-example-org.
    • LOG_ID: ID log Cloud Logging. Sebagai contoh, apigee-logs.

Resolusi

Jika nilai dalam elemen <LogName> tidak memiliki nilai yang benar, perbarui ke nilai yang benar.

Jika langkah-langkah dalam dokumen ini tidak menyelesaikan masalah, lihat Harus mengumpulkan informasi diagnostik.

Penyebab: Peran/izin tidak ada untuk akun layanan runtime

Diagnosis

Pastikan runtime dapat meniru identitas akun layanan proxy.

Jalankan perintah gcloud berikut untuk memverifikasi apakah akun layanan runtime memiliki peran iam.serviceAccountTokenCreator di akun layanan proxy:

gcloud iam service-accounts get-iam-policy PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Ganti kode berikut:

  • PROXY_SA_NAME: Nama akun layanan proxy. Contoh, envsa-79.
  • PROJECT_ID: Project ID Google Cloud. Sebagai contoh, apigee-example-org.

Sesuatu yang mirip dengan yang berikut ini ditampilkan:

- members:
  - serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
  role: roles/iam.serviceAccountTokenCreator

Ganti kode berikut:

RUNTIME_SA_NAME: ID untuk akun layanan runtime. Contoh, apigee-runtime.

Contoh:

gcloud iam service-accounts get-iam-policy envsa-79@apigee-example-org.iam.gserviceaccount.com
  bindings:
  - members:
    - user:222larabrown@gmail.com
    role: roles/iam.serviceAccountAdmin
  - members:
    - serviceAccount:apigee-runtime@apigee-example-org.iam.gserviceaccount.com
    role: roles/iam.serviceAccountTokenCreator
  - members:
    - user:222larabrown@gmail.com
    role: roles/iam.serviceAccountUser
  etag: BwX-shcrL3o=
  version: 1

Jika Anda tidak melihat peran iam.serviceAccountTokenCreator dan anggota yang diharapkan di output, ikuti langkah-langkah di Penyelesaian untuk memberikan peran yang benar.

Resolusi

Beri akun layanan runtime peran iam.serviceAccountTokenCreator pada akun layanan proxy dengan menjalankan perintah gcloud berikut:

gcloud iam service-accounts add-iam-policy-binding \
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
--member=serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
--role=roles/iam.serviceAccountTokenCreator

Ganti kode berikut:

  • PROXY_SA_NAME: Nama akun layanan proxy. Misalnya, envsa-79.
  • PROJECT_ID: Project ID Google Cloud. Misalnya: apigee-example-org.
  • RUNTIME_SA_NAME: ID untuk akun layanan runtime. Misalnya, apigee-runtime.

Jika langkah-langkah dalam dokumen ini tidak menyelesaikan masalah, lihat Harus mengumpulkan informasi diagnostik.

Penyebab: Ukuran entri log melebihi batas logging yang diizinkan

Diagnosis

Jika Anda tidak melihat beberapa log muncul di Cloud Logging setelah memastikan bahwa penyebab lain yang dijelaskan dalam dokumen ini bukan merupakan masalah, ada kemungkinan ukuran beberapa entri log yang dikirim dari Apigee melebihi 256 KB yang merupakan batas pasti untuk entri ukuran log di Cloud Logging. Lihat Batas penggunaan logging untuk informasi selengkapnya.

Resolusi

Batas ini tidak dapat dikonfigurasi yang ditetapkan di Cloud Logging dan satu-satunya solusi yang diketahui saat ini adalah menjaga ukuran entri log yang dikirim dari Apigee di bawah 256 KB. Jika Anda mencatat payload yang berpotensi melebihi batas ini, jangan mencatat payload ini ke dalam log, atau pahami bahwa beberapa transaksi tidak akan dicatat ke dalam log setelah batas tercapai.

Jika langkah-langkah dalam dokumen ini tidak menyelesaikan masalah, lihat Harus mengumpulkan informasi diagnostik.

Harus mengumpulkan informasi diagnostik

Jika masalah terus berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut, lalu hubungi Google Cloud Customer Care:

  • Organisasi Apigee.
  • Proxy lingkungan dan API mengalami masalah ini.
  • Sesi debug yang didownload (ini akan memberikan semua info di atas).
  • Nama kebijakan spesifik di proxy API yang mengirim log ke Cloud Logging.
  • Untuk Apigee Hybrid: File overrides.yaml.