# Server Log Monitoring



Your server already writes a line for every request it answers. Server Log Monitoring reads those lines and tells you what crawled your site, what it was given, and what that cost you.

```txt
66.249.66.1 - - [14/Sep/2026:08:12:44 +0000] "GET /blog/technical-seo HTTP/1.1" 200 18432 "-" "Googlebot/2.1"
```

From a line like this one, VitalSentinel works out:

* **Which bot it was**, checked against the IP ranges that crawler publishes, so a request only claiming to be Googlebot is named as fake.
* **Which URL your crawl budget went to**, and whether that URL earns anything back.
* **What your server answered** and how long it took, per bot and over time.

## What it answers [#what-it-answers]

* Is Googlebot crawling my site, how often, and is it getting errors or redirects?
* How much of my crawl budget goes to broken, redirected, parameterized or robots.txt-disallowed URLs?
* Which AI crawlers (training crawlers, AI search, AI assistants and agents) read my site, and do they respect robots.txt?
* Who is pretending to be Googlebot or another known bot?
* Which pages with search impressions has Google stopped re-crawling?
* Which sitemap URLs does Googlebot ignore, and which crawled pages are missing from the sitemap?

## How it works [#how-it-works]

1. **Connect a source.** Either the [Cloudflare Worker](/server-logs/connecting-a-source#cloudflare-worker), which collects in real time, or a [log-file source](/server-logs/connecting-a-source#log-file-sources) (SFTP, FTPS, Amazon S3, Cloudflare R2, Google Cloud Storage or a one-off upload), which is collected on a schedule. A domain collects from one source at a time.
2. **Every request gets classified.** Each hit is matched to VitalSentinel's bot registry, [verified](#bot-verification) where the crawler publishes its IP ranges, and grouped into the [sections](/server-logs/settings#sections) of your site that you define.
3. **Reports fill as requests arrive.** The Cloudflare Worker starts from the moment you connect it. A log-file source can also import past files, so your reports can start with history already in them.

## What gets collected [#what-gets-collected]

Server Log Monitoring reports on how your site is discovered, so it stores **five kinds of automated traffic** and drops everything else before it is written down:

| Kind                 | What it is                                                        |
| -------------------- | ----------------------------------------------------------------- |
| Search engines       | Google, Bing and the other crawlers that decide what gets indexed |
| AI training crawlers | Crawlers collecting pages to train AI models                      |
| AI search crawlers   | Crawlers building the indexes behind AI search answers            |
| AI assistants        | Assistants fetching a page because someone asked about it         |
| AI agents            | Automated agents browsing your site on a person's behalf          |

Everything else (SEO tools, social link previews, feed readers, archives, ad verifiers, security scanners, uptime and page-speed checkers) is dropped on arrival and never stored. So is any automated client that gives no name, URL or contact. Human visitors are never collected by this module.

Dropped traffic is still counted, so you can see how much was excluded and why. See [Excluded traffic](/server-logs/settings#excluded-traffic).

<Callout type="info">
  Query-parameter **names** are stored, never their values. The IP addresses of unverified and spoofed requests are never stored; those requests are grouped by network (AS number) instead.
</Callout>

## Bot verification [#bot-verification]

Anyone can put "Googlebot" in a User-Agent header. VitalSentinel checks each request's IP address against the IP ranges or reverse-DNS suffixes the bot's vendor publishes, and gives every hit one of three verdicts:

| Verdict        | Meaning                                                                                                                                                 |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Verified**   | The request came from an address the bot really uses (by IP range, reverse DNS or signature).                                                           |
| **Unverified** | It could not be confirmed either way, usually because the bot publishes no IP ranges or reverse-DNS suffixes to check against. Not the same as spoofed. |
| **Spoofed**    | It claimed to be a known bot but came from an address that bot doesn't use. Someone is using the bot's name without being the bot.                      |

A low verified share is not proof of fraud. Several AI crawlers, including ones Meta runs, publish neither IP ranges nor reverse-DNS suffixes, so their traffic can never be confirmed. Those bots show **Not measured** instead of 0%.

Googlebot-specific figures across the module (the Googlebot tiles, crawl map, stale-crawl and sitemap reports) count **verified Googlebot only**.

## Missing is never shown as zero [#missing-is-never-shown-as-zero]

When something was not measured, the module says so rather than drawing a zero:

* Days with no log data at all are drawn as **gaps** in charts, not as zero.
* The last bucket of a chart is shaded when it covers only part of a period. Its hits are a floor, not a fall.
* Figures that cannot be calculated read **Not measured**, **Not observed** or **Not measurable**, with a reason in the tooltip.
* When a report can only cover part of the date range you picked, an amber notice names the shorter window and why.

## Plans and limits [#plans-and-limits]

Server Log Monitoring is available on every plan. Each plan has a **monthly hit allowance**: the number of crawler hits the workspace can store per billing cycle, shared by all of its domains.

|                             | Free                   | Starter                     | Lite                        | Standard                    | Advanced                    |
| --------------------------- | ---------------------- | --------------------------- | --------------------------- | --------------------------- | --------------------------- |
| **Server log hits / month** | 500K                   | 3M                          | 10M                         | 50M                         | 150M                        |
| **Log sources**             | Cloudflare Worker only | Cloudflare, SFTP and others | Cloudflare, SFTP and others | Cloudflare, SFTP and others | Cloudflare, SFTP and others |

* Only stored hits count. Traffic the collection policy excludes does not use up the allowance.
* At the limit, collection stops until the next billing cycle starts (or within a few minutes of an upgrade). Nothing already collected is deleted, and new hits are counted as excluded rather than dropped silently.
* On the Free plan, log-file sources are not available. A single log-file job can backfill a year of history, which would spend a whole month's allowance at once. The Cloudflare Worker collects at the rate your site is actually crawled and is available on every plan.

See [Monthly hit allowance](/server-logs/settings#monthly-hit-allowance) for how usage is shown.

## How far back the data goes [#how-far-back-the-data-goes]

| Data                                                   | How far back                                                                                                  |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
| Overview, Bots, Pages, Responses and most reports      | Up to 12 months                                                                                               |
| Explore (individual requests)                          | Up to 12 months. Every error and redirect is kept in full; successful (2xx) responses are kept as a 1% sample |
| Per-page, per-bot request detail (the page drill-down) | About 7 days                                                                                                  |
| Intelligence reports                                   | Up to 180 days per view                                                                                       |

Retention is the same on every plan. See [Data & Privacy](/others/data-privacy#retention).

## Where to find it [#where-to-find-it]

Open a domain and select **Server Log Monitoring** in the sidebar. Until a source has delivered its first request, the entry opens the setup screen. After that it expands into the module's reports:

| Group            | Pages                                                     |
| ---------------- | --------------------------------------------------------- |
| **Overview**     | The module's dashboard                                    |
| **Bots**         | All bots, AI crawlers, Security                           |
| **Pages**        | Crawled pages, Sections, Crawl budget, Crawl map          |
| **Responses**    | Status codes over time, bot-by-status matrix, URLs to fix |
| **Intelligence** | Search Console, Web Analytics, RUM, Sitemap               |
| **Explore**      | Individual requests, grouped and filtered                 |
| **Settings**     | Log source, hit allowance, collection policy, sections    |

Server log data also shows up elsewhere:

* [Indexing Monitoring](/features/indexing-monitoring#server-log-insights) and [Robots.txt Monitoring](/features/robots-txt-monitoring#server-log-insights) gain cards built from your logs.
* 15 [server log alerts](/alerts/alert-types#server-log-monitoring-alerts) warn you about crawl problems.
* The [public API](/api/endpoints#server-log-monitoring) and the [MCP server](/mcp/tools#technical-seo-server-logs) can read this data too.

## Next steps [#next-steps]

<Cards>
  <Card title="Connecting a Source" href="/server-logs/connecting-a-source">
    Set up the Cloudflare Worker or a log-file source
  </Card>

  <Card title="Reports" href="/server-logs/reports">
    Overview, Bots, Pages, Responses and Explore
  </Card>

  <Card title="Intelligence" href="/server-logs/intelligence">
    Server logs joined with Search Console, Web Analytics, RUM and your sitemap
  </Card>

  <Card title="Settings" href="/server-logs/settings">
    Hit allowance, what gets collected, and sections
  </Card>
</Cards>
