如果发现无法正常采集SLB访问日志,请按照以下步骤排查。
1. 确认是否为SLB实例开通了访问日志
每个SLB实例需要单独设置,开通后的产生的访问日志将实时写入您的日志服务Logstore。
请登录SLB控制台, 在左侧导航栏中单击
,查看访问日志(7层)列表中。- 确认列表中是否存在指定SLB实例。
- 确认SLB实例对应的SLS日志存储一列中记录的日志保存位置。
此处显示的是日志保存的日志服务Project和Logstore,请在正确的位置查看是否存在SLB日志。
2. 确认RAM授权是否正确
开通访问日志功能时,系统会指引您完成RAM角色授权,成功授权后才能开通访问日志功能。如果RAM角色没有正常创建、或创建后被删除,都会导致日志采集后无法投递到日志服务Logstore。
排查方式
请登录RAM控制台,在角色管理页面查找是否存在AliyunLogArchiveRole。
-
如果AliyunLogArchiveRole不存在,请使用主账号登录后并单击快速授权链接,完成授权所需要的RAM角色创建。
-
如果AliyunLogArchiveRole存在,请单击角色名称,查看角色授权策略是否正确。
以下是默认的授权策略,如果您的策略与默认策略不相同,可能之前修改过授权策略,请将授权策略改为默认的授权策略。{ "Version": "1", "Statement": [ { "Action": [ "log:PostLogStoreLogs" ], "Resource": "*", "Effect": "Allow" } ] }
3. 确认是否产生日志事件
如果在日志服务控制台没有查看到SLB访问日志,可能是由于没有日志产生。例如:
- 当前实例未配置七层监听。
目前只支持SLB七层监听的实例访问日志,暂不支持四层实例日志采集。常见的七层监听协议有HTTP/HTTPS等,详细说明请查看监听概述。
- 不采集开通功能之前的历史日志。
开通SLB访问日志功能之后,从当前时间开始采集日志。
- 指定实例没有访问请求。
必须对实例上的监听进行访问请求,才会产生访问日志。