← Cloudflare Logs / logs / logpull
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.