Megosztás a következőn keresztül:


Kérésfeldolgozás figyelése és diagnosztizálása fordított proxyn

A Service Fabric 5.7-es kiadásától kezdve a fordított proxyesemények elérhetők a gyűjteményhez. Az események két csatornán érhetők el, az egyikben csak a fordított proxy kérésfeldolgozási hibájával kapcsolatos hibaesemények, a második pedig részletes eseményeket tartalmaz, amelyek mind a sikeres, mind a sikertelen kérelmek bejegyzéseit tartalmazzák.

A fordított proxyesemények gyűjtésével engedélyezheti az események gyűjtését ezekről a csatornákról a helyi és az Azure Service Fabric-fürtökben.

Hibaelhárítás diagnosztikai naplók használatával

Íme néhány példa a gyakori hibanaplók értelmezésére:

  1. A fordított proxy az 504-re (időtúllépésre) vonatkozó válaszállapot-kódot adja vissza.

    Ennek egyik oka az lehet, hogy a szolgáltatás nem válaszol a kérelem időtúllépési időszakán belül. Az alábbi első esemény naplózza a fordított proxyn kapott kérés részleteit. A második esemény azt jelzi, hogy a kérés a szolgáltatásba való továbbítás során meghiúsult, mert "belső hiba = ERROR_WINHTTP_TIMEOUT"

    A hasznos adatok a következők:

    • traceId: Ez a GUID használható az egyetlen kérésnek megfelelő összes esemény korrelálásához. Az alábbi két eseményben a traceId = 2f87b722-e254-4ac2-a802-fd315c1a0271, ami azt jelenti, hogy ugyanahhoz a kéréshez tartoznak.

    • requestUrl: Az AZ URL-cím (fordított proxy URL-cím), amelyre a kérést elküldték.

    • ige: HTTP-parancs.

    • remoteAddress: A kérést küldő ügyfél címe.

    • resolvedServiceUrl: A szolgáltatásvégpont URL-címe, amelyre a bejövő kérést megoldották.

    • errorDetails: További információ a hibáról.

      {
      "Timestamp": "2017-07-20T15:57:59.9871163-07:00",
      "ProviderName": "Microsoft-ServiceFabric",
      "Id": 51477,
      "Message": "2f87b722-e254-4ac2-a802-fd315c1a0271 Request url = https://localhost:19081/LocationApp/LocationFEService?zipcode=98052, verb = GET, remote (client) address = ::1, resolved service url = Https://localhost:8491/LocationApp/?zipcode=98052, request processing start time =     15:58:00.074114 (745,608.196 MSec) ",
      "ProcessId": 57696,
      "Level": "Informational",
      "Keywords": "0x1000000000000021",
      "EventName": "ReverseProxy",
      "ActivityID": null,
      "RelatedActivityID": null,
      "Payload": {
      "traceId": "2f87b722-e254-4ac2-a802-fd315c1a0271",
      "requestUrl": "https://localhost:19081/LocationApp/LocationFEService?zipcode=98052",
      "verb": "GET",
      "remoteAddress": "::1",
      "resolvedServiceUrl": "Https://localhost:8491/LocationApp/?zipcode=98052",
      "requestStartTime": "2017-07-20T15:58:00.0741142-07:00"
      }
      }
      
      {
      "Timestamp": "2017-07-20T16:00:01.3173605-07:00",
      ...
      "Message": "2f87b722-e254-4ac2-a802-fd315c1a0271 Error while forwarding request to service: response status code = 504, description = Reverse proxy Timeout, phase = FinishSendRequest, internal error = ERROR_WINHTTP_TIMEOUT ",
      ...
      "Payload": {
      "traceId": "2f87b722-e254-4ac2-a802-fd315c1a0271",
      "statusCode": 504,
      "description": "Reverse Proxy Timeout",
      "sendRequestPhase": "FinishSendRequest",
      "errorDetails": "internal error = ERROR_WINHTTP_TIMEOUT"
      }
      }
      
  2. A fordított proxy a 404-re (nem található) adott válaszállapot-kódot adja vissza.

    Íme egy példaesemény, amelyben a fordított proxy a 404-et adja vissza, mivel nem találta meg az egyező szolgáltatásvégpontot. A hasznos adatokra vonatkozó érdekes bejegyzések a következők:

    • processRequestPhase: Azt a fázist jelzi a kérésfeldolgozás során, amikor a hiba történt, a TryGetEndpointot , azaz a szolgáltatásvégpont lekérését, hogy továbbítsa.

    • errorDetails: A végpont keresési feltételeinek listája. Itt láthatja, hogy a figyelőNév megadott = FrontEndListener, míg a replika végpontlistája csak egy OldListener nevű figyelőt tartalmaz.

      {
      ...
      "Message": "c1cca3b7-f85d-4fef-a162-88af23604343 Error while processing request, cannot forward to service: request url = https://localhost:19081/LocationApp/LocationFEService?ListenerName=FrontEndListener&zipcode=98052, verb = GET, remote (client) address = ::1, request processing start time = 16:43:02.686271 (3,448,220.353 MSec), error = FABRIC_E_ENDPOINT_NOT_FOUND, message = , phase = TryGetEndoint, SecureOnlyMode = false, gateway protocol = https, listenerName = FrontEndListener, replica endpoint = {\"Endpoints\":{\"\":\"Https:\/\/localhost:8491\/LocationApp\/\"}} ",
      "ProcessId": 57696,
      "Level": "Warning",
      "EventName": "ReverseProxy",
      "Payload": {
      "traceId": "c1cca3b7-f85d-4fef-a162-88af23604343",
      "requestUrl": "https://localhost:19081/LocationApp/LocationFEService?ListenerName=NewListener&zipcode=98052",
      ...
      "processRequestPhase": "TryGetEndoint",
      "errorDetails": "SecureOnlyMode = false, gateway protocol = https, listenerName = FrontEndListener, replica endpoint = {\"Endpoints\":{\"OldListener\":\"Https:\/\/localhost:8491\/LocationApp\/\"}}"
      }
      }
      

      Egy másik példa, amikor a fordított proxy a 404 Nem található értéket adja vissza, az ApplicationGateway\Http konfigurációs paraméter , a SecureOnlyMode igaz értékre van állítva, a fordított proxy figyeli a HTTPS-t, de a replika összes végpontja nem biztonságos (HTTP-n figyel). A fordított proxy a 404-et adja vissza, mivel nem találja a HTTPS-t figyelő végpontot a kérés továbbításához. Az esemény hasznos adatainak paramétereinek elemzése segít a probléma szűkítésében:

      "errorDetails": "SecureOnlyMode = true, gateway protocol = https, listenerName = NewListener, replica endpoint = {\"Endpoints\":{\"OldListener\":\"Http:\/\/localhost:8491\/LocationApp\/\", \"NewListener\":\"Http:\/\/localhost:8492\/LocationApp\/\"}}"
      
  3. A fordított proxyra irányuló kérés időtúllépési hibával meghiúsul. Az eseménynaplók olyan eseményt tartalmaznak, amely tartalmazza a beérkezett kérés részleteit (itt nem látható). A következő esemény azt mutatja, hogy a szolgáltatás egy 404-ben megadott állapotkóddal válaszolt, és a fordított proxy újrafeloldás kezdeményezését kezdeményezi.

    {
      ...
      "Message": "7ac6212c-c8c4-4c98-9cf7-c187a94f141e Request to service returned: status code = 404, status description = , Reresolving ",
      "Payload": {
        "traceId": "7ac6212c-c8c4-4c98-9cf7-c187a94f141e",
        "statusCode": 404,
        "statusDescription": ""
      }
    }
    {
      ...
      "Message": "7ac6212c-c8c4-4c98-9cf7-c187a94f141e Re-resolved service url = Https://localhost:8491/LocationApp/?zipcode=98052 ",
      "Payload": {
        "traceId": "7ac6212c-c8c4-4c98-9cf7-c187a94f141e",
        "requestUrl": "Https://localhost:8491/LocationApp/?zipcode=98052"
      }
    }
    

    Az összes esemény összegyűjtésekor események betanítása jelenik meg, amely minden feloldási és továbbítási kísérletet megjelenít. A sorozat utolsó eseménye azt mutatja, hogy a kérelem feldolgozása időtúllépéssel meghiúsult, valamint a sikeres feloldási kísérletek száma.

    Feljegyzés

    Javasoljuk, hogy alapértelmezés szerint tiltsa le a részletes csatornaesemény-gyűjteményt, és engedélyezze a szükséges hibaelhárításhoz.

    {
      ...
      "Message": "7ac6212c-c8c4-4c98-9cf7-c187a94f141e Error while processing request: number of successful resolve attempts = 12, error = FABRIC_E_TIMEOUT, message = , phase = ResolveServicePartition,  ",
      "EventName": "ReverseProxy",
      ...
      "Payload": {
        "traceId": "7ac6212c-c8c4-4c98-9cf7-c187a94f141e",
        "resolveCount": 12,
        "errorval": -2147017729,
        "errorMessage": "",
        "processRequestPhase": "ResolveServicePartition",
        "errorDetails": ""
      }
    }
    

    Ha a gyűjtemény csak kritikus/hibaeseményekhez van engedélyezve, egy esemény jelenik meg, amely az időtúllépéssel és a feloldási kísérletek számával kapcsolatos részleteket tartalmazza.

    Azok a szolgáltatások, amelyek 404 állapotkódot kívánnak visszaküldeni a felhasználónak, hozzá kell adniuk egy "X-ServiceFabric" fejlécet a válaszban. Miután hozzáadta a fejlécet a válaszhoz, a fordított proxy visszaküldi az állapotkódot az ügyfélnek.

  4. Olyan esetek, amikor az ügyfél megszakította a kérést.

    A rendszer a következő eseményt rögzíti, amikor a fordított proxy továbbítja a választ az ügyfélnek, de az ügyfél leválasztja a kapcsolatot:

    {
      ...
      "Message": "6e2571a3-14a8-4fc7-93bb-c202c23b50b8 Unable to send response to client: phase = SendResponseHeaders, error = -805306367, internal error = ERROR_SUCCESS ",
      "ProcessId": 57696,
      "Level": "Warning",
      ...
      "EventName": "ReverseProxy",
      "Payload": {
        "traceId": "6e2571a3-14a8-4fc7-93bb-c202c23b50b8",
        "sendResponsePhase": "SendResponseHeaders",
        "errorval": -805306367,
        "winHttpError": "ERROR_SUCCESS"
      }
    }
    
  5. A fordított proxy a 404-FABRIC_E_SERVICE_DOES_NOT_EXIST

    FABRIC_E_SERVICE_DOES_NOT_EXIST hiba akkor jelenik meg, ha az URI-séma nincs megadva a szolgáltatásvégponthoz a szolgáltatásjegyzékben.

    <Endpoint Name="ServiceEndpointHttp" Port="80" Protocol="http" Type="Input"/>
    

    A probléma megoldásához adja meg az URI-sémát a jegyzékben.

    <Endpoint Name="ServiceEndpointHttp" UriScheme="http" Port="80" Protocol="http" Type="Input"/>
    

Feljegyzés

A websocket-kérelmek feldolgozásához kapcsolódó események jelenleg nincsenek naplózva. Ez a következő kiadásban lesz hozzáadva.

Következő lépések