警报操作是对事件警报的响应。要创建警报操作,请指定一个或多个事件,并指定在为该事件发送警报时要执行的一个或多个操作(如发送电子邮件或执行工作流)。可以为任何特定事件警报指定多个警报操作。
category 属性指定将针对其执行警报操作的事件的类别。每个类别包括一个或多个事件。创建或列出警报操作时,将列出每个类别中的事件。默认情况下,将对类别中的所有事件执行警报操作。如果仅应对一部分事件执行该警报操作,请将表示不应导致执行该警报操作的事件的属性值更改为 false。
下表介绍了可以指定的事件类别。
|
handler 属性指定要在发生指定事件时执行的操作类型。handler 的大多数值都要求设置其他属性,如下表中所示。
|
列出所有警报操作时,对于每个警报操作仅列出事件类别以及该类别中的每个事件。要还显示为警报操作定义的响应,请参见列出单个警报操作。
获取警报操作的请求示例:
GET /api/alert/v1/actions HTTP/1.1 Authorization: Basic Tm8gcGVla2luZyE= Host: zfs-storage.example.com:215 Accept: application/json
结果示例:
HTTP/1.1 200 OK X-Zfssa-Appliance-Api: 1.0 Content-Type: application/json Content-Length: 1395 { "actions": [ { "category": "smf", "uuid": "actions-uuid1", "failed_services": true, "degraded_services": true, "repaired_services": false, "actions": "actions-000", "href": "/api/alert/v2/actions/actions-000" }, { "category": "analytics", "uuid": "actions-uuid2", "analytics_datasets_auto-suspend_notify": false, "analytics_datasets_auto-suspend_warning": false, "analytics_memory_total_exceeded": true, "analytics_memory_total_normal": false, "analytics_usage_exceeded": true, "analytics_usage_normal": false, "actions": "actions-001", "href": "/api/alert/v2/actions/actions-001" } ] }
指定要列出的特定警报操作时,对于该警报操作将列出事件类别、该类别中的每个事件以及每个响应或操作。
以下警报操作具有三个响应,当发生 true 事件之一时,将执行所有这些响应。
请求示例:
GET /api/alert/v1/actions/actions-000 HTTP/1.1
结果示例:
HTTP/1.1 200 OK X-Zfssa-Appliance-Api: 1.0 Content-Type: application/json Content-Length: 331 { "actions": { "href": "/api/alert/v2/actions/actions-000", "category": "smf", "uuid": "actions-uuid1", "failed_services": true, "degraded_services": true, "repaired_services": false, "action-000": { "handler": "email", "address": "admin@example.com", "subject": "failed or degraded service", "href": "/api/alert/v2/actions/actions-000/action-000" }, "action-001": { "handler": "email", "address": "it-team@example.com", "subject": "failed or degraded service", "href": "/api/alert/v2/actions/actions-000/action-001" }, "action-002": { "handler": "syslog", "href": "/api/alert/v2/actions/actions-000/action-002" } } }
创建警报操作时,必须为 category 属性指定值,该属性是要为其定义此定制响应的事件的类别。有关 category 值的列表,请参见表 8, 警报操作事件类别。
请求示例:
POST /api/alert/v1/actions HTTP/1.1 Host: zfs-storage.example.com:215 X-Auth-Session: uerqghq84vbdv Content-Type: application/json Content-Length: 30 {"category": "smf"}
结果示例:
结果中将列出指定事件类别中的所有事件。默认情况下,该类别中的所有事件将导致执行响应操作(这些事件都设置为 true)。
HTTP/1.1 201 Created X-Zfssa-Appliance-Api: 1.0 Content-Type: application/json Content-Length: 118 Location: /api/alert/v1/actions/actions-000 { "actions": { "href": "/api/alert/v2/actions/actions-000", "category": "smf", "uuid": "actions-uuid", "failed_services": true, "degraded_services": true, "repaired_services": true } }
如果指定事件类别中的一些事件不应导致执行响应操作,则将表示这些事件的属性设置为 false。
在以下示例中,您可能想要为修复的服务定义与失败或降级的服务不同的响应。
请求示例:
PUT /api/alert/v1/actions/actions-000 HTTP/1.1 Host: zfs-storage.example.com:215 X-Auth-Session: uerqghq84vbdv Content-Type: application/json Content-Length: 30 {"repaired_services": false}
结果示例:
HTTP/1.1 202 Accepted X-Zfssa-Appliance-Api: 1.0 Content-Type: application/json Content-Length: 195 { "actions": { "href": "/api/alert/v2/actions/actions-000", "category": "smf", "uuid": "actions-uuid", "failed_services": true, "degraded_services": true, "repaired_services": false } }
默认情况下,会将事件警报记录到警报日志中。上面的几个示例除了发布到警报日志外,还指定要为其定义响应的事件。要定义对这些事件的响应,请为特定警报操作指定 handler 属性的值。有关 handler 值的列表,请参见表 9, 警报操作响应类型。
请求示例:
此示例为 actions-000 警报创建向 admin 发送电子邮件的警报操作。
POST /api/alert/v1/actions/actions-000 HTTP/1.1 Host: zfs-storage.example.com:215 X-Auth-Session: uerqghq84vbdv Content-Type: application/json Content-Length: 68 {"handler": "email", "address": "admin@example.com", "subject": "failed or degraded service"}
结果示例:
HTTP/1.1 201 Created X-Zfssa-Appliance-Api: 1.0 Content-Type: application/json Content-Length: 177 Location: /api/alert/v1/actions/actions-000/action-000 { "action": { "href": "/api/alert/v1/actions/actions-002/action-000", "handler": "email", "address": "admin@example.com", "subject": "failed or degraded service" } }
要为同一个事件指定其他响应,请针对同一个警报操作再次发出 POST 请求,然后指定一个不同的处理程序,或者指定同一个处理程序并为该处理程序指定不同的参数。如果您在一个请求中指定多个 handler 属性,则将忽略除最后一个 handler 属性以外的所有其他 handler 属性。
以下示例进行了简化。这些请求创建 /api/alert/v1/actions/actions-000/action-001 和 /api/alert/v1/actions/actions-000/action-002,如列出单个警报操作中所示。
POST /api/alert/v1/actions/actions-002 HTTP/1.1 ... {"handler": "email", "address": "it-team@example.com", "subject": "failed or degraded service"}
POST /api/alert/v1/actions/actions-002 HTTP/1.1 ... {"handler": "syslog"}
要修改响应,请为您要修改的响应指定 HREF。
PUT /api/alert/v1/actions/actions-000/action-001 HTTP/1.1 Host: zfs-storage.example.com:215 X-Auth-Session: uerqghq84vbdv Content-Type: application/json Content-Length: 28 {"address": "it-group@example.com"}
要删除响应,请为您要删除的响应指定 HREF。
DELETE /api/alert/v1/actions/actions-000/action-000 HTTP/1.1 Host: zfs-storage.example.com:215 X-Auth-Session: uerqghq84vbdv HTTP/1.1 204 No Content
要删除警报操作,请为您要删除的警报操作指定 HREF。
请求示例:
DELETE /api/alert/v1/actions/actions-003 HTTP/1.1 Authorization: Basic Tm8gcGVla2luZyE= Host: zfs-storage.example.com:215
结果示例:
HTTP/1.1 204 No Content X-Zfssa-Appliance-Api: 1.0