Métricas de Plataforma

Introducción

La plataforma gestiona métricas, que permiten conocer como se ha utilizado esta en cada intervalo de tiempo. Para ello, las estadísticas de utilización medidas se almacenan en diferentes ontologías de tipo TimeSeries, agrupando dichas métricas en 3 ventanas temporales:

  • Horaria con agrupación minutal: Se genera para cada hora un registro con las métricas desglosadas en minutos. Es la ventana adecuada para ver la evolución minuto a minuto.

  • Diaria con agrupación horaria: Se genera para cada día un registro con las métricas desglosadas en horas. Es la ventana adecuada para ver la evolución hora a hora.

  • Mensual con agrupación diaria: Se genera para cada mes un registro con las métricas desglosadas en días. Es la ventana adecuada para ver la evolución día a día.

Catálogo de Métricas

Las métricas que ofrece son:

  • Métricas de utilización de ontologías: Cada operación sobre una ontología se audita de forma que se registra:

    • Nombre de ontología.

    • Usuario.

    • Tipo de operación (JOIN, LEAVE, INSERT, UPDATE, QUERY, DELETE).

    • Resultado (OK, KO).

    • Origen (IoT Broker, Api Manager, Control Panel).

 

  • Métricas de operación de Digital Broker y Api Manager: Cada operación sobre una ontología se audita de forma que se registra:

    • Usuario.

    • Tipo de operación (JOIN, LEAVE, INSERT, UPDATE, QUERY, DELETE).

    • Resultado (OK, KO).

    • Origen (IoT Broker, Api Manager, Control Panel).

 

  • Métricas de utilización de APIS: Cada operación sobre un API se audita de forma que se registra:

    • Nombre del API.

    • Código HTTP del resultado.

    • Usuario invocador.

    • Tipo de operación.

 

  • Métricas de elementos creados en la plataforma:

    • Autenticaciones e intentos de autenticación sobre el panel de control.

    • Alta de elementos:

      • Ontologias.

      • Usuarios.

      • APIs.

      • Dashboards.

      • Digital Clients.

      • Notebooks.

      • Dataflows.

      • Proyectos.

      • Flujos.

      • Visores GIS.

    • Consultas en el Query Tool.

Almacenamiento de Métricas

Las ontologías TimeSeries que almacenan las métricas son:

  • MetricsOntology: Metricas de utilización de ontologías, con la siguiente estructura:

  • MetricsOperation: Métricas de operación del Digital Broker y API Manager:

  • MetricsApi: Métricas de operación sobre las APIs del API Manager:

  • MetricsControlPanel: Métricas de elementos creados en la plataforma:

  • MetricsQueriesControlPanel: Métricas de consultas realizadas desde la herramienta QueryTool:

            

Consulta sobre las Métricas

Para facilitar la consulta de métricas se ha adaptado el lenguaje SQL para las ontologías anteriores:

  • Proyección de la sentencia: Admite dos posibles valores:

    • Select * Devuelve los valores en forma de serie temporal.

    • Select count(*) Devuelve el número de ocurrencias en el interval seleccionado.

 

  • Selección de la sentencia:

    • Necesita especificar siempre una ventana temporal sobre la que se realiza la consulta, sobre el atributo TimeSerie.windowType:

      • TimeSerie.windowType = ‘HOURS’ | ‘DAYS’ | ‘MONTHS’

    • Necesita especificar un intervalo temporal con una clausula sobre TimeSerie.timestamp en formato yyyy-MM-dd'T'HH:mm:ss.000'Z'. Dependiendo de la ventana, la clausula de consulta TimeSerie.timestamp tomará el siguiente formato:

      • HOURS: 'yyyy-MM-ddTHH:00:00.000Z’. Hora concreta sin precisión de minutos.

      • DAYS: 'yyyy-MM-ddT00:00:00.000Z’. Día concreto sin precisión de horas.

      • MONTH: 'yyyy-MM-01T00:00:00.000Z’. Primer dia del mes sin precisión de horas.

    • Opcionalmente los atributos sobre los que realiza la consulta.

 

Además se proporciona una respuesta procesada para facilitar su interpretación, como un array de objetos, valor-timestamp:

Ejemplos de consulta sobre las métricas

Todas las invocaciones a APIs en un intervalo de tiempo:

SELECT * FROM MetricsApi  where TimeSerie.windowType='HOURS' and TimeSerie.timestamp >= '2019-08-16T10:00:00.000Z' and TimeSerie.timestamp < '2019-08-16T12:00:00.000Z'

Filtrando por usuario:

SELECT * FROM MetricsApi  where TimeSerie.windowType='HOURS' and TimeSerie.timestamp >= '2019-08-16T10:00:00.000Z' and TimeSerie.timestamp < '2019-08-16T12:00:00.000Z' and TimeSerie.user = ‘administrator’ 

Filtrando por usuario y api:

SELECT * FROM MetricsApi  where TimeSerie.windowType='HOURS' and TimeSerie.timestamp >= '2019-08-16T10:00:00.000Z' and TimeSerie.timestamp < '2019-08-16T12:00:00.000Z' and TimeSerie.user='administrator' and TimeSerie.api='TickeApi'