Felsöka problem med manifestinmatning med hjälp av Airflow-aktivitetsloggar
Den här artikeln hjälper dig att felsöka arbetsflödesproblem med manifestinmatning i Azure Data Manager for Energy med hjälp av Airflow-aktivitetsloggar.
Dag-arbetsflödestyper för manifestinmatning
Det finns två typer av riktade acykliska grafarbetsflöden (DAG) för manifestinmatning: enkel manifest- och batchuppladdning.
Enskilt manifest
En enda manifestfil används för att utlösa arbetsflödet för manifestinmatning.
DagTaskName-värde | beskrivning |
---|---|
update_status_running_task |
Anropar arbetsflödestjänsten och markerar statusen för DAG som running i databasen. |
check_payload_type |
Verifierar om typen av inmatning är batch eller ett enda manifest. |
validate_manifest_schema_task |
Ser till att alla schematyper som nämns i manifestet finns och att det finns referensschemaintegritet. Alla ogiltiga värden tas bort från manifestet. |
provide_manifest_integrity_task |
Validerar referenser i OSDU® R3-manifestet och tar bort ogiltiga entiteter. Den här operatorn ansvarar för överordnad/underordnad validering. Alla överblivna entiteter loggas och undantas från det verifierade manifestet. Alla externa refererade poster genomsöks. Om ingen hittas tas manifestentiteten bort. Alla surrogatnyckelreferenser matchas också. |
process_single_manifest_file_task |
Utför inmatning av de slutgiltiga manifestentiteter som hämtades från föregående steg. Dataposter matas in via lagringstjänsten. |
update_status_finished_task |
Anropar arbetsflödestjänsten och markerar statusen för DAG som finished eller failed i databasen. |
Batchuppladdning
Flera manifestfiler ingår i samma arbetsflödestjänstbegäran. Manifestavsnittet i nyttolasten för begäran är en lista i stället för en ordlista med objekt.
DagTaskName-värde | beskrivning |
---|---|
update_status_running_task |
Anropar arbetsflödestjänsten och markerar statusen för DAG som running i databasen. |
check_payload_type |
Verifierar om typen av inmatning är batch eller ett enda manifest. |
batch_upload |
Delar upp listan över manifest i tre batchar som ska bearbetas parallellt. (Inga aktivitetsloggar genereras.) |
process_manifest_task_(1 / 2 / 3) |
Delar upp listan över manifest i grupper om tre och bearbetar dem. Alla steg som utförs i validate_manifest_schema_task , provide_manifest_integrity_task och process_single_manifest_file_task komprimeras och utförs sekventiellt i dessa uppgifter. |
update_status_finished_task |
Anropar arbetsflödestjänsten och markerar statusen för DAG som finished eller failed i databasen. |
Baserat på nyttolasttypen (enkel eller batch) check_payload_type
väljer aktiviteten lämplig gren och hoppar över aktiviteterna i den andra grenen.
Förutsättningar
Du bör ha integrerade Airflow-aktivitetsloggar med Azure Monitor. Se Integrera Airflow-loggar med Azure Monitor.
Följande kolumner exponeras i Airflow-aktivitetsloggar så att du kan felsöka problemet:
Parameternamn | beskrivning |
---|---|
RunID |
Unikt körnings-ID för den utlösta DAG-körningen. |
CorrelationID |
Unikt korrelations-ID för DAG-körningen (samma som körnings-ID:t). |
DagName |
DAG-arbetsflödets namn. Är till exempel Osdu_ingest arbetsflödesnamnet för manifestinmatning. |
DagTaskName |
Uppgiftsnamn för DAG-arbetsflödet. Är till exempel update_status_running_task uppgiftsnamnet för manifestinmatning. |
Content |
Felmeddelanden (fel eller undantag) som Airflow genererar under aktivitetskörningen. |
LogTimeStamp |
Tidsintervall för DAG-körningar. |
LogLevel |
Felnivå. Värdena är DEBUG , INFO , WARNING och ERROR . Du kan se de flesta undantags- och felmeddelanden genom att filtrera på nivån ERROR . |
Misslyckad DAG-körning
Arbetsflödeskörningen misslyckades i Update_status_running_task
eller Update_status_finished_task
, och dataposterna matades inte in.
Möjliga orsaker
- Anrop till partitions-API:et autentiserades inte eftersom datapartitions-ID:t är felaktigt.
- Ett nyckelnamn i körningskontexten för begärandetexten är felaktigt.
- Arbetsflödestjänsten körs inte eller genererar 5xx-fel.
Arbetsflödesstatus
Arbetsflödesstatusen är markerad som failed
.
Lösning
Kontrollera airflow-aktivitetsloggarna för update_status_running_task
eller update_status_finished_task
. Åtgärda nyttolasten genom att skicka rätt datapartitions-ID eller nyckelnamn.
Kusto-exempelfråga:
OEPAirFlowTask
| where DagName == "Osdu_ingest"
| where DagTaskName == "update_status_running_task"
| where LogLevel == "ERROR" // ERROR/DEBUG/INFO/WARNING
| where RunID == '<run_id>'
Exempel på spårningsutdata:
[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
Schemaverifieringen misslyckades
Poster matades inte in eftersom schemaverifieringen misslyckades.
Möjliga orsaker
- Schematjänsten genererar "Schema hittades inte"-fel.
- Manifesttexten överensstämmer inte med schematypen.
- Schemareferenserna är felaktiga.
- Schematjänsten genererar 5xx-fel.
Arbetsflödesstatus
Arbetsflödesstatusen är markerad som finished
. Du ser inget fel i arbetsflödesstatusen eftersom de ogiltiga entiteterna hoppas över och inmatningen fortsätter.
Lösning
Kontrollera airflow-aktivitetsloggarna för validate_manifest_schema_task
eller process_manifest_task
. Åtgärda nyttolasten genom att skicka rätt datapartitions-ID eller nyckelnamn.
Kusto-exempelfråga:
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
Exempel på spårningsutdata:
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'
Misslyckade referenskontroller
Poster matades inte in eftersom referenskontrollerna misslyckades.
Möjliga orsaker
- Refererade poster hittades inte.
- Överordnade poster hittades inte.
- Söktjänsten genererar 5xx-fel.
Arbetsflödesstatus
Arbetsflödesstatusen är markerad som finished
. Du ser inget fel i arbetsflödesstatusen eftersom de ogiltiga entiteterna hoppas över och inmatningen fortsätter.
Lösning
Kontrollera airflow-aktivitetsloggarna för provide_manifest_integrity_task
eller process_manifest_task
.
Kusto-exempelfråga:
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>"
Eftersom det inte finns några felloggar specifikt för referensintegritetsuppgifter kontrollerar du felsökningslogginstruktionerna för att se om alla externa poster hämtades via söktjänsten.
Följande exempelspårningsutdata visar till exempel en post som efterfrågas via söktjänsten för referensintegritet:
[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"
Utdata visar de poster som hämtades och fanns i systemet. Det relaterade manifestobjektet som refererade till en post skulle tas bort och matas inte längre in om du märkte att vissa av posterna inte fanns.
[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 ']
Ogiltiga juridiska taggar eller ACL:er i manifestet
Poster matades inte in eftersom manifestet innehåller ogiltiga juridiska taggar eller åtkomstkontrollistor (ACL).
Möjliga orsaker
- ACL:er är felaktiga.
- Juridiska taggar är felaktiga.
- Lagringstjänsten genererar 5xx-fel.
Arbetsflödesstatus
Arbetsflödesstatusen är markerad som finished
. Du ser inget fel i arbetsflödesstatusen.
Lösning
Kontrollera airflow-aktivitetsloggarna för process_single_manifest_file_task
eller process_manifest_task
.
Kusto-exempelfråga:
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
Exempel på spårningsutdata:
"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"}
Utdata anger poster som har hämtats. Manifestentitetsposter som motsvarar saknade sökposter tas bort och matas inte in.
"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
Kända problem
- Eftersom det inte finns några specifika felloggar för referensintegritetsuppgifter måste du söka efter felsökningslogginstruktionerna manuellt för att se om alla externa poster hämtades via söktjänsten.
Nästa steg
Gå vidare till följande självstudie och lär dig hur du utför en manifestbaserad filinmatning: