Uzantıda hata ayıklama

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
info

Bir uzantıda hata ayıklama işlemini, iki yerde görünen mesajları kullanarak yapabilirsiniz: Trace aracı ve uzantı günlükleri. Bir uzantı çalışmadığında sorunun tespiti için bazen her iki yerden de bilgi alınması gerekebilir.

  • Apigee Edge İzleme aracı, API proxy kodunu geliştirirken iteratif olarak test edip düzenlediğiniz yerdir. İzleme mesajları, API proxy ve politika yapılandırması dahil olmak üzere API proxy kodunuzdaki hataları içerir.

    İzleme aracında görünen uzantılarla ilgili hatalar genellikle çok fazla ayrıntı içermez. HTTP hata koduyla birlikte hangi uzantı açıklama metninin başarısız olduğunu belirtmek dışında bir bilgi verilmez. Burada yararlı bir şey göremezseniz en iyi ikinci seçenek, kullandığınız uzantının günlüküdür.

  • Uzantılar, çalışma zamanında günlük girişleri oluşturur. (Uzantı günlükleri yalnızca kuruluş yöneticileri tarafından kullanılabilir.)

    Bu günlükler, uzantının etkileşim kurması için yapılandırılmış harici kaynak tarafından döndürülen girişleri içerir. Örneğin, uzantıda harici kaynak kimlik bilgileri yanlış yapılandırılmışsa hata büyük olasılıkla burada gösterilir.

    Günlükler, dahili uzantı kodundan gelen girişleri de içerir. Günlükleri incelerken girişlerden bazılarının düzelttiğiniz hatayla alakalı olmadığını unutmayın. Uzantılarla ilgili günlük girişleri genellikle details kelimesiyle başlar. Cloud Pub/Sub uzantısındaki aşağıdaki günlük girişinde olduğu gibi:

    details: 'Invalid resource name given (name=projects/example-test-123456/topic/extension-example). Refer to https://cloud.google.com/pubsub/docs/admin#resource_names for more information.'
    

Hata türleri ve nedenleri

Uzatma isteği işleme, API proxy'sindeki bir ExtensionCallout politikasından uzantı üzerinden harici kaynağa ve ardından tekrar geriye doğru akar. Bu nedenle, bu yerlerden herhangi birinde hata oluşabilir.

Gördüğünüz hatalar aşağıdaki kategorilere ayrılabilir.

Uzantı yapılandırmasında hatalar

Bu, bir uzantıyı bir ortama eklerken kuruluş yöneticisinin yaptığı yapılandırmadır.

Örneğin, Cloud Logging uzantısını yanlış bir Google Cloud projesi kimliğiyle yapılandırırsanız Google Cloud Logging, uzantıya bir hata döndürür. Bu hatalarla ilgili ayrıntılar genellikle uzantı günlüğünde bulunur.

Trace aracındaki kanıtlar

Proxy düzenleyicide bu hatalar genellikle 4xx veya 5xx düzeyinde hata olarak görünür. Ancak proxy düzenleyici, uzantının hata döndürdüğünü belirtmek dışında hatanın nedeni hakkında herhangi bir ayrıntı göstermez.

{
  "fault": {
    "faultstring":"Execution of ConnectorCallout Logging-Extension failed. Reason: Connector returned error statuscode=500",
    "detail": {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Uzatma günlüklerindeki kanıtlar

Bu tür bir hatayla ilgili ayrıntı varsa uzantının günlük girişlerinde gösterilir. Cloud Pub/Sub hizmeti tarafından döndürülen aşağıdaki hata mesajı, hatalı biçimlendirilmiş bir proje kimliğinden kaynaklanır.

details: 'Project does not exist: example-test-12345'

ExtensionCallout politikası yapılandırmasında hatalar

Bu hatalar, ExtensionCallout politikası bir politika yapılandırması söz dizimi hatası veya yanlış yapılandırma anahtarları ya da değerleri nedeniyle yanlış yapılandırıldığında ortaya çıkar. Bu hatalar, politikanın yapılandırmasına bağlı olarak iki şekilde ortaya çıkar:

  • Harici kaynak tarafından değerlendirilen yanlış değerler

    Bu durum, yapılandırma hatası uzantı için geçerli göründüğünde ancak harici kaynak için geçersiz olduğunda ortaya çıkabilir. Örneğin, uzantı Cloud Spanner'a yanlış bir veritabanı kimliği gönderirse Cloud Spanner, uzantı günlüğüne kaydedilen bir hata döndürür:

    details: 'Database not found: projects/example-test-123456/instances/spanner-extension-example-db/databases/my-business-d'
    

    Bu durum, politikanın <Input> öğesindeki yanlış yapılandırma JSON'u için de oluşabilir. Bazı uzantılarda JSON'un bir kısmı uzantı tarafından işlenir ve bir kısmı kaynağa iletilir. Örneğin, Cloud Logging uzantısı yapılandırma JSON'u, içeriği Cloud Logging'a iletilen bir metadata nesnesi içerir. Buradaki yanlış anahtar adları (ör. type yerine typ), harici kaynaktan uzantı günlüğünde giriş olarak görünen hatalar döndürebilir:

    details: 'Resource type cannot be empty'
    
  • Uzantı tarafından değerlendirilen yanlış değerler

    Bu hatalar arasında <Input> öğesi JSON'unun politika tarafından değerlendirilen bölümlerindeki söz dizimi hataları, <Action> öğesindeki işlem adının yanlış yazılması vb. bulunur. Bu hatalar genellikle İzleme aracında görünür ancak uzantı günlüklerinde görünmez.

Trace aracındaki kanıtlar

Proxy düzenleyicide bu hatalar genellikle 4xx veya 5xx düzeyinde hata olarak görünür. Ancak proxy düzenleyici, uzantının hata döndürdüğünü belirtmek dışında hatanın nedeni hakkında herhangi bir ayrıntı göstermez. Cloud Firestore uzantısında işlem adı yanlış yazıldığı zaman, izleme aracında aşağıdaki hata gösterilir.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404","detail":
    {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Uzatma günlüklerindeki kanıtlar

Politika yapılandırması harici kaynakta işleme hatasıyla sonuçlandığında hata genellikle günlükte görünür.

Bu, harici kaynağa yapılan isteğin uzantıyla ilgili olmayan nedenlerle başarılı olmadığı bir hatadır.

Örneğin, veritabanına satır eklemek için Cloud Spanner uzantısını kullandığınızı ancak satırın birincil anahtar değerinin mevcut bir satırda kullanıldığını varsayalım. Cloud Spanner, uzantıya bir hata döndürür ve bu hata, uzantı günlüğüne eklenir.

Trace aracındaki kanıtlar

Proxy düzenleyicide bu hatalar genellikle 4xx veya 5xx düzeyinde hata olarak görünür. Ancak proxy düzenleyici, uzantının hata döndürdüğünü belirtmek dışında hatanın nedeniyle ilgili herhangi bir ayrıntı göstermez.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404",
    "detail":{
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Uzatma günlüklerindeki kanıtlar

Günlükte genellikle harici kaynağın kendisinden gelen mesajlar bulunur. Cloud Spanner'dan gelen aşağıdaki günlük mesajı, mevcut birincil anahtar değeri hatasını açıklar.

details: 'Row [jonesy42] in table user already exists'