阿里云新BGP高防IP服务的网站访问日志(包含CC攻击日志)与日志服务联动,为您提供实时分析与报表中心功能。

背景信息

根据APNIC 2017年DDoS风险报告,超过80%的DDoS攻击都会混合HTTP攻击,而其中混合的CC攻击尤其隐蔽,因此通过日志对访问和攻击行为进行即时分析研究、附加防护策略就显得尤其重要。

日志服务实时采集接入高防IP防护的网站业务的访问日志、CC攻击日志,并对采集到的日志数据进行实时检索与分析,以仪表盘形式展示查询结果。

开通全量日志服务

  1. 登录新BGP高防IP管理控制台,定位到统计 > 全量日志页面,单击立即购买前往全量日志服务购买页面
  2. 根据您的业务需要,选择合适的全量日志服务规格。
    • 日志存储量:日志信息的最大存储空间,单位TB。

      当您选购的日志存储空间占满后,将不再继续存储新的日志信息。建议您关注日志存储空间的使用量,及时升级日志存储量规格。

    • 使用时长:全量日志服务的有效期。

      全量日志服务有效期到期后,将停止存储新的日志信息。服务到期七天后如仍未续费延长服务有效期,将自动删除所有日志信息。

    全量日志服务的单价为500元/TB(日志存储量)/月(使用时长)。

    说明 当全量日志服务的日志存储量足够大且在服务有效期内,将从使用全量日志服务的第一天开始,连续存储180天的日志信息。第181天的日志信息,将覆盖第一天存储的日志信息,即始终保持存储最近180天的全量日志信息。


    日志存储量选择参考示例

    一般情况下,每条请求日志大约占用2 KB存储空间,如果您的业务的平均请求量为500 QPS,则一天的日志存储所需要的存储空间为:500*60*60*24*2 = 86,400,000 KB(即82 GB);系统默认的存储周期为180天,如果您需要存储最近180天的日志,则需要选择的日志存储量规格为14,832 GB(约14.5 TB)。

  3. 单击立即购买,完成支付。
  4. 回到新BGP高防IP管理控制台统计 > 全量日志页面,单击立即授权
  5. 云资源访问授权页面中,单击同意授权,授权新BGP高防服务将日志存储至您的日志服务专属日志库中。


开通全量日志服务并完成云资源访问授权后,您可以在全量日志页面单击规格详情,查看当前的全量日志服务规格信息。

说明 建议您在全量日志服务使用期间,定期关注全量日志存储空间的使用情况和服务有效期。当日志存储空间使用量超过70%时,请及时升级日志存储量规格,避免新产生的日志无法存储影响日志存储的连续性。

为网站启用全量日志

参考以下操作步骤,为您需要开启全量日志功能的网站域名启用该功能:

  1. 登录新BGP高防IP管理控制台,定位到统计 > 全量日志页面。
  2. 选择网站域名,单击状态开关或立即开启,为该网站域名启用全量日志功能。

启用全量日志功能后,您可以在全量日志页面对采集到的日志数据进行实时查询与分析、查看或编辑仪表盘、设置监控告警等。关于新BGP高防服务的日志分析与日志报表功能,请参见日志报表日志分析

使用全量日志功能

依托于阿里云日志服务强大的功能,为网站域名启用全量日志功能后,在全量日志页面您可以对所采集的网站访问日志和攻击防护日志进行深入的分析、以可视化的方式展示、根据所设定的阈值实现监控报警等。

功能项 说明 更多信息
查询和分析

对采集到的日志数据进行实时查询分析,查询分析语句由查询语句(Search)和分析语句(Analytics)两个部分组成,查询和分析语句之间通过|进行分割。

例如,您可以通过以下查询分析语句查询域名的访问量:

* | SELECT COUNT(*) as times, host GROUP by host ORDER by times desc limit 100

更多查询语句示例,请参见常用查询语句示例

查询与分析
分析图表 查询分析语句中包含分析语法,语句执行后默认按表格方式展示分析结果。同时,您还可以选择折线图、柱状图、饼图等多种图形方式进行展示。 分析图表
仪表盘

仪表盘是日志服务提供的实时数据分析大盘。您将常用的查询语句以图表形式展示后,可将分析图表保存到仪表盘中。

同时,新BGP高防的全量日志功能默认为您提供DDoS访问中心和DDoS运营中心两个仪表盘。

您还可以通过订阅仪表盘功能,通过邮件或者钉钉群消息将仪表盘内容定时推送给指定对象。

仪表盘
监控告警 您可以根据仪表盘中的查询图表设置告警,实现实时的服务状态监控。 告警

全量日志功能应用场景

通过启用DDoS高防IP服务的全量日志功能,可以满足您在以下访问日志分析场景中的需求。
  • 排查网站访问异常

    配置日志服务采集DDoS高防日志后,您可以对采集到的日志进行实时查询与分析。使用SQL语句分析网站访问日志,对网站的访问异常进行快速排查和问题分析,并查看读写延时、运营商分布等信息。

    例如,通过以下语句查看网站访问日志:

    __topic__: DDoS_access_log

  • 追踪CC攻击者来源
    访问日志中记录了CC攻击者的分布及来源,通过对DDoS访问日志进行实时查询与分析,您可以对CC攻击者进行来源追踪、溯源攻击事件,为您的应对策略提供参考。
    • 例如,通过以下语句分析DDoS访问日志中记录的CC攻击者国家分布:

      __topic__: DDoS_access_log and cc_blocks > 0| SELECT ip_to_country(if(real_client_ip='-', remote_addr, real_client_ip)) as country, count(1) as "攻击次数" group by country

    • 例如,通过以下语句查看访问PV:

      __topic__: DDoS_access_log | select count(1) as PV

  • 网站运营分析

    网站访问日志中实时记录网站访问数据,您可以对采集到的访问日志数据进行SQL查询分析,得到实时的访问情况,例如判断网站热门程度、访问来源及渠道、客户端分布等,并以此辅助网站运营分析。

    例如,查看来自各个网络服务提供商的访问者流量分布:

    __topic__: DDoS_access_log | select ip_to_provider(if(real_client_ip='-', remote_addr, real_client_ip)) as provider, round(sum(request_length)/1024.0/1024.0, 3) as mb_in group by provider having ip_to_provider(if(real_client_ip='-', remote_addr, real_client_ip)) <> '' order by mb_in desc limit 10

常用查询语句示例

  • 拦截类型查询
    * | select cc_action,cc_phase,count(*) as t group by cc_action,cc_phase order by t desc limit 10
  • QPS查询
    * | select time_series(__time__,'15m','%H:%i','0') as time,count(*)/900 as QPS group by time order by time
  • 被攻击域名查询
    * and cc_blocks:1 | select cc_action,cc_phase,count(*) as t group by cc_action,cc_phase order by t desc limit 10
  • 被攻击URL查询
    * and cc_blocks:1 | select count(*) as times,host,request_path group by host,request_path order by times
  • 请求详情
    * | select date_format(date_trunc('second',__time__),'%H:%i:%s') as time,host,request_uri,request_method,status,upstream_status,querystring limit 10
  • 5XX状态码查询
    * and status>499 | select host,status,upstream_status,count(*)as t group by host,status,upstream_status order by t desc
  • 请求时延分布
    * | SELECT count_if(upstream_response_time<20) as "<20",
    count_if(upstream_response_time<50 and upstream_response_time>20) as "<50",
    count_if(upstream_response_time<100 and upstream_response_time>50) as "<100",
    count_if(upstream_response_time<500 and upstream_response_time>100) as "<500",
    count_if(upstream_response_time<1000 and upstream_response_time>500) as "<1000",
    count_if(upstream_response_time>1000) as ">1000"

相关文档