云监控为您提供企业级开放型一站式监控解决方案。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个可能会导致达到阈值不报警的问题,建议您使用应用分组按业务划分资源后再设置报警。

    • 应用分组:报警规则作用于Hologres的指定应用分组内的全部资源上。
    • 实例:表示该规则只对某个具体的实例生效。例如:您如果设置了实例粒度的主机CPU使用率大于80%报警,则当该实例CPU使用率大于80%时,会发送报警通知。
    规则描述 报警规则的主体。当监控数据满足报警条件时,触发报警规则。规则描述的设置方法如下:
    1. 单击添加规则
    2. 添加规则描述面板,设置规则名称、监控指标类型、监控指标、阈值、报警级别和报警方式等。
    3. 单击确定
    通道沉默周期 指报警发生后如果未恢复正常,间隔多久重复发送一次报警通知。
    生效时间 报警规则的生效时间,报警规则只在生效时间内才会检查监控数据是否需要报警。
    说明 单击高级设置,可设置该参数。
    报警联系人组 发送报警的联系人组。

    应用分组的报警通知会发送给该报警联系人组中的报警联系人。报警联系人组是一组报警联系人,可以包含一个或多个报警联系人。

    关于如何创建报警联系人和报警联系人组,请参见创建报警联系人或报警联系组

    报警回调 公网可访问的URL,用于接收云监控通过POST请求推送的报警信息。目前仅支持HTTP协议。关于如何设置报警回调,请参见使用阈值报警回调
    弹性伸缩 产品选择弹性伸缩时,您需要设置弹性伸缩的地域弹性伸缩组弹性伸缩规则。在发生报警时触发相应的伸缩规则。
    日志服务 产品选择日志服务时,您需要设置日志服务的地域ProjectLogstore。在发生报警时,将报警信息写入日志。
    消息服务MNS-Topic 如果您打开消息服务MNS-Topic开关,当报警发生时,会将报警信息写入消息服务的主题。您需要设置消息服务的地域和主题。

    关于如何创建主题,请参见创建主题

    无数据报警处理方法 无监控数据时报警的处理方式。取值:
    • 不做任何处理(默认值)
    • 发送无数据报警
    • 视为正常
  5. 单击确认
    您也可以单击目标实例ID操作列的报警规则,查看或修改已有的报警规则。修改报警规则

配置一键报警

您可以在云监控为Hologres开启一键报警功能,为所有实例设置默认的告警规则,方便对多个常见的重要指标进行异常告警,快速发现问题。Hologres默认的告警规则如下:
  • 如果连接数使用率(Info)连续3次平均值>=95就报警,通知对象为云账号报警联系人
  • 如果存储水位(Warn)连续3次平均值>90%就报警,通知对象为云账号报警联系人
  • 如果内存水位(Warn)连续3次平均值>=90%就报警,通知对象为云账号报警联系人
  • 如果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支持的实例监控项如下表所示。
    监控项 Code 描述
    CPU水位 cpu_usage 实例CPU的使用百分比。
    内存水位 memory_usage 实例内存的使用百分比。
    存储已用容量 storage_usage 实例存储的使用量。
    存储水位 storage_usage_percent 实例存储已用容量与购买存储规格的比例。未购买存储规格无数据。
    Query QPS明细 query_qps 每秒SQL语句执行个数,按cmdType(Query类型)展示。
    cmdType包含如下。
    • SELECT语句。
    • INSERT语句。
    • UPDATE语句。
    • DELETE语句。
    Query响应时间明细 query_latency Query响应时间(Latency)明细,按cmdType(Query类型)展示。
    cmdType包含如下。
    • SELECT语句。
    • INSERT语句。
    • UPDATE语句。
    • DELETE语句。
    Query P99 延迟 query_latency_p99 Query响应时间P99明细,按cmdType(Query类型)展示。
    连接数 connection_count 实例的SQL连接数明细,按数据库名称展开。连接数指标未展示在主图,需在自定义监控配置。
    SQL总连接数 connection_num 实例的SQL总连接数。
    连接数使用率 connection_usage 单个节点占用连接数与总连接数的比值。
    每秒失败查询数 failed_query_qps 实例每秒失败SQL查询数量。
    实时写入RPS dml_rps 实例每秒实时导入数据条数。
    Select语句响应时间 Select Query查询的延迟时间。
    Insert语句响应时间 Insert Query查询的延迟时间。
    Update语句响应时间 Update Query查询的延迟时间。
    Delete语句响应时间 Delete Query查询的延迟时间。

告警最佳实践

如何为业务设置合适的告警,达到不频繁地对不重要事件报警,又能及时感知到重要异常事件发生的目的,实际上取决于您的具体业务情况,以及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次>=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低的告警
    处理方法:
    1. 排查是否存在前台任务手工重启、发布、实例是否正在升级等人为或正常原因造成。
    2. 排查完毕后,请检查当前前台任务的报错状况,SQL日志报错情况,是否有报错信息,根据具体信息排查。
  • 出现平均响应时间长的告警

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

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