关于RDS状态的监控,除了常规的CloudWatch Metric以外。RDS还有一个事件机制,能够将RDS的事件通知到SNS。

RDS Event简介

RDS Event - Source type

RDS的事件类型分为如下六大类:

  • 数据库实例(DB instance)
  • 数据库集群(DB cluster)
  • 数据库快照(DB snapshot)
  • 数据库集群快照(DB cluster snapshot)
  • 数据库安全组(DB security group)
  • 数据库参数组(DB parameter group)

RDS Event - Event Categories

每个事件大类下还有不同类别的事件类型,各个事件类型下的类别如下:

  • 数据库实例(DB instance)的Event Categories
    rds_event_source_type_instance
  • 数据库集群(DB cluster)的Event Categories
    rds_event_source_type_db_cluster
  • 数据库快照(DB snapshot)的Event Categories
    rds_event_source_type_snapshots
  • 数据库集群快照(DB cluster snapshot)的Event Categories
    rds_event_source_type_db_cluster_snapshots
  • 数据库安全组(DB security group)的Event Categories
    rds_event_source_type_security_group
  • 数据库参数组(DB parameter group)的Event Categories
    rds_event_source_type_parameter_group

RDS Event - Event ID

每个Event Category下还有多个Event,太多了,没法一一罗列了。详情可以参见AWS官网文档

RDS Event和CloudWatch Metric比较

RDS的CloudWatch Metric主要针对的是RDS实例内在运行情况的监控,比如CPU利用率,DB连接,剩余磁盘空间,剩余内存,写和读的IOPS等。

而RDS的Event是对RDS的配置组以及Instance实例的状态变更的监控。比如Instance的创建,删除,备份和是否可用等;参数组是否修改了;快照的创建,删除等。

创建RDS Event

RDS的Console正在改版,虽然设置原理都是一样的,但是在界面和操作的交互上,新Console和老Console还是有所区别的。

老Console中设置RDS Event

  1. 进入RDS Console,左侧栏中选中“Event Subscriptions”,在展开的页面中点击“Create Event Subscription”来创建Event Subscription
    rds_event_old_console_create_event_subscription

  2. 在“Create Event Subscription”页面中,填入对应的内容

    • Name一栏填入要设置的Event的名字,此处设为rds-mydb-instance-event
    • Send notifications to一栏选择要发送的SNS Topic,如果没有,可以点击旁边的create topic按钮新建一个SNS Topic
    • Source Type一栏,根据实际需要选择要监控的Event类型,此处选择Instances
    • Enabled一栏,可以设置是否将这个Subscription设为开启状态
    • Event Categories一栏,选上要监控的Event类别, 此处可以多选。在Mac下,按住Command键后再点击鼠标就能够选取多个。图中选择了availability,deletion,failover,failure,low storage和recovery这六个Event Categories。
    • Instances一栏,可以选择只对某些RDS Instance监控,或者对全部RDS Instance进行监控
      rds_event_old_console_create_event_subscription_detail
  3. 点击Create建立Subscription

  4. 在Console中就能够看到Subscription正在创建中,等待一小段时间后,就会显示Subscription创建成功了。
    rds_event_old_console_create_event_subscription_list

  5. 当有监控的事件发生时,AWS就会发送通知到设置的SNS Topic中。SNS再以Email,SMS或者HTTP Endpoint的形式发送给Topic的订阅者。设置完后,在SNS中订阅的邮件地址马上就收到了一封主题为“RDS Notification Message”的邮件。提示将会收到来自SNS的通知,如果不需要,可以退订。

新Console中设置RDS Event

  1. 进入RDS Console,左侧栏中选中“Event Subscriptions”,在展开的页面中点击“Create Event Subscription”来创建Event Subscription
    rds_event_new_console_create_event_subscription

  2. 在“Create Event Subscription”页面中,填入对应的内容

    • Name一栏填入要设置的Event的名字,此处设为rds-mydb-instance-event
    • Enabled一栏,可以设置是否将这个Subscription设为开启状态
    • Target一栏,选择已有的SNS Topic或者新建一个Topic
      rds_event_new_console_create_event_subscription_detail_1
  3. 再往下翻,设置Event。
    3.1 初始画面,只有Source Type可选。
    rds_event_new_console_create_event_subscription_detail_source_type
    3.2 Source Type选择Instances,出现Instances to include和Event categories to include的页面。
    rds_event_new_console_create_event_subscription_detail_source_type_2
    3.3 在Instances to include中选择Select specific instances, 出现Specific instances的下拉菜单,在菜单中选择要监控的RDS
    rds_event_new_console_create_event_subscription_detail_source_type_3
    3.4 在Event categories to include中选择Select specific event categories, 出现Specific event下拉菜单,在菜单中选取availability,deletion,failover,failure,low storage和recovery这六个Event Categories。不得不吐槽的是,目前操作界面中每次只能选一个,要选六个Event category就需要打开下拉菜单六次,再点击对应的event category名字。
    rds_event_new_console_create_event_subscription_detail_source_type_4

  4. 点击Create建立Subscription

  5. 在Console中就能够看到Subscription正在创建中,等待一小段时间后,就会显示Subscription创建成功了。
    rds_event_new_console_create_event_subscription_list

  6. 当有监控的事件发生时,AWS就会发送通知到设置的SNS Topic中。SNS再以Email,SMS或者HTTP Endpoint的形式发送给Topic的订阅者。设置完后,在SNS中订阅的邮件地址马上就收到了一封主题为“RDS Notification Message”的邮件。提示将会收到来自SNS的通知,如果不需要,可以退订。

接收通知

设置好RDS Subscription后,一旦有对应的Event出现,RDS就会发送消息到设置的SNS Topic中,订阅此Topic的人员就可以立马收到通知,从而可以及时处理情况。

新老Console比较

在RDS Event设置这个Feature上,新Console并没有添加新的功能,只是在UI界面和交互方式上做了调整。但个人感觉,新Console还不如老Console的交互来得人性化。

先来一张旧版Console和新版Console的对比图。
rds_event_compare_with_old_and_new_console

谈谈个人对新Console的看法:

  1. 界面不太紧凑,新建一个Event Subscription,页面上需要滚动两屏才能设置完。设计风格应该是借鉴了新版的S3 Console。
  2. 设置Event Source的界面时,交互太过于强调分层。以设置Instance的Event为例,必须先设置好Source type为Instance,才能看到”Instance to include”和”Event Categories to include”。个人还是比较喜欢旧版中,将所有可选的内容直观的显示在页面上给用户选取这样的交互方式。
  3. 设置event categories时的下拉菜单的交互称不上是用户友好的。设置每一个event categories,都需要经历两步操作: 1.点开下拉菜单。2. 选择event category。如果要设置六个event category,那就需要12次点击操作,其中选取event category这6次点击是无法避免的,可是需要用户点开6次下拉菜单,这个设定不太友好。或许有办法可以点开下拉菜单一次,选取多个event category,只是我没试出来而已。
  4. 还有“All instances”和“All event categories”的选项,选取后在界面上没有像旧版Console那样,显示“All instances”和“All event categories”都包含了哪些具体内容。新版console的设计者应该是认为选了这两个选项,就代表你已经明确知道目前系统中有哪几个Instance和这个Source type下的所有Event Categories是什么了。在这个操作上,潜在要求了Console的使用者需要和像使用AWS CLI那样,预先了解资源,这种设计对新手不够友好。

延伸阅读

Reference

留言