Dynatrace · Arazzo Workflow

Dynatrace Export Logs for SIEM Forwarding

Version 1.0.0

Aggregate logs to size the export, then bulk-export the matching records page by page.

1 workflow 1 source API 1 provider
View Spec View on GitHub AI OperationsAnalyticsAPMApplication Performance MonitoringApplication SecurityAutomationCloud MonitoringDigital Experience ManagementIntelligenceObservabilityArazzoWorkflows

Provider

dynatrace

Workflows

export-logs-for-siem
Size a log export with aggregation, then bulk-export the records.
Aggregates the matching logs to estimate volume, then exports the first page of records and returns the slice cursor for continued retrieval.
2 steps inputs: exportQuery, from, groupBy, to outputs: estimatedTopCount, nextSliceKey
1
sizeExport
aggregateLogs
Aggregate the matching logs grouped by the supplied fields to estimate the volume that the export will produce.
2
exportRecords
exportLogs
Export the first page of matching log records using the slice-based bulk export endpoint, returning the cursor for continued pagination.

Source API Descriptions

Arazzo Workflow Specification

dynatrace-export-logs-for-siem-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Dynatrace Export Logs for SIEM Forwarding
  summary: Aggregate logs to size the export, then bulk-export the matching records page by page.
  description: >-
    Prepares a bulk log extract for an external SIEM or archive. The workflow
    first aggregates the matching logs to understand the volume per group, then
    runs the slice-based bulk export endpoint to retrieve the first page of
    records along with the cursor for continued pagination. Every step spells
    out its request inline so the flow can be read and executed without opening
    the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: logsApi
  url: ../openapi/dynatrace-log-monitoring-api-v2-openapi.yml
  type: openapi
workflows:
- workflowId: export-logs-for-siem
  summary: Size a log export with aggregation, then bulk-export the records.
  description: >-
    Aggregates the matching logs to estimate volume, then exports the first
    page of records and returns the slice cursor for continued retrieval.
  inputs:
    type: object
    required:
    - exportQuery
    properties:
      exportQuery:
        type: string
        description: DQL query selecting the logs to export.
      groupBy:
        type: string
        description: Comma-separated fields to aggregate by when sizing the export.
      from:
        type: string
        description: Start of the queried time range (e.g. now-24h).
      to:
        type: string
        description: End of the queried time range (e.g. now).
  steps:
  - stepId: sizeExport
    description: >-
      Aggregate the matching logs grouped by the supplied fields to estimate
      the volume that the export will produce.
    operationId: aggregateLogs
    parameters:
    - name: query
      in: query
      value: $inputs.exportQuery
    - name: groupBy
      in: query
      value: $inputs.groupBy
    - name: from
      in: query
      value: $inputs.from
    - name: to
      in: query
      value: $inputs.to
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      topGroup: $response.body#/results/0/groupByFields
      topCount: $response.body#/results/0/count
  - stepId: exportRecords
    description: >-
      Export the first page of matching log records using the slice-based bulk
      export endpoint, returning the cursor for continued pagination.
    operationId: exportLogs
    parameters:
    - name: query
      in: query
      value: $inputs.exportQuery
    - name: from
      in: query
      value: $inputs.from
    - name: to
      in: query
      value: $inputs.to
    - name: sort
      in: query
      value: -timestamp
    - name: pageSize
      in: query
      value: 1000
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      firstContent: $response.body#/results/0/content
      nextSliceKey: $response.body#/nextSliceKey
  outputs:
    estimatedTopCount: $steps.sizeExport.outputs.topCount
    nextSliceKey: $steps.exportRecords.outputs.nextSliceKey