本文介绍如何将AHAS流量防护的触发事件上报至SLS,其中流量防护触发事件由sentinel-block.log采集。
前提条件
已开通日志服务SLS。具体操作,请参见开通日志服务。
已创建ACK集群。具体操作,请参见创建Kubernetes专有版集群。本教程以ACK集群为例。
已使用AHAS流量防护功能,且配置了流量防护规则。
开启日志采集组件
如果在创建ACK集群时已经开启了日志服务,可以跳过该步骤,否则可以按照以下步骤开启日志采集组件。详情可参考创建集群时启用Logtail。
此操作仅适用于专有版Kubernetes和托管版Kubernetes。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在日志与监控页签,找到logtail-ds,然后单击安装。
接入数据
设置SLS接入的数据来源。采集Sentinel日志记录并按解析格式上报至SLS。采集文件格式,请参见数据来源与解析格式。
登录日志服务控制台。
在接入数据区域的搜索框中输入Kubernetes,然后单击Kubernetes-文件。
在选择日志空间步骤,选择项目Project和日志库Logstore,然后单击下一步。
其中Project选择创建的名为k8s-log-{your_k8s_cluster_id}的Project,也可以选择其他Project。日志库Logstore可以选择已有的或者新建,具体操作,请参见创建Logstore。
在创建机器组步骤,单击使用现有机器组,选中目标机器组(k8s-group-${your_k8s_cluster_id}),将该机器组从源机器组移动到应用机器组,单击下一步。
如果选择了其他Project,可以按照页面提示创建机器组。
在Logtail配置步骤,设置数据来源与解析格式。配置完成后,单击下一步。
配置项
说明
配置名称
输入配置名称。
日志路径
通过SDK或者Starter方式接入,以
${HOME}/logs/csp/sentinel-block.log
为固定路径进行采集,其中${HOME}
替换为系统的主目录。通过应用市场AHAS Sentinel pilot方式,设置为
/var/lib/aliyunahas/**/sentinel-block.log
。其他方式或自定义日志路径的情况,以实际目录为准。
具体路径,请参见重要日志。
模式
选择完整正则模式。
日志样例
输入如下内容进行设置。
2023-05-15 21:32:36|1|/hello,FlowException,default,,55206,1684157556000|2,0,0
提取字段
打开提取字段开关。单击手动输入正则表达式并输入如下正则内容。
(\d+-\d+-\d+\s\d+:\d+:\d+)\|1\|([\s\S]*),([a-zA-Z]+),([a-zA-Z]+),([\s\S]*),(\d+),(\d+)\|(\d+),0,(\d+)
日志抽取内容
输入正则内容后,单击验证显示日志抽取内容。为抽取的内容设置Key值,用于后续SLS统计。本文实例值分别为:time、resource、expType、limitApp、origin、ruleId、timestamp、blockNum以及n。
在查询分析步骤,等待预览数据右侧的自动刷新完成。添加索引字段,然后单击下一步。
字段名称
类型
别名
__tag__:_namespace_
text
namespace
__tag__:container_name_
text
appName
ruleId
long
无需填写
resource
text
time
text
expType
text
blockNum
double
单击查询日志返回Project。
监控上报验证
登录日志服务控制台。
在对应Project可以看到监控指标已经上报至SLS新建的Logstore中。
常见问题
SLS控制台未显示相关日志
您可以登录容器服务管理控制台,单击对应的集群。在集群信息页面,单击通过CloudShell管理集群。输入如下命令进行验证。
cd ~/logs/csp/ # 替换为对应的日志路径
tail -n 10 sentinel-block.log
预期结果如下,表明已产生限流日志。如果没有产生对应日志,请检查前提条件是否配置正确,重点关注MSE控制台中流量防护规则配置是否正确以及是否发生限流。