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_task en 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 WARNING ERROR . 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_task
de 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 ']
Ongeldige juridische tags of ACL's in het manifest
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: