Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

https://issues.apache.org/jira/browse/CLOUDSTACK-6256

Branch

4.4

Introduction

Various actions on resources(for example, creating a resource or deleting of a resource) are logged as events into Cloudstack. These events could An event in cloudstack can be change in state (like create, edit, delete etc) of the resources, an action performed by the user (like login, logout etc ) or policy based events aka alerts. These events hold success or failure details related to that resourceof an event. Events for asynchronous or synchronous or asynchronous jobs are logged into cloud database in the following tablesjobs log when a job is scheduled, when it starts, and when it completes. While events for long running synchronous jobs log when it starts and when it completes.

Purpose

Currently the events logged in CloudStack doesn't give detailed information about the event that has occurred. The information provided in each event shown on the cloudstack ui doesn't provide specifics, particularly in case of errors. For example, the message shown on the cloudstack ui is just "Error while starting Vm. Vm Id: <id>" in case of failure to start a vm , which doesn't help much. Hence, the events should be enhanced to include more information to be descriptive enough.

Proposal

I would like to propose some changes to enhance the events to be more informative. Like:

  1. Instead of just showing resource database id in the event details it should display resource UUID. Since all the cloudstack apis take input as resource uuid it would be helpful to see the same on the ui as well.
  2. Enhance the events and listEvents API to include the resource UUID so that it can be queried by the resource UUID as well.
  3. Currently, the event description messages are specified in the *Cmd.java file instead, all of them should be externalize to a resource file. This would be helpful even for internationalization.
  4. Provide more detailed messages in case of error events. Messages such as "Error while starting VM" are generic to take any action.

Design description

Currently all the cloudstack events are persisted into the cloud database in the event and event_view tables

Code Block
mysql> desc event;
+
Code Block
mysql> desc event;
+-------------+---------------------+------+-----+-----------+----------------+
| Field       | Type                | Null | Key | Default   | Extra          |
+-------------+---------------------+------+-----+-----------+---------------+-+
| id--------------------+------+-----+-----------+----------------+
| Field       | Type  | bigint(20) unsigned | NO   | PRI | NULL    | Null | auto_incrementKey |
| uuidDefault        | varchar(40)  Extra       | YES  | UNI | NULL  |
+-------------+---------------------+------+-----+-----------+----------------+
| id      |    | bigint(20) unsigned | NO   | PRI | NULL      | auto_increment |
| uuid        | varchar(40)         | YES  | UNI | NULL      |                |
| type        | varchar(32)         | NO   | MUL | NULL      |                |
| state       | varchar(32)         | NO   |     | Completed |                |
| description | varchar(1024)       | NO   |     | NULL      |                |
| user_id     | bigint(20) unsigned | NO   | MUL | NULL      |                |
| account_id  | bigint(20) unsigned | NO   | MUL | NULL      |                |
| domain_id   | bigint(20) unsigned | NO   |     | NULL      |                |
| created     | datetime            | NO   | MUL | NULL      |                |
| level       | varchar(16)         | NO   | MUL | NULL      |                |
| start_id    | bigint(20) unsigned | NO   |     | 0         |                |
| parameters  | varchar(1024)       | YES  |     | NULL      |                |
| archived    | tinyint(1) unsigned | NO   |     | 0         |                |
+-------------+---------------------+------+-----+-----------+----------------+

mysql> desc event_view;
+--------------+---------------------+------+-----+-----------+-------+
| Field        | Type                | Null | Key | Default   | Extra |
+--------------+---------------------+------+-----+-----------+-------+
| id           | bigint(20) unsigned | NO   |     | 0         |       |
| uuid         | varchar(40)         | YES  |     | NULL      |       |
| type         | varchar(32)         | NO   |     | NULL      |       |
| state        | varchar(32)         | NO   |     | Completed |       |
| description  | varchar(1024)       | NO   |     | NULL      |       |
| created      | datetime            | NO   |     | NULL      |       |
| level        | varchar(16)         | NO   |     | NULL      |       |
| parameters   | varchar(1024)       | YES  |     | NULL      |       |
| start_id     | bigint(20) unsigned | NO   |     | 0         |       |
| start_uuid   | varchar(40)         | YES  |     | NULL      |       |
| user_id      | bigint(20) unsigned | NO   |     | NULL      |       |
| archived     | tinyint(1) unsigned | NO   |     | 0         |       |
| user_name    | varchar(255)        | NO   |     | NULL      |       |
| account_id   | bigint(20) unsigned | NO   |     | 0         |       |
| account_uuid | varchar(40)         | YES  |     | NULL      |       |
| account_name | varchar(100)        | YES  |     | NULL      |       |
| account_type | int(1) unsigned     | NO   |     | NULL      |       |
| domain_id    | bigint(20) unsigned | NO   |     | 0         |       |
| domain_uuid  | varchar(40)         | YES  |     | NULL      |       |
| domain_name  | varchar(255)        | YES  |     | NULL      |       |
| domain_path  | varchar(255)        | NO   |     | NULL      |       |
| project_id   | bigint(20) unsigned | YES  |     | 0         |       |
| project_uuid | varchar(40)         | YES  |     | NULL      |       |
| project_name | varchar(255)        | YES  |     | NULL      |       |
+--------------+---------------------+------+-----+-----------+-------+
24 rows in set (0.00 sec)

 

Currently the events logged in CloudStack doesn't give detailed information about the event that has occurred. The information provided in each event shown on the cloudstack ui doesn't provide specifics, particularly in case of errors. For example, the message shown on the cloudstack ui is just "Error while starting Vm. Vm Id: <id>" in case of failure to start a vm , which doesn't help much. Hence, the events should be enhanced to include more information to be descriptive enough.

Proposal

I would like to propose some changes to enhance the events to be more informative. Like:

  1. Instead of just showing resource database id in the event details it should display resource UUID. Since all the cloudstack apis take input as resource uuid it would be helpful to see the same on the ui as well.
  2. Enhance the events and listEvents API to include the resource UUID so that it can be queried by the resource UUID as well.
  3. Currently, the event description messages are specified in the *Cmd.java file instead, all of them should be externalize to a resource file. This would be helpful even for internationalization.
  4. Provide more detailed messages in case of error events. Messages such as "Error while starting VM" are generic to take any action.

...

-----+-----------+-------+
24 rows in set (0.00 sec)

 

Introduce resource UUID in event description

...