基于OpenAPI定义进行增强HTTP日志分析的开源工具APIcat(项目主页)本周更新了阿里云相关功能,构建了从日志分析到实时拦截规则创建的整体流程。
APIcat通过阿里云Logstore功能读取日志,并通过SLB拦截规则创建接口实现拦截规则的自动创建。
为阿里云负载均衡打开自动拦截功能
配置日志存储
负载均衡CLB(SLB)默认不启动日志存储功能,需要手工创建并启动。
在负载均衡管理面板中选择日志管理-访问日志中对应负载均衡最后的操作栏中,点击设置,按指引配置SLS日志存储
配置好后,显示的存储日志即可传入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地址即可。
后期可调整拦截的具体规则,具体参考这里