云监控为您提供企业级开放型一站式监控解决方案。Hologres已经接入云监控的云服务监控,方便您通过云监控全面了解Hologres实例的资源使用、业务运行及健康状况,及时收到异常报警并做出响应,保证应用程序运行顺畅。本文为您介绍如何通过云监控监测Hologres实例的相关指标并上报告警。

前提条件

使用限制

Hologres仅支持使用自定义大盘的方式查看实例的相关指标。

授予RAM用户云监控查看权限

您可为RAM用户授权如下权限,授权方法请参见为RAM用户授权

权限名称 权限功能描述
AliyunCloudMonitorFullAccess 管理云监控(CloudMonitor)的权限。
AliyunCloudMonitorReadOnlyAccess 只读访问云监控(CloudMonitor)的权限。
AliyunCloudMonitorMetricDataReadOnlyAccess 访问云监控(CloudMonitor)时序指标数据的权限。

查看监控指标

进入云监控的方式有两种,分别为从Hologres管理控制台跳转和直接登录云监控控制台。

  • 从Hologres管理控制台跳转
    1. 登录Hologres管理控制台,单击左侧实例列表
    2. 实例列表页面,单击对应实例名称。
    3. 实例详情页左侧导航栏,单击监控告警
    4. 监控告警页面,单击右上角云监控,即可进入云监控Hologres实例监控页面查看实例相关指标的状态。云监控
  • 直接登录云监控控制台
    1. 登录云监控控制台
    2. 在左侧导航栏,单击云产品监控
    3. 大数据(数加)区域,单击交互式分析Hologres进入Hologres监控大盘。
    4. 单击地域后的地域图标,选择目标地域。
    5. 单击目标实例ID或操作列的监控图表,查看实例相关指标的状态。实例状态
      说明 您可以自定义查看实例指标的时间段,监控数据最多保留30天。

创建并配置报警规则

您可以根据业务的实际情况,创建并配置监控指标的阈值报警,当监控指标超过设定阈值后,系统自动发送报警通知,帮助您及时发现监控数据的异常并快速处理。创建并配置报警规则的步骤如下:

  1. 登录云监控控制台
  2. 在左侧导航栏,单击报警服务 > 报警规则
  3. 阈值报警页面,单击创建报警规则
  4. 创建报警规则页面,配置报警规则的各项参数。
    创建报警规则
    参数 描述
    产品 选择交互式分析Hologres
    资源范围 报警规则的作用范围。取值如下:
    • 全部资源:表示该规则对用户名下对应产品的所有实例生效。例如:您设置了全部资源粒度的Hologres CPU使用率大于80%报警,则只要用户名下有Hologres的CPU使用率大于80%,就会发送报警通知。

      资源范围选择全部资源时,报警的资源最多为1000个,超过1000个可能会导致达到阈值不报警的问题,建议您使用应用分组按业务划分资源后再设置报警。

    • 实例:表示该规则只对某个具体的实例生效。例如:您如果设置了实例粒度的主机CPU使用率大于80%报警,则当该实例CPU使用率大于80%时,会发送报警通知。
    规则名称 报警规则的名称。
    规则描述 报警规则的主体,定义在监控数据满足指定条件时,触发报警规则。例如:规则描述为CPU使用率5分钟的平均值>=90%,则报警服务会5分钟检查一次数据是否满足平均值>=90%。
    通道沉默周期 指报警发生后如果未恢复正常,间隔多久重复发送一次报警通知。
    生效时间 报警规则的生效时间,报警规则只在生效时间内才会检查监控数据是否需要报警。
    通知对象 需要发送报警的联系人组。
    报警级别
    • 电话+短信+邮件+钉钉机器人
    • 短信+邮件+钉钉机器人
    • 邮件+钉钉机器人
    弹性伸缩 产品选择弹性伸缩时,您需要设置弹性伸缩的地域弹性伸缩组弹性伸缩规则。在发生报警时触发相应的伸缩规则。
    日志服务 产品选择日志服务时,您需要设置日志服务的地域ProjectLogstore。在发生报警时,将报警信息写入日志。
    邮件备注 自定义报警邮件补充信息。填写邮件备注后,发送报警的邮件通知中会附带您的备注。
    报警回调 填写公网可访问的URL,云监控会将报警信息通过POST请求推送到该地址,目前仅支持HTTP协议。
  5. 单击确认
    您也可以单击目标实例ID操作列的报警规则,查看或修改已有的报警规则。修改报警规则

配置一键报警

您可以在云监控为Hologres开启一键报警功能,为所有实例设置默认的告警规则,方便对多个常见的重要指标进行异常告警,快速发现问题。Hologres默认的告警规则如下:
  • 如果存储水位(Critical)连续3次>90%就报警,通知对象为云账号报警联系人测试组
  • 如果SQL连接数(Info)连续3次>=95个就报警,通知对象为云账号报警联系人
  • 如果内存水位(Warn)连续3次>=95%就报警,通知对象为云账号报警联系人
  • 如果CPU水位(Info)连续3次>=99%就报警,通知对象为云账号报警联系人
说明 每次告警的周期为5分钟。
配置一键报警的注意事项如下:
  • 一键报警功能开启后,默认开启云监控预置的报警规则,快速建立云监控报警体系监控重要指标,并未全面覆盖所有监控指标。
  • 一键报警功能开启后,对应的报警规则作用于您选中产品的当前实例及后续新生成的实例。
  • 一键报警功能支持您对预置的报警规则进行修改、禁用和删除操作。

配置一键报警的步骤如下:

  1. 登录云监控控制台
  2. 在左侧导航栏,单击报警服务 > 一键报警,进入一键报警页面。
  3. 一键报警列表,单击交互式分析Hologres一键报警开关,开启一键报警。开启一键报警
  4. 单击交互式分析Hologres左侧的地域图标,查看云监控为您自动生成的报警规则。一键规则
  5. 可选:您可以单击操作栏中的禁用修改删除,禁用、修改、删除对应的报警规则。

使用自定义大盘定制监控指标

云监控已为您初始化了用户维度的Hologres监控大盘,如果您需要查看其他数据,可以使用自定义大盘定制监控指标。自定义监控大盘的步骤如下:

  1. 登录云监控控制台
  2. 在左侧导航栏,单击Dashboard > 自定义大盘,进入当前监控大盘页面。
  3. 在顶部菜单栏右侧,单击创建监控大盘
  4. 创建视图组对话框输入新建的监控大盘名称。
  5. 单击创建,系统自动跳转至新建的监控大盘页面。
  6. 单击右上角的添加图表,进入添加图表页面。添加图表
  7. 选择图表类型区域,选择折线图、面积图、TopN表格、热力图或饼图中任意一种图表类型。
  8. 选择监控项区域,配置云产品监控日志监控自定义监控
    云产品监控为例,选择云产品为交互式分析Hologres并为图表命名,配置监控项资源自定义
    Hologres支持的实例监控项如下表所示。
    监控项 描述
    CPU水位 实例CPU的使用百分比。
    内存水位 实例内存的使用百分比。
    存储已用容量 实例存储的使用量。
    存储水位 实例存储已用容量与购买存储规格的比例。未购买存储规格无数据。
    SELECT语句QPS 实例每秒SELECT语句数。
    INSERT语句QPS 实例每秒INSERT语句数。
    UPDATE语句QPS 实例每秒UPDATE语句数。
    DELETE语句QPS 实例每秒DELETE语句数。
    连接数 实例的SQL连接数,区分DB展示。
    SQL总连接数 实例的SQL总连接数。
    失败查询数 实例一段时间的失败查询数量。
    实时导入RPS 实例每秒实时导入数据条数。
    每秒Insert记录数 实例每秒INSERT数据条数。
    每秒Update记录数 实例每秒UPDATE数据条数。
    每秒Delete记录数 实例每秒DELETE数据条数。
    Select语句响应时间 Select Query查询的延迟时间。
    Insert语句响应时间 Insert Query查询的延迟时间。
    Update语句响应时间 Update Query查询的延迟时间。
    Delete语句响应时间 Delete Query查询的延迟时间。
    查询时长P95 95% SELECT查询的延迟时间。
    查询时长P99 99% SELECT查询的延迟时间。
    查询时长P999 99.9% SELECT查询的延迟时间。

告警最佳实践

如何为业务设置合适的告警,达到不频繁地对不重要事件报警,又能及时感知到重要异常事件发生的目的,实际上取决于您的具体业务情况,以及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水位大体相同。不同于CPU水位具有不产生计算则几乎为0的特点,内存水位在没有计算时,并不会为0,有时甚至会比较高。Hologres把计算内存分为了三块,一是预留给计算的内存,约占30%,没有计算时,这块几乎为0;二是数据缓存,在诸多情况下,数据缓存可以极大地减少I/O读取,提高SQL的计算效率,约占30%;三是实例中所有表、索引等元数据缓存,以及表在内存中的句柄和缓冲区等,约占30%。

    告警规则建议
    • 不建议内存水位设置过低的阈值。

      没有计算时只能保证前30%是空的,还有60%甚至以上的内存,可能是被占据的,因此体现出内存水位不为0甚至较高。有可能超过60%被占据,是因为元数据优先放入内存,如果元数据过多,加上数据缓存的30%,无计算时内存使用会超过60%。

    • 建议设置为“内存水位连续3次>=95% Warning(每次间隔5分钟)”类似的告警规则。

      设置为内存水位连续3次>=95% Warning(每次间隔5分钟)”的告警规则,即15分钟内检测到3次出现内存使用率超过95%,产生Warning级别的告警。

  • SQL连接数

    对SQL总连接数进行告警,是为了防止连接数打满,而造成无法连接的异常,影响业务。建议SQL连接数告警阈值为实例总连接数的90%~95%。

    首先,前往实例规格概述,根据您购买的实例规格,查看您实例的最大连接数,然后将告警规则阈值设置为您实例最大连接数的90%~95%。以128Core实例为例,最大连接数为512,告警规则阈值应为460~486,因此可以设置告警规则为:SQL连接数连续3次>=480 Warning(每次间隔5分钟)。

  • 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低的告警
    处理方法:
    1. 排查是否存在前台任务手工重启、发布、实例是否正在升级等人为或正常原因造成。
    2. 排查完毕后,请检查当前前台任务的报错状况,SQL日志报错情况,是否有报错信息,根据具体信息排查。
  • 出现平均响应时间长的告警

    处理方法:出现平均响应时间的尖峰,一般情况下,需要具体SQL执行人员排查具体的SQL的执行计划是否符合预期。

  • 出现RPS低的告警
    处理方法:
    1. 排查是否存在前台任务手工重启、发布、实例是否正在升级等人为或正常原因造成。
    2. 排查完毕后,请检查当前导入任务的健康状况,是否有报错信息,再根据具体信息排查。