使用 Aodh 告警进行审计

具有 EVENT 类型的审计可以由特殊告警触发。本指南将引导您完成通过将 Watcher 与 Ceilometer/Aodh 集成来构建事件驱动的优化解决方案的步骤。

步骤 1:创建具有 EVENT 类型的审计

第一步是创建具有 EVENT 类型的审计,您可以先创建审计模板

$ openstack optimize audittemplate create your_template_name <your_goal> \
  --strategy <your_strategy>

或者直接使用特殊目标和策略创建审计

$ openstack optimize audit create --goal <your_goal> \
  --strategy <your_strategy> --audit_type EVENT

这是一个使用虚拟策略创建审计的示例

$ openstack optimize audit create --goal dummy \
  --strategy dummy --audit_type EVENT
+---------------+--------------------------------------+
| Field         | Value                                |
+---------------+--------------------------------------+
| UUID          | a3326a6a-c18e-4e8e-adba-d0c61ad404c5 |
| Name          | dummy-2020-01-14T03:21:19.168467     |
| Created At    | 2020-01-14T03:21:19.200279+00:00     |
| Updated At    | None                                 |
| Deleted At    | None                                 |
| State         | PENDING                              |
| Audit Type    | EVENT                                |
| Parameters    | {u'para2': u'hello', u'para1': 3.2}  |
| Interval      | None                                 |
| Goal          | dummy                                |
| Strategy      | dummy                                |
| Audit Scope   | []                                   |
| Auto Trigger  | False                                |
| Next Run Time | None                                 |
| Hostname      | None                                 |
| Start Time    | None                                 |
| End Time      | None                                 |
| Force         | False                                |
+---------------+--------------------------------------+

我们需要使用 Watcher webhook API 构建 Aodh 操作 URL。为了方便起见,我们将 URL 导出到环境变量中

$ export AUDIT_UUID=a3326a6a-c18e-4e8e-adba-d0c61ad404c5
$ export ALARM_URL="trust+https:///infra-optim/v1/webhooks/$AUDIT_UUID"

步骤 2:创建 Aodh 告警

创建审计后,我们可以继续创建 Aodh 告警,并将告警操作设置为 Watcher webhook API。告警类型可以是 event(例如 compute.instance.create.end)或 gnocchi_resources_threshold(例如 cpu_util),更多信息请参考 alarm-creation

例如

$ openstack alarm create \
  --type event --name instance_create \
  --event-type "compute.instance.create.end" \
  --enable True --repeat-actions False \
  --alarm-action $ALARM_URL
+---------------------------+------------------------------------------------------------------------------------------+
| Field                     | Value                                                                                    |
+---------------------------+------------------------------------------------------------------------------------------+
| alarm_actions             | [u'trust+https:///infra-optim/v1/webhooks/a3326a6a-c18e-4e8e-adba-d0c61ad404c5'] |
| alarm_id                  | b9e381fc-8e3e-4943-82ee-647e7a2ef644                                                     |
| description               | Alarm when compute.instance.create.end event occurred.                                   |
| enabled                   | True                                                                                     |
| event_type                | compute.instance.create.end                                                              |
| insufficient_data_actions | []                                                                                       |
| name                      | instance_create                                                                          |
| ok_actions                | []                                                                                       |
| project_id                | 728d66e18c914af1a41e2a585cf766af                                                         |
| query                     |                                                                                          |
| repeat_actions            | False                                                                                    |
| severity                  | low                                                                                      |
| state                     | insufficient data                                                                        |
| state_reason              | Not evaluated yet                                                                        |
| state_timestamp           | 2020-01-14T03:56:26.894416                                                               |
| time_constraints          | []                                                                                       |
| timestamp                 | 2020-01-14T03:56:26.894416                                                               |
| type                      | event                                                                                    |
| user_id                   | 88c40156af7445cc80580a1e7e3ba308                                                         |
+---------------------------+------------------------------------------------------------------------------------------+

步骤 3:触发告警

在此示例中,您可以创建一个新实例来触发告警。告警状态将从 insufficient data 变为 alarm

$ openstack alarm show b9e381fc-8e3e-4943-82ee-647e7a2ef644
+---------------------------+-------------------------------------------------------------------------------------------------------------------+
| Field                     | Value                                                                                                             |
+---------------------------+-------------------------------------------------------------------------------------------------------------------+
| alarm_actions             | [u'trust+https:///infra-optim/v1/webhooks/a3326a6a-c18e-4e8e-adba-d0c61ad404c5']                          |
| alarm_id                  | b9e381fc-8e3e-4943-82ee-647e7a2ef644                                                                              |
| description               | Alarm when compute.instance.create.end event occurred.                                                            |
| enabled                   | True                                                                                                              |
| event_type                | compute.instance.create.end                                                                                       |
| insufficient_data_actions | []                                                                                                                |
| name                      | instance_create                                                                                                   |
| ok_actions                | []                                                                                                                |
| project_id                | 728d66e18c914af1a41e2a585cf766af                                                                                  |
| query                     |                                                                                                                   |
| repeat_actions            | False                                                                                                             |
| severity                  | low                                                                                                               |
| state                     | alarm                                                                                                             |
| state_reason              | Event <id=67dd0afa-2082-45a4-8825-9573b2cc60e5,event_type=compute.instance.create.end> hits the query <query=[]>. |
| state_timestamp           | 2020-01-14T03:56:26.894416                                                                                        |
| time_constraints          | []                                                                                                                |
| timestamp                 | 2020-01-14T06:17:40.350649                                                                                        |
| type                      | event                                                                                                             |
| user_id                   | 88c40156af7445cc80580a1e7e3ba308                                                                                  |
+---------------------------+-------------------------------------------------------------------------------------------------------------------+

步骤 4:验证审计

可以验证审计状态是否为 SUCCEEDED

$ openstack optimize audit show a3326a6a-c18e-4e8e-adba-d0c61ad404c5
+---------------+--------------------------------------+
| Field         | Value                                |
+---------------+--------------------------------------+
| UUID          | a3326a6a-c18e-4e8e-adba-d0c61ad404c5 |
| Name          | dummy-2020-01-14T03:21:19.168467     |
| Created At    | 2020-01-14T03:21:19+00:00            |
| Updated At    | 2020-01-14T06:26:40+00:00            |
| Deleted At    | None                                 |
| State         | SUCCEEDED                            |
| Audit Type    | EVENT                                |
| Parameters    | {u'para2': u'hello', u'para1': 3.2}  |
| Interval      | None                                 |
| Goal          | dummy                                |
| Strategy      | dummy                                |
| Audit Scope   | []                                   |
| Auto Trigger  | False                                |
| Next Run Time | None                                 |
| Hostname      | ubuntudbs                            |
| Start Time    | None                                 |
| End Time      | None                                 |
| Force         | False                                |
+---------------+--------------------------------------+

您可以使用以下命令检查是否创建了行动计划

$ openstack optimize actionplan list --audit a3326a6a-c18e-4e8e-adba-d0c61ad404c5
+--------------------------------------+--------------------------------------+-------------+------------+-----------------+
| UUID                                 | Audit                                | State       | Updated At | Global efficacy |
+--------------------------------------+--------------------------------------+-------------+------------+-----------------+
| 673b3fcb-8c16-4a41-9ee3-2956d9f6ca9e | a3326a6a-c18e-4e8e-adba-d0c61ad404c5 | RECOMMENDED | None       |                 |
+--------------------------------------+--------------------------------------+-------------+------------+-----------------+