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
osystem
), un término común y estándar de una fuente fiable (comoschema.org
,IANA
omicroformatos
), 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
omicroformatos
), 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.