Apicat - 实现阿里云的负载均衡的日志分析和自动拦截

时间:2022-12-09 12:16:11

基于OpenAPI定义进行增强HTTP日志分析的开源工具APIcat(项目主页)本周更新了阿里云相关功能,构建了从日志分析到实时拦截规则创建的整体流程。

APIcat通过阿里云Logstore功能读取日志,并通过SLB拦截规则创建接口实现拦截规则的自动创建。

为阿里云负载均衡打开自动拦截功能

配置日志存储

负载均衡CLB(SLB)默认不启动日志存储功能,需要手工创建并启动。

在负载均衡管理面板中选择日志管理-访问日志中对应负载均衡最后的操作栏中,点击设置,按指引配置SLS日志存储

 

 配置好后,显示的存储日志即可传入APIcat作为日志来源

 配置拦截规则

Apicat - 实现阿里云的负载均衡的日志分析和自动拦截
拦截规则依托于负载均衡的访问控制功能,首先需要在访问控制中创建一个策略组,策略组名称即可传入APIcat作为拦截规则的目标设置组

 设置AccessKey
正常运行APIcat除以上准备工作外,还需要为APIcat的运行申请一个Accesskey

在阿里云创建AccessKeyId和AccessKeySecret(点击头像,选择AccessKey管理),创建AccessKey或者子账户AccessKey都可以。

建议创建子账户AccessKey,子账户可以控制权限。可以选择AliyunSLBFullAccess或者自创建规则,包含slb的以下操作权限:

  • slb:AddAccessControlListEntry (写操作)
  • slb:DescribeAccessControlListAttribute (读操作)
  • slb:RemoveAccessControlListEntry (写操作)

以及日志权限

AliyunLogReadOnlyAccess

准备服务的OpenAPI定义

服务的OpenAPI定义可由开发生成,或者在线编辑

参数选择

完成以上设置之后,我们就可以运行APIcat(安装参考项目主页的说明)的watch命令实现实时读取日志,并实时配置拦截规则,运行参数如下

.\apicat.exe watch -d .\example\openapi.yaml --source aliyun --dest aliyun --aliyun-accesskey-id xx --aliyun-accesskey-secret xx --aliyun-region-id xx --aliyun-dest acl-xx project/logstore    


参数设置包括

--source aliyun 设置为从阿里云日志读取

--dest aliyun 设置为配置到阿里云

--aliyun-accesskey-id xx --aliyun-accesskey-secret xx --aliyun-region-id xx

阿里云账户的accesskey-id和accesskey-secret,以及负载均衡所在的region的id

--aliyun-dest acl-xxx 阿里云负载均衡的控制规则名称

最后跟上存储日志的SLS地址即可。

后期可调整拦截的具体规则,具体参考这里