adobe / helix-rum-bundler

Apache License 2.0
0 stars 0 forks source link

helix-rum-bundler

Process RUM events into bundles by domain/time. Provides API to read bundles.

codecov GitHub license GitHub issues semantic-release

Bundler

  1. RUM events logged to S3 in files
  2. triggered by cron (every 10min)
  3. read files from logs bucket in batches of N
  4. sort RUM event into bundle
  5. append or write to RUM bundle
  6. move raw file to processed location

Related Resources

Bundle Manifest

Contains information needed to efficiently relate new RUM events to an existing session.

{
  "sessions": {
    "id--path": {
      "hour": 1
    },
    "J3Ed2--/some/path": {
      "hour": 2
    }
  }
}

API

bundles

requires authorization, domainkey

  • GET /bundles/{domain}/{year}/${month}/{date}/{hour}
  • GET /bundles/{domain}/{year}/${month}/{date}
  • GET /bundles/{domain}/{year}/${month}
    // response
    {
    "rumBundles": [
    {
    "id": "foo",
    "time": "2024-01-01T01:02:03+00:00",
    "timeSlot": "2024-01-01T01:00:00+00:00",
    "url": "https://www.example.com/my/path",
    "userAgent": "desktop",
    "weight": 10,
    "events": [
    {
    "checkpoint": "viewmedia",
    "timeDelta": 123, // ms since timeSlot
    "target": "https://www.example.com/my/image.png",
    "source": ".my-block"
    },
    {
    "checkpoint": "loadresource",
    "timeDelta": 123,
    "source": "https://www.example.com/nav.plain.html",
    "target": "1"
    },
    {
    "checkpoint": "cwv"
    },
    {
    "checkpoint": "cwv-lcp",
    "value": 1.1
    }
    ]
    }
    ]
    }

domainkey

requires authorization, membership in allowlist

  • GET /domainkey/{domain}
  • POST /domainkey/{domain}
  • DELETE /domainkey/{domain}

orgs

requires orgadmin authorization

  • GET /org/{id}
  • POST /orgs/{id}/key

requires superuser authorization

  • GET /orgs
  • POST /orgs
  • POST /orgs/{id}
  • DELETE /orgs/{id}/domains/{domain}
  • GET /orgs/{id}/key
  • PUT /orgs/{id}/key