Mistral workflow VIM monitoring

Mistral workflow VIM monitoring

For the purpose to make apmec server scale, the mistral workflow is used to re-implement the VIM monitoring feature.

The main monitoring process is like this:

  • user registers a VIM
  • apmec server saves it into database
  • apmec server generates a mistral workflow and executes it
  • the VIM monitor mistral action is executed and do the monitoring, if there is status change, it will RPC call conductor
  • the conductor changes the VIM status

Feature exploration

Firstly register a VIM:

$ apmec vim-register --config-file ~/testvim_config.yaml testvim2 -c id -c name -c status
Created a new vim:
+--------+--------------------------------------+
| Field  | Value                                |
+--------+--------------------------------------+
| id     | 4406cf8f-f2af-46cc-bfb9-e00add5805b7 |
| name   | testvim2                             |
| status | PENDING                              |
+--------+--------------------------------------+

The registered VIM’s id is ‘4406cf8f-f2af-46cc-bfb9-e00add5805b7’, after this, there is a mistral workflow named as ‘vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7’, is generated in mistral:

$ mistral workflow-list --filter name=vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7 -c ID -c Name
+--------------------------------------+---------------------------------------------+
| ID                                   | Name                                        |
+--------------------------------------+---------------------------------------------+
| 0cd0deff-6132-4ee2-a181-1c877cd594cc | vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7 |
+--------------------------------------+---------------------------------------------+

and it is executed:

$ mistral execution-list --filter workflow_name=vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7 -c ID -c 'Workflow name' -c State
+--------------------------------------+---------------------------------------------+---------+
| ID                                   | Workflow name                               | State   |
+--------------------------------------+---------------------------------------------+---------+
| 99ced0e2-be09-4219-ab94-299df8ee8789 | vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7 | RUNNING |
+--------------------------------------+---------------------------------------------+---------+

The monitoring task is running too:

$ mistral task-list --filter workflow_name=vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7 -c ID -c 'Workflow name' -c Name  -c State
+--------------------------------------+-----------------------------+---------------------------------------------+---------+
| ID                                   | Name                        | Workflow name                               | State   |
+--------------------------------------+-----------------------------+---------------------------------------------+---------+
| f2fe2904-6ff2-4531-9bd0-4c998ef1515f | monitor_ping_vimPingVIMTASK | vim_id_4406cf8f-f2af-46cc-bfb9-e00add5805b7 | RUNNING |
+--------------------------------------+-----------------------------+---------------------------------------------+---------+

Of course, the VIM’s state is in ‘REACHABLE’ status:

$ apmec vim-list --name testvim2 -c id -c name -c status
+--------------------------------------+----------+-----------+
| id                                   | name     | status    |
+--------------------------------------+----------+-----------+
| 4406cf8f-f2af-46cc-bfb9-e00add5805b7 | testvim2 | REACHABLE |
+--------------------------------------+----------+-----------+

The deletion of VIM will lead to removal of all of these mistral resources.

Rabbitmq queues

Each mistral VIM monitoring action is listening on three queues:

~/apmec$ sudo rabbitmqctl list_queues | grep -i KILL_ACTION
KILL_ACTION    0
KILL_ACTION.4406cf8f-f2af-46cc-bfb9-e00add5805b7    0
KILL_ACTION_fanout_a8118e2e18b9443986a1b37f7b082ab9    0

But only KILL_ACTION with VIM id as suffix is used.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.