Go to main content

Oracle® ZFS Storage Appliance 管理指南,发行版 OS8.8.x

退出打印视图

更新时间: 2021 年 8 月
 
 

从工作流中创建和发布定制警报

可以从工作流中发布警报,以响应工作流中定义的事件。警报操作可以在工作流中创建,也可以使用 BUI 或 CLI 创建。警报必须从工作流中发布。

定制警报可用于帮助强制执行管理策略或合规性。定制警报还可以帮助诊断工作流中的问题。

下表介绍了用户创建定制警报操作和发布定制警报所必须具有的授权。

表 160  使用定制警报所需的授权
任务
BUI 授权
CLI 授权
说明
创建定制警报操作
范围:警报
授权:配置
范围:alert
授权:allow_configure
通过使用 BUI、CLI 或在工作流中使用 createalert 函数创建定制警报操作所必需。
发布定制警报
范围:警报
授权:发布
范围:alert
授权:allow_post
在工作流中使用 postalert 函数所必需。
执行工作流
范围:工作流
授权:读取
范围:workflow
授权:allow_read
执行工作流所必需。

有关向用户授权的说明,请参见配置用户

创建定制警报

使用以下方法之一创建定制警报:


注 -  每次调用 createalert 时,都会使用不同 UUID 创建一个新警报。您可能希望使用 BUI 或 CLI 创建定制警报操作,然后将该警报操作的 UUID 传递到 postalert 函数,而不是每次执行使用 createalert 的工作流时创建同一警报操作的多个副本,如示例 20, 使用现有警报操作 UUID 发布定制警报中所示。

createalert 函数采用以下参数,并返回创建的定制警报操作的 UUID。

表 161  createalert 函数的参数
参数
类型
说明
actions
对象
必需。处理程序(警报操作)以及任何参数的列表。请参见表 49, 警报操作类型的“CLI 操作类型”列。

注 -  如果 execute_workflow 指定为操作 (handler),执行的工作流无法发布警报。

severity
字符串
可选。引发警报的事件的严重性。有效值为:Critical(严重)、Minor(次要)或 Major(重大)。
description
字符串
必需。引发警报的事件的说明。
response
字符串
可选。系统将执行以缓解此事件影响的操作的说明。
impact
字符串
可选。此事件对设备的影响的说明。
recommended_action
字符串
可选。管理员应执行以缓解此事件影响的操作的说明。
示例 18  从工作流中创建定制警报

此示例显示了使用 UUID custom_alert_uuid 创建定制警报的工作流。

var workflow = {
    name:        'createalert',
    description: 'Create a Custom Alert',
    version:     '1.0',
    origin:      'Oracle',
    alert:       false,
    setid:       true,
    execute:     function () {
                     var actions = [{
                         handler: 'email',
                         args: {
                             address: 'admin@example.com',
                             subject: 'Custom Alert Response'
                         }
                     }];
                     var createparams = {
                         description: 'createalert from within a workflow'
                     };
                     var custom_alert_uuid = createalert(actions, createparams);
                 }
};

通过使用工作流创建定制警报时,会使警报显示在 BUI 和 CLI 中的警报操作列表中。

通过使用工作流创建定制警报时,将创建审计日志条目,其中包含以下摘要:

Workflow name_of_workflow: created custom alert value_of_custom_alert_uuid

通过使用 BUI 或 CLI 或通过使用 script 命令运行脚本来创建定制警报时,将创建审计日志条目,其中包含以下摘要:

Created custom alert value_of_custom_alert_uuid

发布定制警报

使用 postalert 函数从工作流中发布定制警报,以响应该工作流中发生的事件。

虽然可使用 script 命令从脚本中调用 createalert 函数,但是只能从工作流定义中调用 postalert 函数。

postalert 函数采用与 createalert 函数相同的参数,第一个参数除外:createalert 采用处理程序或警报操作的列表,而 postalert 采用要发布的警报的 UUID。有关其他参数的说明,请参见表 161, createalert 函数的参数

createalert 可选的参数值(severityresponseimpactaction)对于 postalert 不是可选的。对于 postalert 调用,根据以下规则确定这些值:

  • 如果可选参数的值提供给 createalert,但未提供给该 UUID 的 postalert 调用,则 postalert 调用从相应 createalert 调用继承那些参数值。

  • 如果可选参数的值未提供给 createalert,但提供给该 UUID 的 postalert 调用,则 postalert 调用使用在 postalert 调用中指定的那些值。

  • 如果可选参数的值同时提供给 createalert 和相应的 postalert,则每个调用使用在该调用中指定的参数值。

  • 如果可选参数的值未提供给 createalert 或相应的 postalert,则一条错误消息将指示用户为 postalert 调用提供值。

postalert 函数返回发布的定制警报的 UUID。

示例 19  从工作流中创建和发布定制警报

此示例发布在示例 18, 从工作流中创建定制警报中创建的警报。postalert 调用是对工作流中发生的事件的响应。在此示例中,省略了用于定义在 postalert 调用之前发生的事件的代码。

var workflow = {
    name:        'createalert and postalert',
    description: 'Create and Post a Custom Alert',
    version:     '1.0',
    origin:      'Oracle',
    alert:       false,
    setid:       true,
    execute:     function () {
                     var actions = [{
                         'handler': 'resume_dataset',
                         'args': {
                             'dataset': 'dataset_to_resume'
                         }
                     }];
                     var createparams = {
                         description: 'createalert and postalert from within a workflow'
                     };
                     var postparams = {
                         severity: 'Minor',
                         description: 'postalert from within a workflow',
                         response: 'The alert action resumes dataset dataset_to_resume',
                         impact: 'What happened to the appliance',
                         recommended_action: 'What the administrator should do'
                     };
                     var custom_alert_uuid = createalert(actions, createparams);
                     var posted_alert_uuid = postalert(custom_alert_uuid, postparams);
                 }
};

执行调用 postalert 函数的工作流时,将创建警报日志条目,其中包含以下摘要:

Custom: name_of_workflow
示例 20  使用现有警报操作 UUID 发布定制警报

您可能希望使用现有定制警报的 UUID 作为 postalert 函数的第一个参数,而不是增加同一警报操作的副本。

  1. 使用 BUI、CLI、脚本、工作流或 RESTful API 创建定制警报操作。

  2. 使用 BUI、CLI 或审计日志检索定制警报操作的 UUID。

  3. 使用检索到的 UUID 作为 postalert 函数的第一个参数。

var workflow = {
    name:        'postalert',
    description: 'Post a Custom Alert using existing uuid',
    version:     '1.0',
    origin:      'Oracle',
    alert:       false,
    setid:       true,
    execute:     function () {
                     var postparams = {
                         severity: 'Minor',
                         description: 'postalert from within a workflow',
                         response: 'What the system will do',
                         impact: 'What happened to the appliance',
                         recommended_action: 'What the administrator should do'
                     };
                     var posted_alert_uuid = postalert('uuid_of_existing_custom_alert', postparams);
                 }
};