INTEGRITY Dokumentace

Transformers

Beta

Transformers umožňují spustit dotaz SQL nad každou dávkou záznamů předtím, než je Logpush doručí do vaší cílové destinace. Použijte je k filtrování záznamů, které nechcete ukládat, k úpravě polí podle cílového schématu, k redakci citlivých hodnot, k výpočtu nových polí nebo k přidání statických metadat.

Logiku napíšete jako jediný SQL dotaz, přiřadíte ji k úloze Logpush a Cloudflare ji spustí u každé dávky. Následující FROM určuje datovou sadu Logpush (například http_requests nebo audit_logs_v2) a názvy polí pocházejí ze schématu tohoto datasetu.

Klíčové funkce

Než začnete, budete potřebovat:

Transformátory pro Access

Transformery můžete vytvářet, zobrazovat jejich náhled, přiřazovat a spravovat prostřednictvím řídicího panelu Cloudflare nebo přes API.

Transformer Studio (UI)

Transformer Studio je pracovní prostor s editorem SQL, ve kterém Transformers píšete, prohlížíte a spravujete. Otevřete jej ze stránky Logpush v Cloudflare dashboardu.

Přejděte na Logpush ↗

Ve Studiu můžete:

API

Každá akce transformátoru je dostupná přes Cloudflare API. Pro ověření použijte API token hodnotou Logs Write oprávnění.

Operace Metoda Endpoint
Seznam transformerů GET accounts/:account_id/logpush/transformers
Vytvoření transformeru POST accounts/:account_id/logpush/transformers
Náhled transformátoru POST accounts/:account_id/logpush/transformers/preview
Získání transformeru GET accounts/:account_id/logpush/transformers/:id
Stáhnout SQL GET accounts/:account_id/logpush/transformers/:id/content
Seznam verzí GET accounts/:account_id/logpush/transformers/:id/versions
Aktualizace transformace PUT accounts/:account_id/logpush/transformers/:id
Odstraňte transformátor DELETE accounts/:account_id/logpush/transformers/:id

Chcete-li k úloze připojit nebo od ní odpojit transformátor, nastavte transformer_id u úlohy Logpush. Viz Nastavení úlohy Logpush pro koncové body úloh.

Kontrakt SQL transformeru

Transformer je jeden SQL dotaz. Zdrojovou tabulkou je datová sada Logpush, výstup dotazu se stává doručeným záznamem.

SELECT ClientIP, RayID, EdgeResponseStatus
FROM http_requests
WHERE EdgeResponseStatus >= 400

FROM název tabulky musí odpovídat datové sadě úlohy Logpush, ke které je transformátor připojen. Pokud neodpovídá, připojení selže.

Záznamy, které neodpovídají WHERE se z výstupu vynechají.

Podporované SQL

Transformers používají stejný dialekt SQL jako Cloudflare Pipelines. Podporovány jsou tyto operace:

Není podporováno

Validace

Každý dotaz SQL je před uložením ověřen proti schématu cílové datové sady. Neznámá pole, nesprávné typy, neplatná syntaxe, neznámé datové sady a nepodporované operace jsou při nahrávání odmítnuty.

V dashboardu se chyby ověření zobrazují přímo v editoru s čísly řádků a sloupců. Přes API se vracejí v errors pole odpovědi.

Limity

Limit Hodnota
Velikost SQL dotazu 10 KB
Délka názvu Transformer 255 bajtů
Délka popisu Transformer 4,096 bajtů
Přístup k souborovému systému z dotazu Žádné
Síťový přístup z dotazu Žádné
Velikost bloku dávky 1,000 řádků

Příklady

Následující příklady uplatňují všechny funkce z Klíčové funkce v jediném dotazu. Každý z nich ponechá jen podmnožinu záznamů, přetvaruje zbývající a odstraní pole, která následná část kanálu nepotřebuje.

Filtrování a přetváření záznamů protokolu auditu

Tento transformátor ponechává pouze update akce z auditní stopy a přetváří zbývající záznamy pro následné doručení. Konkrétně:

Vstupní záznam z audit_logs_v2 datová sada:

{
  "ActionType": "update",
  "ActorEmail": "[email protected]",
  "ActorID": "a1b2c3d4",
  "ActorIPAddress": "203.0.113.42",
  "ActorType": "user",
  "ActionTimestamp": "2026-05-21T15:00:00Z",
  "AccountID": "90796717",
  "ResourceID": "r1s2t3u4",
  "ResourceType": "zone",
  "ActorContext": "dashboard"
}

Transformer:

SELECT
  extract(epoch FROM to_timestamp(ActionTimestamp)) AS unix_ts,
  UPPER(ActionType) AS action_type,
  'Cloudflare' AS provider,
  named_struct(
    'type', ActorType,
    'email', ActorEmail,
    'ip', ActorIPAddress
  ) AS actor,
  ResourceType = 'zone' AS is_zone,
  [ResourceType, ResourceID] AS resource_meta
FROM audit_logs_v2
WHERE ActionType = 'update'

Doručený záznam:

{
  "action_type": "UPDATE",
  "actor": {
    "email": "[email protected]",
    "ip": "203.0.113.42",
    "type": "user"
  },
  "is_zone": true,
  "provider": "Cloudflare",
  "resource_meta": ["zone", "r1s2t3u4"],
  "unix_ts": 1779375600
}

Filtrování a přetváření záznamů HTTP požadavků

Tento transformátor ponechává veškerý provoz HTTP kromě health checky, nástroje pro sběr metrik (scrapery) a interní hostname. Jde o běžný postup pro týmy, které chtějí kompletní tok protokolů bez předvídatelného šumu. Konkrétně:

Vstupní záznam z http_requests datová sada:

{
  "ClientIP": "203.0.113.42",
  "ClientRequestHost": "example.com",
  "ClientRequestMethod": "POST",
  "ClientRequestPath": "/api/checkout",
  "ClientRequestUserAgent": "curl/7.85.0",
  "EdgeResponseStatus": 502,
  "EdgeStartTimestamp": "2026-05-21T15:00:00Z",
  "RayID": "8e2a1c60ef9e1c9a",
  "OriginResponseTime": 3200000000,
  "WAFAction": "unknown"
}

Tento příklad předpokládá EdgeStartTimestamp je doručováno jako řetězec ve formátu RFC3339. Pokud vaše úloha doručuje časová razítka jako Unix nanosekundy, vynechte to_timestamp() obal a místo toho hodnotu vydělte 1e9.

Transformer:

SELECT
  extract(epoch FROM to_timestamp(EdgeStartTimestamp)) AS unix_ts,
  UPPER(ClientRequestMethod) AS method,
  'Cloudflare' AS provider,
  named_struct(
    'host', ClientRequestHost,
    'path', ClientRequestPath,
    'method', ClientRequestMethod
  ) AS request,
  EdgeResponseStatus >= 500 AS is_server_error,
  [ClientRequestHost, ClientRequestPath] AS request_meta
FROM http_requests
WHERE ClientRequestHost NOT IN ('internal.example.com', 'health.example.com')
  AND ClientRequestPath NOT LIKE '/healthz%'
  AND ClientRequestPath NOT LIKE '/metrics%'

Doručený záznam:

{
  "is_server_error": true,
  "method": "POST",
  "provider": "Cloudflare",
  "request": {
    "host": "example.com",
    "method": "POST",
    "path": "/api/checkout"
  },
  "request_meta": ["example.com", "/api/checkout"],
  "unix_ts": 1779375600
}

Chyby a řešení problémů

Chyby API

HTTP Zpráva Příčina
403 transformer feature is not available for this account Váš účet nemá přístup k funkci Transformers. Obraťte se na svého obchodního zástupce Cloudflare.
400 missing required field: name Přidejte name do těla požadavku.
400 missing required field: code Přidejte neprázdnou code svým SQL dotazem.
400 Chyba ověření schématu (neznámý sloupec, neplatná syntaxe) Dotaz SQL odkazuje na neexistující pole, používá nepodporovanou syntaxi nebo obsahuje neshodu typů. Opravte dotaz a zkuste to znovu.
413 (entita požadavku je příliš velká) Dotaz SQL přesahuje 10 KB. Zkraťte dotaz.
400 transformer N not found for this account ID transformeru neexistuje nebo patří jinému účtu.
400 transformer N dataset "X" does not match job dataset "Y" Transformeru FROM tabulka neodpovídá datové sadě úlohy.

Selhání za běhu

Pokud transformátor při zpracování dávky selže, celá dávka selže: nic se pro ni nedoručí, u úlohy Logpush se zaznamená chyba a Logpush dávku podle svého běžného plánu zopakuje. Automatický návrat k nezpracovaným (raw) protokolům není k dispozici.

Pokud selhání přetrvává, záznamy v postižených dávkách se nakonec zahodí a nelze je obnovit.

Poslední chyba se zobrazuje na last_error . Časté příčiny:

Chcete-li ladit, otevřete transformátor v Transformer Studio a použijte Spustit tlačítko a zobrazte náhled na ukázkovém záznamu. Logika ověřování a spouštění je stejná, takže problémy viditelné v produkčním prostředí se obvykle projeví i v náhledu.