Delen via


Problemen met manifestopname oplossen met behulp van airflow-taaklogboeken

Dit artikel helpt u bij het oplossen van werkstroomproblemen met manifestopname in Azure Data Manager for Energy met behulp van airflow-taaklogboeken.

Dag-werkstroomtypen voor manifestopname

Er zijn twee typen gerichte DAG-werkstromen (Acyclic Graph) voor manifestopname: één manifest en batchupload.

Enkel manifest

Eén manifestbestand wordt gebruikt om de werkstroom voor manifestopname te activeren.

DagTaskName-waarde Beschrijving
update_status_running_task Roept de werkstroomservice aan en markeert de status van de DAG zoals running in de database.
check_payload_type Hiermee wordt gevalideerd of het type opname batch of één manifest is.
validate_manifest_schema_task Zorgt ervoor dat alle schematypen die in het manifest worden genoemd aanwezig zijn en dat er referentiële schema-integriteit is. Alle ongeldige waarden worden uit het manifest verwijderd.
provide_manifest_intergrity_task Valideert verwijzingen in het OSDU® R3-manifest en verwijdert ongeldige entiteiten. Deze operator is verantwoordelijk voor validatie van bovenliggende/onderliggende items. Alle zwevende entiteiten worden geregistreerd en uitgesloten van het gevalideerde manifest. Alle externe records waarnaar wordt verwezen, worden doorzocht. Als er geen gevonden zijn, wordt de manifestentiteit verwijderd. Alle surrogaatsleutelverwijzingen worden ook opgelost.
process_single_manifest_file_task Voert opname uit van de uiteindelijke manifestentiteiten die zijn verkregen uit de vorige stap. Gegevensrecords worden opgenomen via de opslagservice.
update_status_finished_task Roept de werkstroomservice aan en markeert de status van de DAG als finished of failed in de database.

Batchupload

Meerdere manifestbestanden maken deel uit van dezelfde werkstroomserviceaanvraag. De manifestsectie in de nettolading van de aanvraag is een lijst in plaats van een woordenlijst met items.

DagTaskName-waarde Beschrijving
update_status_running_task Roept de werkstroomservice aan en markeert de status van de DAG zoals running in de database.
check_payload_type Hiermee wordt gevalideerd of het type opname batch of één manifest is.
batch_upload Verdeelt de lijst met manifesten in drie batches die parallel moeten worden verwerkt. (Er worden geen taaklogboeken verzonden.)
process_manifest_task_(1 / 2 / 3) Verdeelt de lijst met manifesten in groepen van drie en verwerkt ze. Alle stappen die worden uitgevoerd in validate_manifest_schema_task, provide_manifest_intergrity_tasken process_single_manifest_file_task worden gecondenseerd en opeenvolgend uitgevoerd in deze taken.
update_status_finished_task Roept de werkstroomservice aan en markeert de status van de DAG als finished of failed in de database.

Op basis van het nettoladingstype (één of batch) kiest de check_payload_type taak de juiste vertakking en slaat de taken in de andere vertakking over.

Vereisten

U moet airflow-taaklogboeken hebben geïntegreerd met Azure Monitor. Zie Airflow-logboeken integreren met Azure Monitor.

De volgende kolommen worden weergegeven in airflow-taaklogboeken om het probleem op te sporen:

Parameternaam Beschrijving
RunID Unieke uitvoerings-id van de geactiveerde DAG-uitvoering.
CorrelationID Unieke correlatie-id van de DAG-uitvoering (hetzelfde als de uitvoerings-id).
DagName DAG-werkstroomnaam. Is bijvoorbeeld Osdu_ingest de naam van de werkstroom voor manifestopname.
DagTaskName Taaknaam voor de DAG-werkstroom. Is bijvoorbeeld update_status_running_task de taaknaam voor manifestopname.
Content Foutberichten (fouten of uitzonderingen) die Airflow verzendt tijdens de taakuitvoering.
LogTimeStamp Tijdsinterval van DAG-uitvoeringen.
LogLevel Niveau van de fout. Waarden zijnDEBUG, INFO, en WARNINGERROR. U kunt de meeste uitzonderings- en foutberichten zien door te filteren op het ERROR niveau.

Mislukte DAG-uitvoering

De uitvoering van de werkstroom is mislukt of Update_status_running_task Update_status_finished_taskde gegevensrecords zijn niet opgenomen.

Mogelijke redenen

  • De aanroep van de partitie-API is niet geverifieerd omdat de gegevenspartitie-id onjuist is.
  • Een sleutelnaam in de uitvoeringscontext van de hoofdtekst van de aanvraag is onjuist.
  • De werkstroomservice wordt niet uitgevoerd of genereert 5xx-fouten.

Werkstroomstatus

De werkstroomstatus is gemarkeerd als failed.

Oplossing

Controleer de airflow-taaklogboeken op update_status_running_task of update_status_finished_task. Corrigeer de nettolading door de juiste gegevenspartitie-id of sleutelnaam door te geven.

Voorbeeld van Kusto-query:

    OEPAirFlowTask
        | where DagName == "Osdu_ingest"
        | where DagTaskName == "update_status_running_task"
        | where LogLevel == "ERROR" // ERROR/DEBUG/INFO/WARNING
        | where RunID == '<run_id>'

Voorbeeld van traceringsuitvoer:

    [2023-02-05, 12:21:54 IST] {taskinstance.py:1703} ERROR - Task failed with exception
    Traceback (most recent call last):
      File "/home/airflow/.local/lib/python3.8/site-packages/osdu_ingestion/libs/context.py", line 50, in populate
        data_partition_id = ctx_payload['data-partition-id']
    KeyError: 'data-partition-id'
    
    requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://contoso.energy.azure.com/api/workflow/v1/workflow/Osdu_ingest/workflowRun/e9a815f2-84f5-4513-9825-4d37ab291264

Mislukte schemavalidatie

Records zijn niet opgenomen omdat schemavalidatie is mislukt.

Mogelijke redenen

  • De schemaservice genereert fouten met 'Schema niet gevonden'.
  • De hoofdtekst van het manifest voldoet niet aan het schematype.
  • De schemaverwijzingen zijn onjuist.
  • De schemaservice genereert 5xx-fouten.

Werkstroomstatus

De werkstroomstatus is gemarkeerd als finished. U ziet geen fout in de werkstroomstatus omdat de ongeldige entiteiten worden overgeslagen en de opname wordt voortgezet.

Oplossing

Controleer de airflow-taaklogboeken op validate_manifest_schema_task of process_manifest_task. Corrigeer de nettolading door de juiste gegevenspartitie-id of sleutelnaam door te geven.

Voorbeeld van Kusto-query:

    OEPAirFlowTask
    | where DagName has "Osdu_ingest"
    | where DagTaskName == "validate_manifest_schema_task" or DagTaskName has "process_manifest_task"
    | where LogLevel == "ERROR"
    | where RunID == "<run_id>"
    | order by ['time'] asc  

Voorbeeld van traceringsuitvoer:

    Error traces to look out for
    [2023-02-05, 14:55:37 IST] {connectionpool.py:452} DEBUG - https://contoso.energy.azure.com:443 "GET /api/schema-service/v1/schema/osdu:wks:work-product-component--WellLog:2.2.0 HTTP/1.1" 404 None
    [2023-02-05, 14:55:37 IST] {authorization.py:137} ERROR - {"error":{"code":404,"message":"Schema is not present","errors":[{"domain":"global","reason":"notFound","message":"Schema is not present"}]}}
    [2023-02-05, 14:55:37 IST] {validate_schema.py:170} ERROR - Error on getting schema of kind 'osdu:wks:work-product-component--WellLog:2.2.0'
    [2023-02-05, 14:55:37 IST] {validate_schema.py:171} ERROR - 404 Client Error: Not Found for url: https://contoso.energy.azure.com/api/schema-service/v1/schema/osdu:wks:work-product-component--WellLog:2.2.0
    [2023-02-05, 14:55:37 IST] {validate_schema.py:314} WARNING - osdu:wks:work-product-component--WellLog:2.2.0 is not present in Schema service.
    [2023-02-05, 15:01:23 IST] {validate_schema.py:322} ERROR - Schema validation error. Data field.
    [2023-02-05, 15:01:23 IST] {validate_schema.py:323} ERROR - Manifest kind: osdu:wks:work-product-component--WellLog:1.1.0
    [2023-02-05, 15:01:23 IST] {validate_schema.py:324} ERROR - Error: 'string-value' is not of type 'number'
    
    Failed validating 'type' in schema['properties']['data']['allOf'][3]['properties']['SamplingStop']:
        {'description': 'The stop value/last value of the ReferenceCurveID, '
                        'typically the end depth of the logging.',
         'example': 7500,
         'title': 'Sampling Stop',
         'type': 'number',
         'x-osdu-frame-of-reference': 'UOM'}
    
    On instance['data']['SamplingStop']:
        'string-value'

Mislukte referentiecontroles

Records zijn niet opgenomen omdat referentiecontroles zijn mislukt.

Mogelijke redenen

  • Er zijn geen records gevonden waarnaar wordt verwezen.
  • Bovenliggende records zijn niet gevonden.
  • De zoekservice genereert 5xx-fouten.

Werkstroomstatus

De werkstroomstatus is gemarkeerd als finished. U ziet geen fout in de werkstroomstatus omdat de ongeldige entiteiten worden overgeslagen en de opname wordt voortgezet.

Oplossing

Controleer de airflow-taaklogboeken op provide_manifest_integrity_task of process_manifest_task.

Voorbeeld van Kusto-query:

    OEPAirFlowTask
        | where DagName has "Osdu_ingest"
        | where DagTaskName == "provide_manifest_integrity_task" or DagTaskName has "process_manifest_task"
        | where Content has 'Search query "'or Content has 'response ids: ['
        | where RunID has "<run_id>"

Omdat er geen foutenlogboeken specifiek zijn voor referentiële integriteitstaken, controleert u de instructies voor foutopsporingslogboeken om te zien of alle externe records zijn opgehaald via de zoekservice.

De volgende voorbeeldtraceringsuitvoer toont bijvoorbeeld een record die wordt opgevraagd via de zoekservice voor referentiële integriteit:

    [2023-02-05, 19:14:40 IST] {search_record_ids.py:75} DEBUG - Search query "contoso-dp1:work-product-component--WellLog:5ab388ae0e140838c297f0e6559" OR "contoso-dp1:work-product-component--WellLog:5ab388ae0e1b40838c297f0e6559" OR "contoso-dp1:work-product-component--WellLog:5ab388ae0e1b40838c297f0e6559758a"

De uitvoer toont de records die zijn opgehaald en zich in het systeem bevonden. Het gerelateerde manifestobject waarnaar wordt verwezen, wordt verwijderd en wordt niet meer opgenomen als u merkt dat sommige van de records niet aanwezig waren.

    [2023-02-05, 19:14:40 IST] {search_record_ids.py:141} DEBUG - response ids: ['contoso-dp1:work-product-component--WellLog:5ab388ae0e1b40838c297f0e6559758a:1675590506723615', 'contoso-dp1:work-product-component--WellLog:5ab388ae0e1b40838c297f0e6559758a    ']

Records zijn niet opgenomen omdat het manifest ongeldige juridische tags of toegangsbeheerlijsten (ACL's) bevat.

Mogelijke redenen

  • ACL's zijn onjuist.
  • Juridische tags zijn onjuist.
  • De opslagservice genereert 5xx-fouten.

Werkstroomstatus

De werkstroomstatus is gemarkeerd als finished. U ziet geen fout in de werkstroomstatus.

Oplossing

Controleer de airflow-taaklogboeken op process_single_manifest_file_task of process_manifest_task.

Voorbeeld van Kusto-query:

    OEPAirFlowTask
    | where DagName has "Osdu_ingest"
    | where DagTaskName == "process_single_manifest_file_task" or DagTaskName has "process_manifest_task"
    | where LogLevel == "ERROR"
    | where RunID has "<run_id>"
    | order by ['time'] asc 

Voorbeeld van traceringsuitvoer:

    "PUT /api/storage/v2/records HTTP/1.1" 400 None
    [2023-02-05, 16:57:05 IST] {authorization.py:137} ERROR - {"code":400,"reason":"Invalid legal tags","message":"Invalid legal tags: contoso-dp1-R3FullManifest-Legal-Tag-Test779759112"}
    

De uitvoer geeft records aan die zijn opgehaald. Manifestentiteitsrecords die overeenkomen met ontbrekende zoekrecords, worden verwijderd en niet opgenomen.

    "PUT /api/storage/v2/records HTTP/1.1" 400 None
    [2023-02-05, 16:58:46 IST] {authorization.py:137} ERROR - {"code":400,"reason":"Validation error.","message":"createOrUpdateRecords.records[0].acl: Invalid group name 'data1.default.viewers@contoso-dp1.dataservices.energy'"}
    [2023-02-05, 16:58:46 IST] {single_manifest_processor.py:83} WARNING - Can't process entity SRN: surrogate-key:0ef20853-f26a-456f-b874-3f2f5f35b6fb

Bekende problemen

  • Omdat er geen specifieke foutenlogboeken zijn voor referentiële integriteitstaken, moet u handmatig zoeken naar de foutopsporingslogboekinstructies om te zien of alle externe records zijn opgehaald via de zoekservice.

Volgende stappen

Ga naar de volgende zelfstudie en leer hoe u een op manifest gebaseerde bestandsopname uitvoert:

Verwijzingen