Saltar a contenido

Health

Descripción

Este endpoint muestra el estado de los subcomponentes internos del Driver MQTT.

Se debe consultar cuando se quiere saber si todos los componentes y subcomponentes del Driver MQTT funcionan correctamente.

Mediante a variable CONFIG_HEALTH_MAX_NOTES_SIZE, cuyo valor por defecto es 20, es posible configurar el tamaño de la lista de "notas" que se muestran en este apartado.

Las notas muestran los diferentes pasos en las secuencias de actualización de alarmas y dispositivos cuando estas actualizaciones son solicitadas de forma externa, esto es, mediante otros componentes de NetinDS o peticiones OpenC2 externas.

Podemos encontrarlo en la ruta <ip>:<mqtt_port>/v1/health.

Visualización

Al realizarse una petición GET al endpoint nos devuelve la siguiente respuesta en formato JSON.

{
    "status": "pass",
    "version": "1",
    "releaseID": "1.2.0",
    "notes": [],
    "output": "",
    "serviceID": "e7853c18-e901-4a09-81d2-8e87e981e45a",
    "description": "DriverAPI Health for netin-ds-drv-mqtt",
    "links": {
        "about": "https://docs.netin.io"
    },
    "details": {
        "addressesLegacy:connectionState": [
            {
                "status": "pass",
                "componentId": "09f2c70d-7b16-411d-8560-8f26db35ce82",
                "componentType": "datastore",
                "metricValue": "running",
                "time": "2022-07-21T12:21:55.171Z"
            }
        ],
        "redis:connectionState": [
            {
                "status": "pass",
                "componentId": "b6929fbe-77b1-4cef-be28-091c19e9c209",
                "componentType": "datastore",
                "metricValue": "running",
                "time": "2022-07-21T12:21:55.466Z"
            }
        ],
        "config:state": [
            {
                "status": "pass",
                "componentId": "123de0c7-7c22-4858-a632-5e4219db11a3",
                "componentType": "component",
                "metricValue": "running",
                "time": "2022-07-21T12:21:54.942Z"
            }
        ],
        "curator:component": [
            {
                "status": "pass",
                "componentId": "f47611db-fec9-4623-8536-e9ba19f13e63",
                "componentType": "component",
                "metricValue": "0/200",
                "metricUnit": "jobs",
                "time": "2022-07-21T12:40:15.143Z"
            }
        ],
        "publisher:component": [
            {
                "status": "pass",
                "componentId": "c86fb970-4b85-43d8-bd34-a748988b74b1",
                "componentType": "component",
                "metricValue": "0/100",
                "metricUnit": "jobs",
                "time": "2022-07-21T12:40:15.143Z"
            }
        ],
        "netin-ds-drv-mqtt:external": [],
        "uptime": [
            {
                "componentId": "netin-ds-drv-mqtt",
                "componentType": "system",
                "metricValue": 1111.651238203,
                "metricUnit": "s",
                "status": "pass",
                "time": "2022-07-21T12:40:15.144Z"
            }
        ]
    }
}

Listado de campos

  • status(string): Indica el estado del servicio, y si es aceptable o no. Puede tener los valores pass, fail o warn. Se considera un estado aceptable, si es de tipo pass, y no aceptable si es de tipo warn o fail.

  • version(string): Indica la versión pública del servicio.

  • releaseID(string): Indica el identificador de implementación del servicio. Suele ser distinto al valor de la versión pública.

  • notes(Array): Es una lista de notas que son relevantes para el estado de salud actual del servicio.

  • output(string): En caso de que el status tenga los valores warn o fail, indica la salida del error producido sin procesar. Este campo debe ser omitido en caso de que el status tenga el valor pass.

  • serviceID(string): Indica el identificador único del servicio.

  • description(string): Indica una breve descripción del servicio.

  • links(Array): Posee enlaces los cuales pueden proveer información adicional acerca de la salud del endpoint. Podría contener algunos de los siguientes campos:

    • about(string): Provee un enlace con información más detallada sobre el componente.
    • self(string): Provee un enlace con información sobre el componente.
    • related(string): Provee un enlace con información relacionada con el componente.
  • details: Es un objeto que almacena los estados de los subcomponentes del servicio. Los subcomponentes pueden ser los siguientes:

    • addressesLegacy: Indica el estado de las conexiones de MongoDB que se encargan de obtener las configuraciones de los datapoints, para realizar las transformaciones que sean necesarias.

    • redis(Object): Indica el estado de las conexiones de Redis que se encargan de almacenar los datapoints transformados para enviarlos a MQTT. C

    • config(Object): Indica el estado del componente de configuración, con el podremos saber si se está obteniendo y utilizando de manera satisfactoria.

    • curator(Object): Se refiere al componente que ejecuta los trabajos, antes de enviar los datos a MQTT. Estos datos se almacenan en un stream de NodeJS en esta parte.

    • publisher(Object): Se refiere al componente que publica los datos transformasdos a MQTT. Estos datos se almacenan en un stream de NodeJS en esta parte.

    • uptime(Array): Indica la duración de tiempo en segundos desde cuando el servicio se encuentra activo hasta el momento en el que se realiza la consulta.

    • netin-ds-drv-mqtt:external(Array): Muestra un conjunto de las conexiones con servicios externos del driver de MQTT, en este caso se trata de los robots que tiene configurado para poder conectarse e ingerir datos.

Estos poseen los siguientes campos:

  • status(string): Indica el estado del subcomponente, y si es aceptable o no. Puede tener los valores pass, fail o warn. Se considera un estado aceptable, si es de tipo pass, y no aceptable si es de tipo warn o fail.

  • componentId(string): Indica el identificador único del subcomponente/dependencia del servicio. Pueden aparecer múltiples objetos con el mismo componentId si son de distintos nodos.

  • componentType(string): Indica el tipo de componente. Este puede ser un valor predefinido (entre los que se incluye component,datastore o system), un término común y estándar de una fuente fiable (como schema.org, IANA o microformatos), o una URI que indique reglas de procesamiento y semánticas adicionales, que pueden ser provistas por un recurso al otro lado del URI

  • metricvalue(any): Puede contener cualquier valor. En el caso de que la unidad de métrica esté presente, indicará su valor para el componente. En cualquier otro caso, dará información sobre su estado.

  • metricUnit(string): Indica la unidad de métrica, y debe estar presente, en caso de que metricValue esté presente. Puede ser un término común y estándar de una fuente fiable (como schema.org, IANA o microformatos), o una URI que indique reglas de procesamiento y semánticas adicionales, que pueden ser provistas por un recurso al otro lado del URI.

  • output(Array): En caso de que el status tenga los valores warn o fail, indica la salida de los errores producidos sin procesar. Este campo debe ser omitido en caso de que el status tenga el valor pass.

  • time(string): Indica la fecha y hora, en formato ISO8601, del momento que se guardó metricValue.

  • También puede tener, adicionalmente, otras propiedades deseadas, las cuales tienen el siguiente formato: [x: string]: any;

Por ejemplo en el caso de los componentes externos del driver de MQTT se presentan 3 propiedades adicionale:

  • version(number): Indica la versión del cliente de la conexión.

  • address(string): Indica el host o la IP del dispositivo del cual se consumen los datos.

  • clientId(string): Identificador único del cliente al que se conecta el driver para extraer los datos.

Excepto componentId y status, todas las demás propiedades son opcionales.