MSE流量防护功能能够检测到异常流量或攻击行为,并将这些事件上报至日志服务 SLS(Simple Log Service)。SLS是一个集日志收集、存储、分析于一体的服务,能够实时地对大量数据进行索引和查询。通过将流量防护事件上报至SLS,您可以方便地监控和分析这些事件,为您的网络安全提供及时的响应和保护。本文介绍如何将MSE微服务治理流量防护的触发事件上报至SLS,其中流量防护触发事件由sentinel-block.log采集。
前提条件
开启日志采集组件
如果在创建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配置步骤,设置数据来源与解析格式。配置完成后,单击下一步。
配置项
说明
配置名称
输入配置名称。
文件路径
-
以
/${user_home}/logs/csp/sentinel-block.log为固定路径进行采集,其中${user_home}替换为系统的主目录,通常为root。 -
具体路径,请参见重要日志。
日志样例
输入如下内容进行设置。
2024-08-28 06:53:14|1|/flow,FlowException,default,,32808,1724827994000|37,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+)
将原始字段设为
content,单击验证后可提取出 9 个字段: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中。
__tag__:__user_defined_id__: k8s-group-c7ebc423cebdd43c494daf02xxx __tag__:_cluster_id_: c7ebc423cebdd43c494daf02 __tag__:_container_ip_: 10.7.xxx __tag__:_container_name_: spring-cloud-b __tag__:_image_name_: registry.cn-hangzhou.aliyuncs.com/mse-demo-hz/spring-cloud-b:3.0.1-fallback-test __tag__:_namespace_: mse-demo __tag__:_node_ip_: 10.7xxx __tag__:_node_name_: cn-hangzhou.10.7.xxx __tag__:_pod_name_: spring-cloud-b-54b48d6f6c-xxx __tag__:_pod_uid_: bcd0f5bd-3b4c-48d7-99c7-aefxxx blockNum: 71 expType: FlowException limitApp: default n: 0 origin: dubbo-provider-A resource: com.alibabacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String) ruleId: 855 time: 2023-09-15 03:46:22 timestamp: 1694749582000
常见问题
SLS控制台未显示相关日志
您可以登录容器服务管理控制台,单击对应的集群。在集群信息页面,单击通过CloudShell管理集群。输入如下命令进行验证。
cd ~/logs/csp/ # 替换为对应的日志路径
tail -n 10 sentinel-block.log
预期结果如下,表明已产生限流日志。如果没有产生对应日志,请检查前提条件是否配置正确,重点关注MSE控制台中流量防护规则配置是否正确以及是否发生限流。
2023-09-14 08:51:04|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681464000|63,0
2023-09-14 08:51:05|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681465000|78,0
2023-09-14 08:51:06|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681466000|75,0
2023-09-14 08:51:07|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681467000|64,0
2023-09-14 08:51:08|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681468000|84,0
2023-09-14 08:51:09|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681469000|75,0
2023-09-14 08:51:10|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681470000|76,0
2023-09-14 08:51:11|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681471000|71,0
2023-09-14 08:51:12|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681472000|61,0
2023-09-14 08:51:13|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681473000|64,0
2023-09-14 08:51:14|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681474000|64,0
2023-09-14 08:51:15|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681475000|76,0
2023-09-14 08:51:16|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681476000|79,0
2023-09-14 08:51:17|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681477000|66,0
2023-09-14 08:51:18|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681478000|80,0
2023-09-14 08:51:19|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681479000|65,0
2023-09-14 08:51:20|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681480000|79,0
2023-09-14 08:51:21|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681481000|75,0
2023-09-14 08:51:22|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681482000|70,0
2023-09-14 08:51:23|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681483000|77,0