INTEGRITY Dokumentace

Pochopení základů

Vzor přístupu

Základní vzor přístupu je zobrazte mi všechny protokoly pro zónu Z za minutu M kde minuta M odkazuje na dobu, kdy byly záznamy protokolu zapsány na disk v systému Cloudflare pro agregaci protokolů.

Nejprve zkuste spouštět dotaz každou minutu. Pokud jsou odpovědi příliš malé, přejděte až na 5 minut, což bude vhodné pro většinu zón. Pokud jsou odpovědi příliš velké, zkuste interval zkrátit až na 15 sekund.

Pokud má vaše zóna tolik protokolů, že přečtení 1 minuty protokolů trvá déle než 1 minutu, spusťte 2 workery posunuté vůči sobě, kdy každý z nich vyžádá 1 minutu protokolů každé 2 minuty.

Data vrácená prostřednictvím API se při opakovaných voláních nemění. Pořadí zpráv v odpovědi se může lišit, ale jejich počet a obsah zůstanou pro daný dotaz vždy stejné, dokud je kód odpovědi 200 a při čtení těla odpovědi nedojde k žádné chybě.

Protože náš systém zpracování protokolů přijímá data v dávkách, budou mít zóny s méně než 1 milionem požadavků za minutu většinou „prázdné“ minuty. Dotazy na takovou minutu vrací odpovědi se stavem 200 ale bez dat v těle. Neznamená to, že Cloudflare v dané minutě nezpracoval přes proxy žádné požadavky. Znamená to pouze, že náš systém v dané minutě nezpracoval dávku logů pro danou zónu.

Pořadí vrácených dat

logs/received API endpoint zpřístupňuje data podle času přijetí, tedy podle času, kdy byla událost zapsána na disk v agregačním systému Cloudflare Logs.

Řazení podle času agregace protokolu namísto času jeho vzniku vede k nižší (rychlejší) latenci zpracování protokolů a k deterministickým výsledkům stahování. Funkčně je to podobné sledování protokolového souboru v reálném čase nebo čtení z rsyslog (i když po částech).

To znamená, že k získání protokolů za dané časové období můžete zadat jedno volání pro každou po sobě jdoucí minutu (nebo jiné časové období). Protože jsou řádky protokolu seskupovány podle času přijetí a zpřístupnění, nedochází k pozdě příchozím datům. Odpověď pro danou minutu se nikdy nezmění. Nemusíte opakovaně dotazovat dané časové období, abyste získali protokoly, jak postupně konvergují v našem agregačním systému.

Formát vrácených dat

Logpull API vrací data ve formátu NDJSON, kde je každý řádek logu platným objektem JSON. Tento formát vyžadují hlavní analytické nástroje jako Google BigQuery a AWS Kinesis.

Chcete-li převést výsledná data protokolu na pole JSON s jedním prvkem pole pro každý řádek protokolu, můžete použít jq nástroj. V podstatě přesměrujete odpověď API rourou do jq pomocí slurp (nebo jednoduše s) příznak:

<API request data> | jq -s

Viz Stáhněte si jq ↗ s dalšími informacemi o získání a instalaci jq.

Následuje ukázkový protokol s výchozími poli:

{
  "ClientIP": "89.163.242.206",
  "ClientRequestHost": "www.theburritobot.com",
  "ClientRequestMethod": "GET",
  "ClientRequestURI": "/static/img/testimonial-hipster.png",
  "EdgeEndTimestamp": 1506702504461999900,
  "EdgeResponseBytes": 69045,
  "EdgeResponseStatus": 200,
  "EdgeStartTimestamp": 1506702504433000200,
  "RayID": "3a6050bcbe121a87"
}

Doba uchovávání dat

Protokoly můžete dotazovat od 1 minuty v minulosti (vzhledem ke skutečnému okamžiku odeslání dotazu) a sahat zpět nejméně 3 dny, maximálně 7 dní. Pro delší období doporučujeme použít Logpush.