OSProfiler

Es una poderosa biblioteca que permite registrar todos los eventos generados por los servicios de OpenStack durante una petición web. Estos eventos pueden ser extraídos en una traza y ser mostrados en un reporte con formato json o html. Lo cual permite encontrar posibles retrasos en la respuesta de los servicios.

Para configurar e instalar sus dependencias en Devstack lo único necesario es  habilitar los siguientes plugins.
Nota: es necesario mantener el orden en el archivo local.conf, en caso contrario fallará el proceso de provisionamiento.

[[local|localrc]]
...
enable_plugin panko https://git.openstack.org/openstack/panko
enable_plugin ceilometer https://git.openstack.org/openstack/ceilometer
enable_plugin osprofiler https://git.openstack.org/openstack/osprofiler
...

Una vez que ./stack.sh haya terminado de provisionar el ambiente de desarrollo, notaremos que en los archivos de configuración de cada uno de los servicios tendrá una nueva sección llama profiler.

...
[profiler]
hmac_keys = SECRET_KEY
trace_sqlalchemy = True
enabled = True
...

En ella el valor asignado a hmac_keys sera la contraseña que nos permitirá activar la acumulación de eventos durante la petición web lanzada desde un cliente. Estos eventos serán recolectados por panko y ceilometer.

En el siguiente ejemplo, se creará una traza a partir de la llamada donde se enlistan los proyectos, cabe notar el uso del argumento –os-profile:

$ openstack project list --os-profile SECRET_KEY
+----------------------------------+--------------------+
| ID                               | Name               |
+----------------------------------+--------------------+
| 1957555a283947a9a8417091ed931f27 | invisible_to_admin |
| 217b12bf7a3d4a958821c4935c65fc6d | alt_demo           |
| 82ce0b2964004c2394e57e9d549bbfb4 | demo               |
| 971237716c31481f8002b0e2d9e80633 | service            |
| fddac1b83ed445eb9ef3c8d3eec23c84 | admin              |
+----------------------------------+--------------------+
Trace ID: ea8e0cf7-f795-4122-8bfc-f67986d9eb75
Display trace with command:
osprofiler trace show --html ea8e0cf7-f795-4122-8bfc-f67986d9eb75 

Nota: En caso de no utilizar panko como servicio de Backend para Ceilometer es necesario especificar la cadena de conexión.

$ openstack project list --os-profile SECRET_KEY --connection-string mongodb://localhost:27017/ceilometer

Por ultimo, y como el comando lo sugiere, para poder visualizar la traza creada es necesario utilizar el cliente de osprofiler, el cual nos generará un reporte.

$ osprofiler trace show --html ea8e0cf7-f795-4122-8bfc-f67986d9eb75 > /var/www/html/index.html