Uzantıda hata ayıklama

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

İki yerde görünen mesajları kullanarak uzantılarda hata ayıklayabilirsiniz: İzleme aracı ve uzantı günlükleri. Bir uzantı çalışmadığında, sorunu tespit etmek bazen her iki yerden de bilgi alınmasını gerektirebilir.

  • Apigee Edge Trace aracı, API proxy kodunu geliştirirken API proxy kodunu tekrar tekrar test ettiğiniz ve düzenlediğiniz yerdir. İzleme mesajları, API proxy'si ve politika yapılandırması dahil olmak üzere API proxy kodunuzdan gelen hataları içerir.

    İzleme aracında görünen uzantıyla ilgili hatalar, genellikle bir HTTP hata koduyla birlikte hangi uzantı açıklama metninin başarısız olduğunu belirtmek dışında çok fazla ayrıntı içermez. Burada yararlı bir şey görmediğinizde bakabileceğiniz bir sonraki en iyi yer, kullandığınız uzantının günlüğü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şimde bulunmak üzere yapılandırıldığı harici kaynak tarafından döndürülen girişleri içerir. Örneğin, harici kaynak kimlik bilgileri uzantıda yanlış yapılandırılmışsa hata büyük olasılıkla burada görünür.

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

    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

Uzantı isteği işleme, API proxy'sindeki bir Extension callout politikasından uzantıya, ardından harici kaynağa, sonra tekrar geri döner. Dolayısıyla bu yerlerin herhangi birinde bir hata oluşabilir.

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

Uzantı yapılandırmasındaki hatalar

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

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

İzleme aracındaki kanıt

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

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

Uzantı günlüklerindeki kanıt

Bu tür hatalarla ilgili herhangi bir 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 politika yapılandırmasındaki hatalar

Bu hatalar, ExtensionCall politikası bir politika yapılandırması söz dizimi hatası nedeniyle 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 biçimde olur:

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

    Bu hata, yapılandırma hatasının uzantıda geçerli görünüp harici kaynak için geçersiz olması durumunda ortaya çıkabilir. Örneğin, uzantı Cloud Spanner'a yanlış bir veritabanı kimliği iletirse 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ış JSON yapılandırması için de ortaya çıkabilir. Bazı uzantılarda, JSON dosyasının bir kısmı uzantı tarafından işlenir ve bir kısmı kaynağa aktarılır. Örneğin, Cloud Logging uzantısı yapılandırma JSON dosyası, içeriği Cloud Logging'e aktarılan bir metadata nesnesi içerir. Buradaki yanlış anahtar adları (ör. type yerine typ) uzantı günlüğünde giriş olarak görünen harici kaynaktan hatalar döndürebilir:

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

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

İzleme aracındaki kanıt

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

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

Uzantı günlüklerindeki kanıt

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

Bu hata, harici kaynağa yapılan isteğin uzantıyla ilgili olmayan nedenlerden dolayı başarısız olduğu bir hatadır.

Örneğin, veritabanına bir 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 zaten kullanıldığını varsayalım. Cloud Spanner, uzantıya bir hata döndürerek hatayı uzantı günlüğüne ekler.

İzleme aracındaki kanıt

Proxy düzenleyicide bu hatalar genellikle 4xx veya 5xx düzeyinde bir hata olarak görünür. Ancak proxy düzenleyicisi, uzantının bir hata döndürdüğünü belirtmek dışında, hatanın nedeni hakkında hiç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"
    }
  }
}

Uzantı günlüklerindeki kanıt

Günlükte genellikle harici kaynaktan gelen mesajları içeren girişler bulunur. Cloud Spanner'ın aşağıdaki günlük mesajında, mevcut birincil anahtar değeri hatası açıklanmaktadır.

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