← Cloudflare Logs / logs / logpush / logpush-job / enable-destinations
Povolení Google BigQuery
Cloudflare Logpush umožňuje odesílat protokoly přímo do Google BigQuery (pomocí Legacy Streaming API) prostřednictvím Cloudflare dashboardu nebo přes API.
Vytvoření tabulky BigQuery a získání přístupu k ní
Cloudflare používá Google Application Credentials uvedené v úloze Logpush destination_conf a získejte oprávnění k zápisu do tabulky. Zadaný servisní účet potřebuje mít oprávnění k zápisu do dané tabulky.
Chcete-li povolit Logpush do BigQuery:
- Přejděte do Google Cloud Console pro svůj účet.
- Přejděte na IAM & Admin > Servisní účty, a vytvořte nový servisní účet.
- Přidejte BigQuery Data Editor roli v části Permissions. Vyžaduje minimálně
bigquery.tables.updateDataoprávnění. - Přidejte klíč v sekci Keys.
- Klikněte na Přidat klíč.
- Klikněte na Vytvořit nový klíč.
- Vyberte Key type JSON.
- Klikněte na Vytvořit.
- Uložte soubor Application Credentials JSON. Budete ho potřebovat při nastavování nové úlohy Logpush.
- V BigQuery vytvořte datovou sadu a tabulku. Viz pokyny od BigQuery ↗. Pokud například použijete
schema.jsonabqpříkaz:
gcloud auth activate-service-account --key-file=${KEY_FILE}
PROJECT_ID=<PROJECT_ID>
DATASET_ID=<DATASET_ID>
TABLE_ID=<TABLE_ID>
bq mk --table "${PROJECT_ID}:${DATASET_ID}.${TABLE_ID}" schema.jsonSpráva přes dashboard Cloudflare
-
V dashboardu Cloudflare přejděte na Logpush stránku na úrovni účtu nebo domény (známé také jako zóna).
Pro účet: Přejděte na Logpush ↗
Pro doménu (známou také jako zóna): Přejděte na Logpush ↗
-
Podle vaší volby máte přístup k datové sady v rozsahu účtu a datové sady s rozsahem zóny, v uvedeném pořadí.
-
Vyberte Vytvoření úlohy Logpush.
-
V Vyberte cíl, vyberte Google BigQuery.
-
Zadejte následující údaje o cíli:
- Project ID - ID vašeho projektu Google Cloud
- ID datové sady - dataset BigQuery obsahující vaši tabulku
- ID tabulky - tabulka BigQuery, do které se mají odesílat protokoly
- Service Account Credentials - vložte JSON klíče servisního účtu Google. Tento údaj se ukládá zašifrovaně a znovu se už nezobrazí.
Jakmile zadáte podrobnosti cíle, vyberte Pokračovat.
-
Vyberte datovou sadu, kterou chcete odesílat do úložné služby.
-
V dalším kroku musíte nakonfigurovat úlohu Logpush:
- Zadejte Název úlohy.
- V části Pokud se protokoly shodují, můžete vybrat, které události chcete do protokolů zahrnout nebo z nich odstranit. Více informací najdete v Filtry s dalšími informacemi. Tato možnost není dostupná u všech datových sad.
- V Odešlete následující pole, můžete se rozhodnout, zda chcete do cílového úložiště odesílat všechny protokoly, nebo si vybrat, které protokoly chcete odesílat.
-
V Advanced Options, můžete:
- Zvolte formát polí s časovým razítkem ve svých protokolech (
RFC3339(výchozí),Unix, neboUnixNano). - Vyberte míra vzorkování pro vaše protokoly, nebo odesílejte náhodně vzorkované procento protokolů.
- Povolte maskování pro
CVE-2021-44228. Tato možnost nahradí každý výskyt${hodnotoux{.
- Zvolte formát polí s časovým razítkem ve svých protokolech (
-
Vyberte Odeslat jakmile dokončíte konfiguraci úlohy Logpush.
Správa přes API
Chcete-li nastavit úlohu Logpush pro BigQuery:
- Vytvořte úlohu s příslušnou URL adresou koncového bodu a autentizačními parametry.
- Povolte úlohu, aby mohla začít odesílat protokoly.
Zajistěte, že Log Share oprávnění povolena, než se pokusíte přečíst nebo nakonfigurovat úlohu Logpush. Další informace najdete na Sekce Role.
1. Vytvořte úlohu
Chcete-li vytvořit úlohu, proveďte POST požadavek na koncový bod úloh Logpush s následujícími poli:
- název (volitelné) - Jako název úlohy použijte název své domény.
- destination_conf - Cíl protokolů složený z odkazu na tabulku BigQuery a přihlašovacích údajů ve formátu řetězce níže.
- <PROJECT_ID>, <DATASET_ID>, <TABLE_ID>: ID projektu, ID datové sady a ID tabulky určené tabulky BigQuery.
- <ENCODED_VALUE>: Zakódovaná hodnota souboru Application Credentials JSON jako
credentials, buď zakódované v base64 pomocíbase64:předponu, nebo zakódovaný pomocí URL encoding surl:prefix.
"bq://projects/<PROJECT_ID>/datasets/<DATASET_ID>/tables/<TABLE_ID>?credentials=<ENCODED_VALUE>"- dataset - Kategorie protokolů, které chcete přijímat. Viz Datové sady pro úplný seznam podporovaných datových sad.
- output_options (volitelné) - Chcete-li nakonfigurovat pole, sample rate a formát časového razítka, viz Možnosti výstupu protokolu. Pro časové razítko Cloudflare doporučuje použít
timestamps=rfc3339.- Při zahrnutí vlastních možností formátování, jako je
output_type, nebo jakékoli možnosti předpony, přípony, oddělovače či šablony, nezapomeňte nastavitstringify_objecttaké true, jinak pole sobjecttypu nemusí být serializován ve formátu kompatibilním s BigQuery Legacy Streaming API.
- Při zahrnutí vlastních možností formátování, jako je
Příklad požadavku pomocí cURL:
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Logs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "<DOMAIN_NAME>",
"destination_conf": "bq://projects/<PROJECT_ID>/datasets/<DATASET_ID>/tables/<TABLE_ID>?credentials=<ENCODED_VALUE>",
"output_options": {
"field_names": [
"ClientIP",
"ClientRequestHost",
"ClientRequestMethod",
"ClientRequestURI",
"EdgeEndTimestamp",
"EdgeResponseBytes",
"EdgeResponseStatus",
"EdgeStartTimestamp",
"RayID"
],
"timestamp_format": "rfc3339"
},
"max_upload_bytes": 5000000,
"max_upload_records": 50000,
"dataset": "http_requests",
"enabled": true
}'Odpověď:
{
"errors": [],
"messages": [],
"result": {
"id": <JOB_ID>,
"dataset": "http_requests",
"kind": "",
"max_upload_bytes": 5000000,
"max_upload_records": 50000,
"enabled": true,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp", "EdgeResponseBytes", "EdgeResponseStatus" ,"EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "bq://projects/<PROJECT_ID>/datasets/<DATASET_ID>/tables/<TABLE_ID>?credentials=<ENCODED_VALUE>",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}Tímto provedete testovací nahrání s prázdným obsahem, abyste ověřili, že Logpush může nahrávat data, a může se zobrazit řádek s prázdnými daty.
Viz Spravovat Logpush pomocí cURL k aktualizaci úlohy (včetně jejího zapnutí a vypnutí).
Omezení
Vezměte na vědomí následující výchozí kvótu a limity, jak je popsáno v dokumentace BigQuery ↗.
Pro streamované vkládání do BigQuery platí následující limity:
- Maximální velikost HTTP požadavku (nekomprimováno, může zahrnovat hlavičky): 10 MB
- Maximální velikost řádku: 10 MB
- Maximální počet řádků na velikost požadavku: 50,000 řádků.
Jedná se o výchozí kvótu/limit. Úlohy Logpush byste měli přizpůsobit tomuto limitu, případně v případě potřeby požádat Google o jeho navýšení.
Integrace se službou Google Cloud Storage
Cloudflare Logpush umožňuje odesílat protokoly do Google Cloud Storage.
BigQuery podporuje načtení až 1,500 úloh na tabulku za den (včetně chyb), přičemž každé načtení může obsahovat až 10 milionů souborů. To znamená, že do BigQuery můžete načítat data jednou za minutu a zahrnout do jednoho načtení až 10 milionů souborů. Další informace najdete v kvótách BigQuery pro úlohy načítání.
Logpush doručuje dávky protokolů co nejdříve, což znamená, že můžete za minutu obdržet i více než jednu dávku souborů. Zajistěte, aby vaše úloha BigQuery byla nastavena na příjem souborů v daném časovém intervalu, například každou minutu, a ne při každém přijetí souboru. Import souborů do BigQuery ihned po přijetí každého souboru Logpush by mohl rychle vyčerpat vaši kvótu BigQuery.
Příklad nastavení plánovaného načítání úlohy pomocí BigQuery podporovaný komunitou najdete v Cloudflare + Google Cloud | Repozitář integrací ↗. Mějte na paměti, že tento repozitář je poskytován podle možností a není pravidelně udržován.