An Azure service for ingesting, preparing, and transforming data at scale.
Hi solanki srikanth & thx for join me at Q&A platform,
For ADF, I'd definitely keep PipelineRunId and ActivityRunId as separate fields. They're probably the most useful ones when u need to trace a failure back to the exact execution, especially with retries or nested pipelines.
I'd also capture TriggerName, TriggerType, ActivityType, IntegrationRuntime, environment, error code, error message, start/end timestamps, and retry count. For data-related failures, source and sink identifiers help a lot, but I'd avoid logging connection strings or anything sensitive.
One thing that's easy to miss is the difference between the original failure and the final pipeline status. A pipeline might fail bc a dependency timed out, then recover on retry. If u only log the final result, that issue disappears from ur failure history.
For classification, I'd keep a simple FailureCategory field with values like Data, Connectivity, Authentication, Timeout, Dependency, and Orchestration. Don't rely entirely on the raw ADF error message, bc those can be inconsistent across activities. Btw, I'd centralize this in Log Analytics or a dedicated logging table rather than having every pipeline write its own custom JSON. Makes cross-pipeline troubleshooting and trend analysis way easier.
rgds,
Alex