在Cloudflare免费计划中获取类似Pro计划的分析信息

Cloudflare的管理界面提供了一些很好的流量分析选项。其中,仪表板的分析界面(Site Analytics)能够从各个方面对网站(区域)接收到的HTTP请求进行统计分析,并显示出通信的趋势,有助于理解通信情况。
https://support.cloudflare.com/hc/en-us/articles/360037684251-Understanding-Cloudflare-Site-Analytics

例子的表示

试着按照国家来看一下

Screen Shot 2021-12-07 at 22.55.42.png

分别根据状态码来查看

Screen Shot 2021-12-07 at 22.56.55.png

免费计划

Screen Shot 2021-12-07 at 22.54.34.png
Screen Shot 2021-12-15 at 20.37.32.png

GraphQL分析API

即使是 Free计划,只要通过 GraphQL Analytics API,也能获取类似的统计和分析信息。请参考:https://developers.cloudflare.com/analytics/graphql-api

查询示例

我们将对12月1日至7日的接收流量进行按国家进行分析,并获得结果。
我们使用API TOKEN来阅读分析和日志。
https://developers.cloudflare.com/api/tokens/create/template

curl -s -X POST -H "Authorization: Bearer $TOKEN_ANA" -H 'Content-Type: application/json' --data '{ "query": "query { viewer { zones(filter: {zoneTag: $ZONETAG}) { httpRequests1dGroups(limit: 7, orderBy: [date_ASC], filter: { date_gt: $DATEGT, date_lt: $DATELT }) { date: dimensions { date } sum { countryMap { requests, clientCountryName } } } } } }", "variables": { "ZONETAG":"<ゾーンタグ>", "DATEGT": "2021-12-01", "DATELT": "2021-12-07" } }' https://api.cloudflare.com/client/v4/graphql/

我得到了以下的结果。

{
  "data": {
    "viewer": {
      "zones": [
        {
          "httpRequests1dGroups": [
            {
              "date": {
                "date": "2021-12-02"
              },
              "sum": {
                "countryMap": [
                  {
                    "clientCountryName": "FR",
                    "requests": 1
                  },
                  {
                    "clientCountryName": "GB",
                    "requests": 17
                  },
                  {
                    "clientCountryName": "US",
                    "requests": 1
                  }
                ]
              }
            },
            {
              "date": {
                "date": "2021-12-04"
              },
              "sum": {
                "countryMap": [
                  {
                    "clientCountryName": "FR",
                    "requests": 18
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  },
  "errors": null
}

由于获得了信息,您还可以将其图形化。

Screen Shot 2021-12-15 at 21.07.08.png

还可以获得其他分析信息。

        {
          "httpRequests1dGroups": [
            {
              "dimensions": {
                "date": "2021-12-02"
              },
              "sum": {
                "bytes": 28952,
                "cachedBytes": 967,
                "cachedRequests": 1,
                "contentTypeMap": [
                  {
                    "bytes": 9846,
                    "edgeResponseContentTypeName": "html",
                    "requests": 1
                  },
                  {
                    "bytes": 19106,
                    "edgeResponseContentTypeName": "txt",
                    "requests": 18
                  }
                ],
                "countryMap": [
                  {
                    "bytes": 1067,
                    "clientCountryName": "FR"
                  },
                  {
                    "bytes": 18039,
                    "clientCountryName": "GB"
                  },
                  {
                    "bytes": 9846,
                    "clientCountryName": "US"
                  }
                ],
                "requests": 19,
                "responseStatusMap": [
                  {
                    "edgeResponseStatus": 403,
                    "requests": 18
                  },
                  {
                    "edgeResponseStatus": 503,
                    "requests": 1
                  }
                ]
              }
            },

总结

需要付出一些额外工作,但信息来源可以从GraphQL Analytics API获得,所以即使是免费计划也可以在一定程度上掌握信息。
另外,GraphQL Analytics API还可以获取HTTP以外的信息。

因为有教程可以参考,我觉得这会对你有帮助。
https://developers.cloudflare.com/analytics/graphql-api/tutorials

此外, 除了我们刚刚介绍的网站分析页面外, 还提供了其他统计和分析功能。详细信息请参考以下链接:
https://developers.cloudflare.com/analytics/

广告
将在 10 秒后关闭
bannerAds