
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Wed, 15 Apr 2026 21:09:40 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Introducing the GraphQL Analytics API: exactly the data you need, all in one place]]></title>
            <link>https://blog.cloudflare.com/introducing-the-graphql-analytics-api-exactly-the-data-you-need-all-in-one-place/</link>
            <pubDate>Thu, 12 Dec 2019 15:41:04 GMT</pubDate>
            <description><![CDATA[ With our new GraphQL Analytics API, all of your performance, security, and reliability data is available from one endpoint, and you can select exactly what you need. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Today we’re excited to announce a powerful and flexible new way to explore your Cloudflare metrics and logs, with an API conforming to the industry-standard <a href="https://graphql.org/">GraphQL specification</a>. With our new GraphQL Analytics API, all of your performance, security, and reliability data is available from one endpoint, and you can select exactly what you need, whether it’s one metric for one domain or multiple metrics aggregated for all of your domains. You can ask questions like <i>“How many cached bytes have been returned for these three domains?”</i> Or, <i>“How many requests have all the domains under my account received?”</i> Or even, <i>“What effect did changing my firewall rule an hour ago have on the responses my users were seeing?”</i></p><p>The GraphQL standard also has strong <a href="https://graphql.org/community/">community resources</a>, from extensive documentation to front-end clients, making it easy to start creating simple queries and progress to building your own sophisticated analytics dashboards.</p>
    <div>
      <h3>From many APIs...</h3>
      <a href="#from-many-apis">
        
      </a>
    </div>
    <p>Providing insights has always been a core part of Cloudflare’s offering. After all, by using Cloudflare, you’re relying on us for key parts of your infrastructure, and so we need to make sure you have the data to manage, <a href="https://www.cloudflare.com/application-services/solutions/app-performance-monitoring/">monitor</a>, and troubleshoot your website, app, or service. Over time, we developed a few key data APIs, including ones providing information regarding your domain’s traffic, DNS queries, and firewall events. This multi-API approach was acceptable while we had only a few products, but we started to run into some challenges as we added more products and analytics. We couldn’t expect users to adopt a new analytics API every time they started using a new product. In fact, some of the customers and partners that were relying on many of our products were already becoming confused by the various APIs.</p><p>Following the multi-API approach was also affecting how quickly we could develop new analytics within the Cloudflare dashboard, which is used by more people for data exploration than our APIs. Each time we built a new product, our product engineering teams had to implement a corresponding analytics API, which our user interface engineering team then had to learn to use. This process could take up to several months for each new set of analytics dashboards.</p>
    <div>
      <h3>...to one</h3>
      <a href="#to-one">
        
      </a>
    </div>
    <p>Our new GraphQL Analytics API solves these problems by providing access to all Cloudflare analytics. It offers a standard, flexible syntax for describing exactly the data you need and provides predictable, matching responses. This approach makes it an ideal tool for:</p><ol><li><p>Data exploration. You can think of it as a way to query your own virtual data warehouse, full of metrics and logs regarding the performance, security, and reliability of your Internet property.</p></li><li><p>Building amazing dashboards, which allow for flexible filtering, sorting, and drilling down or rolling up. Creating these kinds of dashboards would normally require paying thousands of dollars for a specialized analytics tool. You get them as part of our product and can customize them for yourself using the API.</p></li></ol><p>In a companion post that was also published today, my colleague Nick discusses using the GraphQL Analytics API to build dashboards. So, in this post, I’ll focus on examples of how you can use the API to explore your data. To make the queries, I’ll be using <a href="https://electronjs.org/apps/graphiql"><i>GraphiQL</i></a>, a popular open-source querying tool that takes advantage of GraphQL’s capabilities.</p>
    <div>
      <h3>Introspection: what data is available?</h3>
      <a href="#introspection-what-data-is-available">
        
      </a>
    </div>
    <p>The first thing you may be wondering: if the GraphQL Analytics API offers access to so much data, how do I figure out what exactly is available, and how I can ask for it? GraphQL makes this easy by offering “introspection,” meaning you can query the API itself to see the available data sets, the fields and their types, and the operations you can perform. <i>GraphiQL</i> uses this functionality to provide a “Documentation Explorer,” query auto-completion, and syntax validation. For example, here is how I can see all the data sets available for a zone (domain):</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6v9HqDr6UGaifduopecAMw/6f89f52d3ca080c7385710598bd8b26e/image1.gif" />
            
            </figure><p>If I’m writing a query, and I’m interested in data on firewall events, auto-complete will help me quickly find relevant data sets and fields:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5RSkIKlSwBMy7BVZWPWp0q/c605fa07bb8997758e2e84cbb47406f9/image6.gif" />
            
            </figure>
    <div>
      <h3>Querying: examples of questions you can ask</h3>
      <a href="#querying-examples-of-questions-you-can-ask">
        
      </a>
    </div>
    <p>Let’s say you’ve made a major product announcement and expect a surge in requests to your blog, your application, and several other zones (domains) under your account. You can check if this surge materializes by asking for the requests aggregated under your account, in the 30 minutes after your announcement post, broken down by the minute:</p>
            <pre><code>{
 viewer { 
   accounts (filter: {accountTag: $accountTag}) {
     httpRequests1mGroups(limit: 30, filter: {datetime_geq: "2019-09-16T20:00:00Z", datetime_lt: "2019-09-16T20:30:00Z"}, orderBy: [datetimeMinute_ASC]) {
	  dimensions {
		datetimeMinute
	  }
	  sum {
		requests
	  }
	}
   }
 }
}</code></pre>
            <p>Here is the first part of the response, showing requests for your account, by the minute:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7hsWUNy86iymsBlbiOfjL5/054c2bce4d1fef4090e56f264fee7aec/Screen-Shot-2019-09-17-at-2.21.41-PM.png" />
            
            </figure><p>Now, let’s say you want to compare the traffic coming to your blog versus your marketing site over the last hour. You can do this in one query, asking for the number of requests to each zone:</p>
            <pre><code>{
 viewer {
   zones(filter: {zoneTag_in: [$zoneTag1, $zoneTag2]}) {
     httpRequests1hGroups(limit: 2, filter: {datetime_geq: "2019-09-16T20:00:00Z",
datetime_lt: "2019-09-16T21:00:00Z"}) {
       sum {
         requests
       }
     }
   }
 }
}</code></pre>
            <p>Here is the response:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1piQ5uNUOVcsX3AqEADplu/08f469a6a92b8df8a2e59e523aa497b0/Screen-Shot-2019-12-11-at-4.04.37-PM.png" />
            
            </figure><p>Finally, let’s say you’re seeing an increase in error responses. Could this be correlated to an attack? You can look at error codes and firewall events over the last 15 minutes, for example:</p>
            <pre><code>{
 viewer {
   zones(filter: {zoneTag: $zoneTag}) {
     httpRequests1mGroups (limit: 100,
filter: {datetime_geq: "2019-09-16T21:00:00Z",
datetime_lt: "2019-09-16T21:15:00Z"}) {
       sum {
         responseStatusMap {
           edgeResponseStatus
           requests
         }
       }
     }
    firewallEventsAdaptiveGroups (limit: 100,
filter: {datetime_geq: "2019-09-16T21:00:00Z",
datetime_lt: "2019-09-16T21:15:00Z"}) {
       dimensions {
         action
       }
       count
     }
    }
  }
}</code></pre>
            <p>Notice that, in this query, we’re looking at multiple datasets at once, using a common zone identifier to “join” them. Here are the results:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7G5to39LSIQSOtv9KgIzIL/78f15ef423f901c4e027ef7cb67cddd8/Screen-Shot-2019-12-11-at-4.28.28-PM.png" />
            
            </figure><p>By examining both data sets in parallel, we can see a correlation: 31 requests were “dropped” or blocked by the Firewall, which is exactly the same as the number of “403” responses. So, the 403 responses were a result of Firewall actions.</p>
    <div>
      <h3>Try it today</h3>
      <a href="#try-it-today">
        
      </a>
    </div>
    <p>To learn more about the GraphQL Analytics API and start exploring your Cloudflare data, follow the “Getting started” guide in our <a href="https://developers.cloudflare.com/analytics/graphql-api/getting-started/">developer documentation</a>, which also has details regarding the current data sets and time periods available. We’ll be adding more data sets over time, so take advantage of the introspection feature to see the latest available.</p><p>Finally, to make way for the new API, the Zone Analytics API is now deprecated and will be sunset on May 31, 2020. The data that Zone Analytics provides is available from the GraphQL Analytics API. If you’re currently using the API directly, please follow our <a href="https://developers.cloudflare.com/analytics/migration-guides/zone-analytics/">migration guide</a> to change your API calls. If you get your analytics using the Cloudflare dashboard or our <a href="https://docs.datadoghq.com/integrations/cloudflare/">Datadog integration</a>, you don’t need to take any action.</p>
    <div>
      <h3>One more thing....</h3>
      <a href="#one-more-thing">
        
      </a>
    </div>
    <p>In the API examples above, if you find it helpful to get analytics aggregated for all the domains under your account, we have something else you may like: a brand new <a href="https://dash.cloudflare.com/?account=analytics">Analytics dashboard</a> (in beta) that provides this same information. If your account has many zones, the dashboard is helpful for knowing summary information on metrics such as requests, bandwidth, cache rate, and error rate. Give it a try and let us know what you think using the feedback link above the new dashboard.</p> ]]></content:encoded>
            <category><![CDATA[Analytics]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[API]]></category>
            <category><![CDATA[GraphQL]]></category>
            <category><![CDATA[Developers]]></category>
            <guid isPermaLink="false">4pDXIFEVbZmJSNDNttfleG</guid>
            <dc:creator>Filipp Nisenzoun</dc:creator>
        </item>
        <item>
            <title><![CDATA[Announcing deeper insights and new monitoring capabilities from Cloudflare Analytics]]></title>
            <link>https://blog.cloudflare.com/announcing-deeper-insights-and-new-monitoring-capabilities/</link>
            <pubDate>Mon, 09 Dec 2019 15:15:00 GMT</pubDate>
            <description><![CDATA[ This week we’re excited to announce a number of new products and features that provide deeper security and reliability insights, “proactive” analytics when there’s a problem, and more powerful ways to explore your data. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>This week we’re excited to announce a number of new products and features that provide deeper security and reliability insights, “proactive” analytics when there’s a problem, and more powerful ways to explore your data.</p><p>If you’ve been a user or follower of Cloudflare for a little while, you might have noticed that we take pride in turning technical challenges into easy solutions. Flip a switch or run a few API commands, and the attack you’re facing is now under control or your site is now 20% faster. However, this ease of use is even more helpful if it’s complemented by analytics. Before you make a change, you want to be sure that you understand your current situation. After the change, you want to confirm that it worked as intended, ideally as fast as possible.</p><p>Because of the front-line position of Cloudflare’s network, we can provide comprehensive metrics regarding both your traffic and the security and performance of your Internet property. And best of all, there’s nothing to set up or enable. <a href="https://www.cloudflare.com/analytics/">Cloudflare Analytics</a> is automatically available to all Cloudflare users and doesn’t rely on Javascript trackers, meaning that our metrics include traffic from APIs and bots and are not skewed by ad blockers.</p><p>Here’s a sneak peek of the product launches. Look out for individual blog posts this week for more details on each of these announcements.</p><ul><li><p><b>Product Analytics</b>:</p><ul><li><p>Today, we’re making Firewall Analytics available to Business and Pro plans, so that more customers understand how well Cloudflare mitigates attacks and handles malicious traffic. And we’re highlighting some new metrics, such as the rate of solved captchas (useful for Bot Management), and features, such as customizable reports to facilitate sharing and archiving attack information.</p></li><li><p>We’re introducing Load Balancing Analytics, which shows traffic flows by load balancer, pool, origin, and region, and helps explain why a particular origin was selected to receive traffic.</p></li></ul></li><li><p><b>Monitoring</b>:</p><ul><li><p>We’re announcing tools to help you monitor your origin either actively or passively and automatically reroute your traffic to a different server when needed. Because Cloudflare sits between your end users and your origin, we can spot problems with your servers without the use of external monitoring services.</p></li></ul></li><li><p><b>Data tools</b>:</p><ul><li><p>The product analytics we’ll be featuring this week use a new API behind the scenes. We’re making this API generally available, allowing you to easily build custom dashboards and explore all of your Cloudflare data the same way we do, so you can easily gain insights and identify and debug issues.</p></li></ul></li><li><p><b>Account Analytics</b>:</p><ul><li><p>We’re releasing (in beta) a new dashboard that shows aggregated information for all of the domains under your account, allowing you to know what’s happening at a glance.</p></li></ul></li></ul><p>We’re excited to tell you about all of these new products in this week’s posts and would love to hear your thoughts. If you’re not already subscribing to the blog, <a href="/subscribe/">sign up now</a> to receive daily updates in your inbox.</p> ]]></content:encoded>
            <category><![CDATA[Insights]]></category>
            <category><![CDATA[Analytics]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Load Balancing]]></category>
            <guid isPermaLink="false">36PqKr3OPz3YyEdu7xwpTm</guid>
            <dc:creator>Filipp Nisenzoun</dc:creator>
        </item>
        <item>
            <title><![CDATA[Logpush: the Easy Way to Get Your Logs to Your Cloud Storage]]></title>
            <link>https://blog.cloudflare.com/cloudflare-logpush-the-easy-way-to-get-your-logs-to-your-cloud-storage/</link>
            <pubDate>Mon, 25 Feb 2019 16:00:00 GMT</pubDate>
            <description><![CDATA[ Today, we’re excited to announce a new way to get your logs: Logpush, a tool for uploading your logs to your cloud storage provider, such as Amazon S3 or Google Cloud Storage. It’s now available in Early Access for Enterprise domains. ]]></description>
            <content:encoded><![CDATA[ <p></p>
    <div>
      <h4>Introducing Logpush</h4>
      <a href="#introducing-logpush">
        
      </a>
    </div>
    <p>Today, we’re excited to announce a new way to get your logs: Logpush, a tool for uploading your logs to your cloud storage provider, such as Amazon S3 or Google Cloud Storage. It’s now available in Early Access for Enterprise domains.</p><p>We first explained Cloudflare’s <a href="/what-cloudflare-logs/">logging functionality</a> almost six years ago. Since then, the number of domains on our network has grown by ten times. We’ve continued giving our Enterprise customers the ability to download logs using a <a href="https://developers.cloudflare.com/logs/logpull-api/">REST API</a>, which has gotten a large number of functional and technical updates. We’ve also been paying attention to how our customers’ needs have evolved, especially as we protect and accelerate increasingly larger domains. This led to the development of Logpush.</p>
    <div>
      <h4>The Value of Logs</h4>
      <a href="#the-value-of-logs">
        
      </a>
    </div>
    <p>Cloudflare works by being an intermediary between our customers’ websites, applications, and devices, and their end-users or potential attackers. As part of providing our service, we create a record of each request that goes through our network. These records (or request logs) have detailed information regarding the connecting client, our actions—including whether the request was served by the cache or blocked by our firewall—and the response from the origin web server. For Enterprise customers who request these logs, we save them for up to a week and make them available for download.</p><p>Although some of our customers download their logs only when they need to investigate a problem or question, others download them regularly by writing scripts using our “Logpull” API. They may then combine their logs with data from other parts of their infrastructure, such as their application servers or marketing tracking tools. This process allows them to create analytics to see what is happening across all of their platforms; debug issues with their Cloudflare configuration or their own systems; and monitor traffic and make adjustments to improve security or performance. In fact, many download the logs and then upload them to a few common cloud services that have become popular for storage and performing analysis.</p><p>We were glad to learn that our logs were proving so useful, but having each customer write their own script simply to download and then upload them to the same few places seemed really inefficient. Couldn’t we just do that on their behalf?</p>
    <div>
      <h4>Pushing Instead of Pulling</h4>
      <a href="#pushing-instead-of-pulling">
        
      </a>
    </div>
    <p>So that’s the basic idea behind Logpush: rather than writing a script to repeatedly download logs using our Logpull API, simply tell us once where to send them, and we’ll push them there for you. You’ll get the exact same logs either way. If you’re already using Logpull, we’ve made transitioning to Logpush easy by keeping all the functionality the same: you can select the fields you want to receive; change the time format for timestamp fields; and even get a randomly-sampled percentage of logs. When setting up a push job using the Logpush API, you can directly copy all of the previous options you had set in Logpull using the `logpull_options` parameter. We also provide a Logpush UI in our Analytics tab that walks you through the setup for a domain. Full documentation on all of our logging products is available in our new <a href="https://developers.cloudflare.com/logs/">developer documentation</a> section.</p><p>Logpush currently works with Amazon S3 and Google Cloud Storage, two of the most popular cloud storage providers. As you may already know, we’re big proponents of <a href="/bandwidth-alliance/">working with many cloud services</a>, so more popular destinations are coming soon. Want to help us decide where to push next? Take <a href="https://goo.gl/forms/CqkUu68ZwaTrtt8g2">this survey</a>. Interested in helping us build? We’re hiring Systems Engineers with an interest in data in <a href="https://boards.greenhouse.io/cloudflare/jobs/584886?gh_jid=584886">San Francisco</a>, <a href="https://boards.greenhouse.io/cloudflare/jobs/1277846?gh_jid=1277846">London</a>, and <a href="https://boards.greenhouse.io/cloudflare/jobs/1418746?gh_jid=1418746">Austin</a>.</p> ]]></content:encoded>
            <category><![CDATA[Analytics]]></category>
            <category><![CDATA[Data]]></category>
            <category><![CDATA[Privacy]]></category>
            <guid isPermaLink="false">5xRwdF89wuNoZ36P1qyxjO</guid>
            <dc:creator>Filipp Nisenzoun</dc:creator>
        </item>
    </channel>
</rss>