云监控为您提供企业级开放型一站式监控解决方案。Hologres已经接入云监控的云服务监控,方便您通过云监控全面了解Hologres实例的资源使用、业务运行及健康状况,及时收到异常报警并做出响应,保证应用程序运行顺畅。本文为您介绍如何通过云监控监测Hologres实例的相关指标并上报告警。
使用限制
Hologres仅支持使用自定义大盘的方式查看实例的相关指标。
授予RAM用户云监控查看权限
您可为RAM用户授权如下权限,授权方法请参见为RAM用户授权。
权限名称 | 权限功能描述 |
---|---|
AliyunCloudMonitorFullAccess | 管理云监控(CloudMonitor)的权限。 |
AliyunCloudMonitorReadOnlyAccess | 只读访问云监控(CloudMonitor)的权限。 |
AliyunCloudMonitorMetricDataReadOnlyAccess | 访问云监控(CloudMonitor)时序指标数据的权限。 |
查看监控指标
进入云监控的方式有两种,分别为从Hologres管理控制台跳转和直接登录云监控控制台。
- 从Hologres管理控制台跳转
- 登录Hologres管理控制台,单击左侧实例列表。
- 在实例列表页面,单击对应实例名称。
- 在实例详情页左侧导航栏,单击监控信息。
- 在监控信息页面,单击右上角云监控,即可进入云监控Hologres实例监控页面查看实例相关指标的状态。
- 直接登录云监控控制台
- 登录云监控控制台。
- 在左侧导航栏,单击云产品监控。
- 在大数据(数加)区域,单击交互式分析Hologres进入Hologres监控大盘。
- 单击地域后的
图标,选择目标地域。
- 单击目标实例ID或操作列的监控图表,查看实例相关指标的状态。说明 您可以自定义查看实例指标的时间段,监控数据最多保留30天。
创建并配置报警规则
您可以根据业务的实际情况,创建并配置监控指标的阈值报警,当监控指标超过设定阈值后,系统自动发送报警通知,帮助您及时发现监控数据的异常并快速处理。创建并配置报警规则的步骤如下:
配置一键报警
- 如果连接数使用率(Info)连续3次平均值>=95就报警,通知对象为云账号报警联系人。
- 如果存储水位(Warn)连续3次平均值>90%就报警,通知对象为云账号报警联系人。
- 如果内存水位(Warn)连续3次平均值>=90%就报警,通知对象为云账号报警联系人。
- 如果CPU水位(Info)连续3次平均值>=99%就报警,通知对象为云账号报警联系人。
- 一键报警功能开启后,默认开启云监控预置的报警规则,快速建立云监控报警体系监控重要指标,并未全面覆盖所有监控指标。
- 一键报警功能开启后,对应的报警规则作用于您选中产品的当前实例及后续新生成的实例。
- 一键报警功能支持您对预置的报警规则进行修改、禁用和删除操作。
配置一键报警的步骤如下:
- 登录云监控控制台。
- 在左侧导航栏,单击一键报警页面。 ,进入
- 在一键报警列表,单击交互式分析Hologres的一键报警开关,开启一键报警。
- 单击交互式分析Hologres左侧的
图标,查看云监控为您自动生成的报警规则。
- 可选:您可以单击操作栏中的禁用、修改、删除,禁用、修改、删除对应的报警规则。
使用自定义大盘定制监控指标
云监控已为您初始化了用户维度的Hologres监控大盘,如果您需要查看其他数据,可以使用自定义大盘定制监控指标。自定义监控大盘的步骤如下:
告警最佳实践
如何为业务设置合适的告警,达到不频繁地对不重要事件报警,又能及时感知到重要异常事件发生的目的,实际上取决于您的具体业务情况,以及Hologres在您的整体架构中所处的位置,请根据具体情况进行设置。不过有一些通用性的指标,建议您对其设置告警,并且设置合适的告警,如下所示。
- CPU水位
CPU水位反映了Hologres的资源是否存在瓶颈,也反映了您的资源使用是否充分。CPU水位告警的核心逻辑在于,设置规则检测出CPU水位持续100%,即CPU持续打满的情况。因为这种情况,意味着当前实例规模的资源已充分利用,难以支撑业务数据量、查询量、计算量等的增长,需要考虑扩容等手段。
告警规则建议- 不建议出现一次CPU使用率达到100%就告警。
如果CPU水位持续到达100%一段时间,随后降低维持在中等或较低水平,那么一般是那段时间在做大的计算,例如大规模数据的写入,或者大规模数据的查询,因此不建议出现一次CPU使用率达到100%就告警,这样可能会产生较多误报。
- 建议设置为“CPU水位连续3次>=99% Info(每次间隔5分钟)”类似的告警规则。
设置为“CPU水位连续3次>=99% Info(每次间隔5分钟)”的告警规则,即15分钟内检测3次出现CPU使用率100%,产生Info级别的告警。此告警规则可以有效避免误报,根据具体情况的不同,您可以降低间隔时间,或者提高检测次数。
- 不建议出现一次CPU使用率达到100%就告警。
- 内存水位
内存水位的逻辑与CPU水位大体相同。不同于CPU水位具有不产生计算则几乎为0的特点,内存水位在没有计算时,并不会为0,有时甚至会比较高。Hologres把计算内存分为了三块,一是预留给计算的内存,约占30%,没有计算时,这块几乎为0;二是数据缓存,在诸多情况下,数据缓存可以极大地减少I/O读取,提高SQL的计算效率,约占30%;三是实例中所有表、索引等元数据缓存,以及表在内存中的句柄和缓冲区等,约占30%。
告警规则建议- 不建议内存水位设置过低的阈值。
没有计算时只能保证前30%是空的,还有60%甚至以上的内存,可能是被占据的,因此体现出内存水位不为0甚至较高。有可能超过60%被占据,是因为元数据优先放入内存,如果元数据过多,加上数据缓存的30%,无计算时内存使用会超过60%。
- 建议设置为“内存水位连续3次>=90% Warning(每次间隔5分钟)”类似的告警规则。
设置为内存水位连续3次>=90% Warning(每次间隔5分钟)”的告警规则,即15分钟内检测到3次出现内存使用率超过90%,产生Warning级别的告警。
- 不建议内存水位设置过低的阈值。
- 连接数使用率
对连接使用率进行告警,是为了防止连接数打满,而造成无法连接的异常影响业务。一般连接数在总连接数的95%以下都算安全。因此可以设置告警规则为:连接数使用率(Info)连续3次>=95就报警。
- P99延迟
SQL语句从提交到返回的过程中,Hologres引擎处理99%查询语句的时间。响应时间异常性变大反映出系统可能有慢Query的趋势,可能会影响下游业务处理。平均响应时间很难有一个标准,需要根据您的实际查询使用模式而定。P99延迟代表了99% Query跑完的时间,相对平均而言有特定的意义。
例如您是持续服务型应用,平常的正常延迟都在1s以内,那么响应时间突然到5s或10s,就不太正常,需要告警出来,偶尔到1.2s,1.5s,则正常。
例如您是分析性应用,根据不同业务人员的需求,查询的大小、响应时间都不尽相同,那么就需要根据自己的场景进行设置。
另外要注意的是,当实例负载很高的时候,SQL运行时间波动可能越大,这种情况下就容易产生告警。解决方法是适当调整阈值,或者扩增实例规格以维持负载平稳。
- Query QPS
在您的业务中,有持续的SQL语句执行时,往往有持续稳定的QPS(Query Per Second)指标。当QPS突然降到很低,或者为0时,如果不是业务有意停止,那么可能意味着系统有异常。如果业务QPS持续稳定在某个值A,那么建议告警阈值设置为A的80%、50%或10%等,即告警规则设置为:QPS连续3次<=(A*0.8) Warning(每次间隔5分钟)。
SQL语句的QPS包含如下。类型 说明 (推荐)Query QPS明细 实例每秒SQL语句执行数。 SELECT语句QPS 实例每秒SELECT语句数。 INSERT语句QPS 实例每秒INSERT语句数。 UPDATE语句QPS 实例每秒UPDATE语句数。 DELETE语句QPS 实例每秒DELETE语句数。 - 实时写入RPS
在您的业务中,有持续的外部数据导入(通过Flink/数据集成等等)时,往往有持续的实时导入RPS(Record Per Second)指标。当RPS突然降到很低,或者为0时,如果不是作业有意停止,那么可能意味着系统有异常。例如,设置告警为:RPS(cmdType=sdk)连续1次<=10 Warning。
告警后处理最佳实践
在告警之后,请根据以下类别对可能存在的异常情况进行处理,Hologres针对具体的情况推荐的处理方法如下。
- 出现连接数使用率告警
处理方法: 对连接数进行诊断和管理,详情请参见连接数管理进行适当处理。
- 出现SQL总连接数高的告警
处理方法:对实例的连接进行诊断和管理,详情请参见连接数管理。
- 出现内存水位高的告警
具体分为如下两种情况。
- 情景一:无计算但内存水位偏高。
处理方法:如果您的实例出现没有计算但内存水位高,可能说明您的实例元数据过多,例如表的数量很多;或者是索引设置不合理,例如对高基数的列设置了Dictionary索引或Bitmap索引。
- 情景二:有计算且内存水位偏高。
处理方法:如果有计算,且内存水位高,或者SQL发生内存超出报错,这时可以通过检查SQL的执行计划,观察是否合理等手段,改善SQL的内存消耗。
- 情景一:无计算但内存水位偏高。
- 出现存储水位高的告警
处理方法:当出现存储水位告警时,代表您实例存储告急,请适当扩容存储。
- 出现QPS低的告警
处理方法:
- 排查是否存在前台任务手工重启、发布、实例是否正在升级等人为或正常原因造成。
- 排查完毕后,请检查当前前台任务的报错状况,SQL日志报错情况,是否有报错信息,根据具体信息排查。
- 出现平均响应时间长的告警
处理方法:出现平均响应时间的尖峰,一般情况下,需要具体SQL执行人员排查具体的SQL的执行计划是否符合预期。
- 出现RPS低的告警
处理方法:
- 排查是否存在前台任务手工重启、发布、实例是否正在升级等人为或正常原因造成。
- 排查完毕后,请检查当前导入任务的健康状况,是否有报错信息,再根据具体信息排查。