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: Trace aracı ve uzantı günlükleri. Bir uzantı çalışmadığında sorunu belirlemek için bazen her iki yerden de bilgi alınması gerekebilir.

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

    İzleme aracında görünen uzantıyla ilgili hatalar, hangi uzantı açıklamasının başarısız olduğunu ve HTTP hata kodunu belirtmek dışında genellikle çok fazla ayrıntı içermez. Burada faydalı bir şey görmüyorsanız bakmanız gereken 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şim kurmak üzere yapılandırıldığı 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örünür.

    Günlüklerde dahili uzantı kodundan girişler de bulunur. Günlükleri incelerken bazı girişlerin, düzelttiğiniz hatayla alakalı olmadığını unutmayın. Uzantıyla ilgili günlük girişleri genellikle details kelimesiyle başlar. Örneğin, Cloud Pub/Sub uzantısının 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

Uzantı isteği işleme akışları, bir API proxy'sindeki ExtensionCallout politikasından uzantıya, oradan harici kaynağa ve tekrar geri döner. Bu nedenle, bu yerlerin herhangi birinde hata oluşabilir.

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

Uzantı yapılandırmasındaki hatalar

Bu, kuruluş yöneticisinin bir uzantıyı ortama eklerken 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 bir hata döndürür. Bu hatalarla ilgili ayrıntılar genellikle uzantı günlüğünde yer alır.

Trace aracındaki kanıtlar

Bu hatalar, proxy düzenleyicide genellikle 4xx veya 5xx düzeyinde hata olarak gösterilir. Ancak proxy düzenleyici, uzantının hata döndürdüğünü söylemek 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"
    }
  }
}

Uzantı günlüklerindeki kanıtlar

Bu tür bir hatayla ilgili ayrıntılar varsa bunları uzantının günlük girişlerinde görürsünüz. 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, ExtensionCallout politikası yanlış yapılandırıldığında (politika yapılandırma söz dizimi hatası veya yanlış yapılandırma anahtarları ya da değerleri nedeniyle) oluşur. Bu hatalar, politikanın nasıl yapılandırıldığı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ünmesine rağmen harici kaynak için geçersiz olduğunda ortaya çıkabilir. Örneğin, uzantı Cloud Spanner'a yanlış bir veritabanı kimliği iletir. Bu durumda 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 geçerli olabilir. Bazı uzantılarda JSON'ın bir kısmı uzantı tarafından işlenir, bir kısmı ise kaynağa iletilir. Örneğin, Cloud Logging uzantısı yapılandırma JSON'ı, içeriği Cloud Logging'e iletilen bir metadata nesnesi içerir. Buradaki yanlış anahtar adları (ör. type yerine typ) harici kaynaktan hatalar döndürebilir. Bu hatalar, uzantı günlüğünde giriş olarak görünür:

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

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

Trace aracındaki kanıtlar

Bu hatalar, proxy düzenleyicide genellikle 4xx veya 5xx düzeyinde hata olarak gösterilir. Ancak proxy düzenleyici, uzantının hata döndürdüğünü söylemek dışında hatanın nedeni hakkında herhangi bir ayrıntı göstermez. Cloud Firestore uzantısında işlem adı yanlış yazıldığında İzleme 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"
    }
  }
}

Uzantı günlüklerindeki kanıtlar

Politika yapılandırması, harici kaynakta bir işleme hatasına neden olduğunda 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 durumlarda görülü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ürür. Bu hata, uzantı günlüğüne eklenir.

Trace aracındaki kanıtlar

Bu hatalar, proxy düzenleyicide genellikle 4xx veya 5xx düzeyinde hata olarak gösterilir. Ancak proxy düzenleyici, uzantının hata döndürdüğünü söylemek dışında hatanın nedeni hakkında 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"
    }
  }
}

Uzantı günlüklerindeki kanıtlar

Günlükte genellikle harici kaynağın kendisinden gelen iletileri içeren girişler bulunur. Cloud Spanner'dan gelen 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'