Go to main content

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

退出打印视图

更新时间: 2021 年 8 月
 
 

针对警报操作使用工作流

可执行工作流作为警报操作。作为警报操作执行的工作流是执行工作流警报操作 (BUI) 的选定工作流,或者是 execute_workflow 处理程序 (CLI) 的 workflow 属性的值,如添加警报操作中所述。

要允许工作流作为警报操作来执行,workflow 全局变量必须指定 alert: true 成员。

默认情况下,工作流以正在执行工作流的用户身份执行。但是,默认情况下,作为警报操作执行的工作流将以创建该工作流的用户身份执行。为了能够作为警报操作执行,工作流的 workflow 全局变量必须指定 setid: true 成员。

警报操作具有一个对象参数,该参数具有以下成员。

表 158  警报执行上下文的必要成员
必要成员
类型
说明
class
字符串
警报的类别。
code
字符串
警报的代码。
items
对象
说明警报的对象。
timestamp
日期
警报的时间。

parameters 对象的 items 成员具有以下成员:

表 159  项目成员的必要成员
必要成员
类型
说明
url
字符串
说明警报的网页 URL
action
字符串
用户响应警报应执行的操作。
impact
字符串
引发警报的事件的影响。
description
字符串
说明警报的用户可读的字符串。
severity
字符串
引发警报的事件的严重性。
示例 17  审计无法重新引导故障的工作流

作为警报操作执行的工作流可以使用 audit 函数生成审计日志条目。例如,调试信息应写入审计日志。

请参见以下示例中 audit 函数的多种用法。此工作流:

  • 将执行,以响应指定此工作流将执行的警报 params.uuid

  • 仅当两个系统都处于群集状态时才重新引导系统。

  • 审计任何重新引导故障。

var workflow = {
       name: 'Failover',
       description: 'Fail the node over to its clustered peer',
       alert: true,
       setid: true,
       execute: function (params) {
               var uuid = params.uuid;
               var clustered = 'AKCS_CLUSTERED';

               audit('attempting failover in response to alert ' + uuid);

               try {
                       run('configuration cluster');
               } catch (err) {
                       audit('could not get clustered state; aborting');
                       return;
               }

               if ((state = get('state')) != clustered) {
                       audit('state is ' + state + '; aborting');
                       return;
               }

               if ((state = get('peer_state')) != clustered) {
                       audit('peer state is ' + state + '; aborting');
                       return;
               }

               run('cd /');
               run('confirm maintenance system reboot');
       }
};