日志服务SLS告警作为一站式运维告警平台,为OSS的访问提供了定制化的告警规则。您只需要在日志服务控制台进行简单配置,即可完成对OSS访问指标的监控,并在指标出现异常时及时收到告警通知。
场景描述
客户A是一家多媒体公司,主要产品有短视频App。用户可以在上面发布和观看短视频。客户A使用了OSS中名为examplebucket的存储空间来存储用户产生的短视频,App每天的用户活动具有一定的周期性,一般情况下深夜的PV较低,其他时段PV较高。
每天9点~10点之间的PV访问基本持平。例如每月5号9点~10点的PV是50万,6号9点~10点的PV是51万可以理解为正常波动。如果6号9~10点的PV出现陡增至100万或者陡降至20万的情况,您可以通过创建日志服务告警规则,指定在某个时间段内PV陡增或者陡降20%时发出告警,并通过钉钉机器人推送告警信息。
前提条件
已为目标存储空间examplebucket开启实时日志查询并记录生成的Project名称。
说明
开启实时日志查询后,日志服务将自动生成名为oss-log-store
的Logstore,该Logstore保存在格式为oss-log-阿里云账号ID-region
的Project下。请记录生成的Project名称,用于配置后续的通知渠道及告警阈值。开启实时日志查询的具体步骤,请参见查询实时日志。
操作步骤
-
通过SLS OSS内置行动策略设置告警触发后的通知渠道。
-
设置触发告警阈值。
-
在告警规则页签,新建告警下拉选择从模版新建。
-
单击OSS监控,然后单击OSS访问PV同比昨日变化率过高告警,触发条件选择有数据匹配,表达式修改为(change_rate >= 0 && change_rate > 20) || (change_rate < 0 && (-1) * change_rate > 20),其他参数保留默认配置。
-
单击确定。
-
-
满足以上触发条件时,将发送告警通知。
常见问题
问题描述:告警渠道选择钉钉机器人,但是钉钉通知发送失败,且出现如下错误。
{"errcode":310000,"errmsg":"sign not match"}
{"errcode":310000,"errmsg":"keywords not in content"}
问题原因:机器人的安全设置有误,导致通知被钉钉拦截。
解决方法:将安全设置配置为自定义关键字,其中一个关键字设置为“告警”,因为通知内容中至少包含其中1个关键字才可以发送成功。配置详情,请参见钉钉-自定义。
当用户的请求量超出OSS使用限制后会触发OSS流控,触发流控会对用户的请求产生一定的影响。您只需要在云监控管理控制台进行简单的配置,即可完成对OSS请求指标的实时监控,并在触发流控时及时收到告警通知。
背景信息
OSS提供了用户级别和Bucket级别的流控,支持的类别主要包括带宽流控和QPS流控。当您访问OSS的QPS、带宽超出OSS使用限制时,访问速度会受到OSS流控的限制。如果触发了带宽流控,则访问OSS的延迟会增加。如果触发了QPS流控,则OSS会丢弃部分请求。关于带宽流控和QPS流控的限制信息,请参见使用限制。
您可以通过云监控管理控制台创建OSS流控事件告警规则,并指定在监测到用户发送到OSS指定类型的请求量触发流控或达到汇报阈值时,以短信、邮件和钉钉机器人的方式向指定联系人组发送报警信息。
前提条件
已创建用于接收流控报警信息的联系人组,并向联系人组添加多个联系人。具体操作,请参见创建报警联系人或报警联系人组。
创建报警规则
-
登录云监控控制台。
-
在左侧导航栏,选择事件中心 > 系统事件。
-
在事件监控页签,单击另存为报警。
-
在创建/修改事件报警面板,设置以下参数,其他参数保留默认值,然后单击确定。
参数 | 说明 |
报警规则名称 | 设置为rule1。 |
产品类型 | 选择对象存储OSS。 |
事件类型 | 选择全部类型。 |
事件等级 | 选择警告和信息。 |
事件名称 | 选择全部事件。关于云监控支持的OSS流控事件的含义及说明,请参见云监控支持的OSS流控事件。 |
报警联系人组 | 选中报警方式下的报警通知,然后选择已创建的报警联系人组。 |
通知方式 | 选择Warning(短信+邮件+WebHook)。 |
以上事件告警规则配置完成后,如果请求触发OSS流控或者超过汇报阈值,则云监控会自动向指定的联系人发送报警通知。报警通知中包含报警资源、事件名称、事件类别以及事件详情等信息。关于报警通知的更多信息,请参见报警通知。
重要
流控报警为每分钟一次,一分钟内如果有30s或以上时间触发流控则产生报警。汇报阈值为每10分钟一次,只要1s内触发汇报阈值则产生报警。
报警通知
如果指定联系人收到了流控触发报警通知,请参见以下表格了解各类流控事件触发的原因、影响、对应的解决方法以及事件的详细内容。
重要
如果您希望在收到User级别的报警事件后,查看归属当前用户下所有Bucket的流量使用情况,请提前创建OSS监控大盘。具体步骤,请参见创建系统预置大盘。
报警通知事件名称
说明
下表中的汇报阈值=流控阈值*0.8。
事件名称 | 触发原因 | 影响 | 解决方法 |
BucketIngressBandwidthThresholdExceeded | 当前Bucket的上行带宽之和大于Bucket的上行流控阈值时触发此事件。 | 上传请求将会被流控且请求延迟会增加。 | 合理降低上传请求并发数。 |
BucketEgressBandwidthThresholdExceeded | 当前Bucket的下行带宽之和大于Bucket下行带宽流控阈值时触发此事件。 | 下载请求将会被流控且请求延迟会增加。 | 合理降低下载请求并发数。 |
BucketQpsThresholdExceeded | 当前Bucket的每秒请求数之和大于Bucket每秒请求数流控阈值时触发此事件。 | OSS会拒绝响应部分请求并返回503。 | 合理降低每秒请求数。 |
UserIngressBandwidthThresholdExceeded | 归属当前用户的所有Bucket的上行带宽之和大于上行带宽流控阈值时触发此事件。 | 上传请求将会被流控且请求延迟会增加。 | 合理降低上传请求并发数。 |
UserEgressBandwidthThresholdExceeded | 归属当前用户的所有Bucket的下行带宽之和大于下行带宽流控阈值时触发此事件。 | 下载请求将会被流控且请求延迟会增加。 | 合理降低下载请求并发数。 |
UserQpsThresholdExceeded | 归属当前用户的所有Bucket的每秒请求数之和大于每秒请求数流控阈值时触发此事件。 | OSS会拒绝响应部分请求。 | 合理降低每秒请求数。 |
BucketImageCpuThresholdExceeded | 当前Bucket中所有用于处理图片请求的CPU核数之和大于Bucket CPU核数流控阈值时触发此事件。 | 图片处理类型的请求延迟会增加。 | 合理降低图片处理请求并发数。 |
UserImageCpuThresholdExceeded | 归属当前用户的所有Bucket中用于处理图片请求的CPU核数之和大于该用户的CPU核数流控阈值时触发此事件。 | 图片处理类型的请求延迟会增加。 | 合理降低图片处理请求并发数。 |
BucketMirrorIngressBandwidthThresholdExceeded | 当前Bucket的所有镜像回源类型请求的带宽之和大于流控阈值时触发此事件。 | 镜像回源请求延迟会增加。 | 合理降低镜像回源类型请求并发数。 |
BucketMirrorQpsThresholdExceeded | 当前Bucket的所有镜像回源类型的每秒请求数之和大于镜像回源QPS流控阈值时触发此事件。 | OSS会拒绝部分镜像回源类型请求。 | 合理降低镜像回源类型每秒请求数。 |
UserMirrorIngressBandwidthThresholdExceeded | 归属当前用户的所有Bucket内的镜像回源类型上传请求流量之和大于用户镜像回源带宽流控阈值时触发此事件。 | 镜像回源请求延迟会增加。 | 合理降低镜像回源类型请求并发数。 |
UserMirrorQpsThresholdExceeded | 归属当前用户的所有Bucket每秒发出的镜像回源类型请求数之和大于用户镜像回源QPS流控阈值时触发此事件。 | OSS将拒绝响应部分镜像回源类型的请求。 | 合理降低镜像回源类型每秒请求数。 |
BucketIngressBandwidth | 当前Bucket的上行请求带宽之和大于汇报阈值时触发此事件。 | Bucket的上行请求延迟会增加。 | 合理降低上行请求并发数。 |
BucketEgressBandwidth | 当前Bucket的下行请求带宽之和大于汇报阈值时触发此事件。 | Bucket的下行请求延迟会增加。 | 合理降低下行请求并发数。 |
UserIngressBandwidth | 归属当前用户的所有Bucket的上行请求带宽之和大于汇报阈值时触发此事件。 | 用户的上行请求延迟会增加。 | 合理降低上行请求并发数。 |
UserEgressBandwidth | 归属当前用户的所有Bucket的下行请求带宽之和大于汇报阈值时触发此事件。 | 用户的下行请求延迟会增加。 | 合理降低下行请求并发数。 |
报警通知详细内容
参数 | 说明 | 示例值 |
AvgSeverity | 流控的程度。数值越高代表流控越强,延时越高。取值范围为0~100。 | 10 |
QosType | 触发的流控类型。取值如下:
| IngressBandwidth |
TrafficSource | 触发流控的流量来源。取值如下:
| net_all |
如何查看User级别的流量使用情况?
以下以收到报警事件UserEgressBandwidthThresholdExceeded为例,您可以通过以下步骤查看归属当前用户下各个Bucket的流量使用情况。
-
登录云监控控制台。
-
在左侧导航栏,选择企业云监控 > 监控大盘。
-
在监控大盘页面,单击OSS监控大盘右侧的查看。
-
根据流控报警类型,在流量监控区域查看具体哪些Bucket占用了较高的流量。