Monitoring Looker

Aunque la monitorización de la aplicación Looker no parezca estrictamente necesaria, es muy importante configurarla en las instancias alojadas por el cliente. En el caso poco probable de que algo vaya mal en tu servidor, a Looker le resultará mucho más difícil o imposible ayudarte a solucionar el problema a menos que puedas proporcionar la información de monitorización adecuada desde el momento del incidente.

Monitorización de aplicaciones

URL

Hay dos formas sencillas de comprobar que tu instancia de Looker está en funcionamiento.

  1. Añade /alive a la URL de tu instancia de Looker de esta forma:

    https://instance_name.looker.com/alive

    Si tu instancia puede responder a una solicitud web, recibirás un código de estado HTTP 200 OK.

  2. Añade /availability a la URL de tu instancia de Looker de esta forma:

    https://instance_name.looker.com/availability

    Esta URL realiza una comprobación más completa de varios subsistemas subyacentes y también responderá con un código de estado HTTP 200 OK si todo va bien.

JMX

La máquina virtual Java que ejecuta Looker se puede monitorizar mediante JMX.

Muchas aplicaciones de monitorización, como Zabbix y Nagios, admiten JMX. Para obtener más información, consulte la documentación de su aplicación de monitorización.

Editar la secuencia de comandos de inicio de Looker

Para habilitar la monitorización de JMX, tendrás que editar la secuencia de comandos de inicio de Looker. De forma predeterminada, se llama:

/home/looker/looker/looker

Busca los parámetros de inicio de Java:

java \
  -XX:+UseG1GC -XX:MaxGCPauseMillis=2000 \
  -Xms$JAVAMEM -Xmx$JAVAMEM \
  -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps \
  -Xloggc:/tmp/gc.log  ${JAVAARGS} \
  -jar looker.jar start ${LOOKERARGS}

Desde Looker 6.18, el archivo JAR de Looker se ha dividido en dos archivos JAR independientes: el archivo JAR principal de Looker y el archivo JAR de dependencias de Looker. Al iniciarse, el archivo JAR principal iniciará automáticamente el archivo JAR de dependencias. Ambos archivos JAR deben estar en el mismo directorio para que el archivo JAR principal pueda encontrar e iniciar correctamente el archivo JAR de dependencias.

De forma predeterminada, la --no-daemonise opción de inicio no está definida. Si no ha definido la opción --no-daemonise, añada una sección después de la línea que empieza por -Xms$JAVAMEM:

  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote \
  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote.port=9910 \
  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote.ssl=false \
  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote.local.only=false \
  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote.authenticate=true \
  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote.access.file=${HOME}/.lookerjmx/jmxremote.access \
  -Dcom.sun.akuma.jvmarg.com.sun.management.jmxremote.password.file=${HOME}/.lookerjmx/jmxremote.password \

Si has definido la --no-daemonise opción de inicio, añade una sección después de la línea que empieza por -Xms$JAVAMEM:

  -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.port=9910 \
  -Dcom.sun.management.jmxremote.ssl=false \
  -Dcom.sun.management.jmxremote.local.only=false \
  -Dcom.sun.management.jmxremote.authenticate=true \
  -Dcom.sun.management.jmxremote.access.file=${HOME}/.lookerjmx/jmxremote.access \
  -Dcom.sun.management.jmxremote.password.file=${HOME}/.lookerjmx/jmxremote.password \

Crea el directorio .lookerjmx.

A continuación, crea el directorio .lookerjmx en el directorio principal de tu usuario de Looker y define los permisos:

sudo su - looker
mkdir ~/.lookerjmx
chmod 700 ~/.lookerjmx
cd ~/.lookerjmx

Crear los archivos JMX

Con el editor de texto que prefieras, crea un archivo en el nuevo directorio llamado jmxremote.access con el siguiente contenido (puedes personalizarlo para tu entorno):

monitorRole   readonly
controlRole   readwrite \
              create javax.management.monitor.*,javax.management.timer.* \
              unregister

A continuación, crea un archivo llamado jmxremote.password en el mismo directorio con el siguiente contenido. Utiliza tus propias contraseñas seguras:

monitorRole   some_password_here
controlRole   some_password_here

Cómo configurar permisos

De esta forma, Java (y, por lo tanto, Looker) no se iniciará si los permisos del archivo permiten que cualquier usuario excepto el usuario de Looker lea el archivo de contraseñas.

chmod 400 jmxremote.*

Reiniciar Looker

Es necesario reiniciar Looker para habilitar JMX. Asegúrate de ejecutar este comando *como usuario de Looker y no como usuario raíz*:

cd ~/looker
./looker restart

Tu instancia de Looker ya está configurada para la monitorización remota de JMX en el puerto 9910 con la contraseña que has proporcionado. Es posible que tengas que modificar la configuración del cortafuegos o las ACLs de red para permitir que tu servidor de monitorización obtenga acceso a la red en este puerto.

Monitorización de hosts

En cada host que ejecute la aplicación Looker, le recomendamos que recoja, represente gráficamente y cree alertas sobre al menos las siguientes métricas de rendimiento:

  • Uso de CPU: carga y porcentaje de CPU utilizada.
  • Uso de memoria: memoria total usada y memoria de intercambio usada
  • Uso del disco

Umbrales de alerta

Para establecer umbrales de alerta adecuados, primero debes definir un valor de referencia. Recoge datos de rendimiento con tu instancia de Looker funcionando con una carga normal. Echa un vistazo a los gráficos de rendimiento y observa los picos. El tiempo que necesites para establecer las líneas de base dependerá de tu empresa y de tus patrones de uso de Looker. Algunas empresas pueden usar Looker de forma estable y repetible cada semana durante el horario de trabajo. Otros pueden usar Looker con más frecuencia en momentos concretos (por ejemplo, a final de mes).

Por lo general, las alertas solo deben enviarse para eventos en los que se puedan tomar medidas. Si se envían alertas cuando no hay nada que hacer, se oculta la importancia de las alertas críticas.

Los siguientes umbrales se pueden usar como punto de partida para las alertas. Si se superan los siguientes valores durante 15 minutos o más, es posible que se requiera una intervención manual.

Métrica Advertencia Crítica Comentarios
Carga de CPU 2 4 La carga suele ser de 1 o menos en los sistemas de un solo núcleo. Una carga alta y sostenida provoca un rendimiento deficiente.
CPU % usada 80 90 Un uso elevado de la CPU provoca un rendimiento deficiente.
% de memoria usada 60 70 Un uso elevado de la memoria puede indicar que se ha asignado demasiada memoria a Java.
% de disco usado 80 90 Asegúrate de que el disco no esté lleno.

Notas adicionales:

  • Los sistemas con más de un núcleo pueden gestionar cargas elevadas de CPU sin que se reduzca el rendimiento. Por lo general, la carga sostenida no debe ser superior al número de núcleos del procesador.
  • El porcentaje del tiempo total de CPU en uso antes de que el sistema experimente una degradación del rendimiento se escala en función del número de núcleos de CPU del sistema. Es decir, un sistema de un solo núcleo puede tener un rendimiento deficiente cuando la CPU se utiliza al 80 %, mientras que un host de 16 núcleos puede seguir siendo utilizable al 95 %.
  • El uso de CPU alto y sostenido se puede corregir actualizando el hardware del host o cambiando a una instancia más grande. A veces, se pueden reducir o hacer más eficientes grandes cantidades de Looks programados o tablas derivadas de consultas largas para mejorar el rendimiento.

Pasos siguientes

Una vez que hayas configurado la monitorización, podrás configurar copias de seguridad de Looker.