Usando New Relic para monitorear tus servidores

Una aplicación en ejecución no es solo un montón de código, el código también tiene que ejecutarse en algún lugar. Estoy hablando de sus servidores de producción. Es tan importante asegurarse de que sus cajas de producción se comporten como lo son para asegurarse de que el código de su aplicación sea eficaz. Puede configurar sistemas como Nagios para que lo ayuden con esto, pero estos pueden ser extremadamente complejos para trabajar, requieren una infraestructura propia significativa y pueden ser excesivos (a menos que sus necesidades de infraestructura sean extremadamente complejas). New Relic ofrece una alternativa menos completa pero muy simple cuando se trata de monitoreo de infraestructura.

Si has leído algunos de nuestros artículos anteriores sobre New Relic, deberías estar en casa con el funcionamiento de los paneles de control de New Relic. Los tableros de control del servidor utilizan los mismos conceptos. Si ya está utilizando New Relic, puede comenzar a recibir datos sobre el rendimiento de su servidor muy rápidamente. Incluso si no ha configurado New Relic anteriormente, puede valer la pena usarlo solo para el monitoreo del servidor. Los más o menos seis tableros que proporciona New Relic pueden retrasar (o incluso eliminar por completo) la necesidad de una solución de monitoreo de infraestructura con todas las funciones.

¿Por qué necesito un servicio para controlar las cajas en todo?

Dependiendo de las necesidades de su aplicación, puede tener un componente web, base de datos, caché, búsqueda, equilibrador de carga, etc. Algunos de estos pueden compartir el mismo cuadro. Pero, una vez que su aplicación supere un cierto tamaño, comenzará a colocar algunos de estos en sus propias cajas. Cuando solo tienes un servidor de producción las cosas son fáciles. Usted SSH en ese cuadro, ejecute algunos comandos de shell y obtenga una idea bastante buena con respecto a la salud de ese servidor. A medida que crece el número de cajas, esto puede convertirse en una tarea un tanto difícil. Sería útil si pudiera tener una manera de conocer la salud de todas sus cajas a la vez. Este es exactamente el problema que resuelven los paneles de control del servidor New Relic. Obtendrá una instantánea de la salud de todos sus servidores de producción a la vez..

Por supuesto, la comprobación manual del estado de todos sus servidores no es lo más eficiente. Cuando las cosas van mal, desea saberlo tan pronto como suceda, no la próxima vez que decida verificar. La mayoría de los sistemas de monitoreo de infraestructura tienen una forma de enviar alertas cuando fallan partes específicas de los servidores monitoreados (por ejemplo, disco lleno, usando demasiada RAM, etc.). Nueva reliquia no es diferente. Puede utilizar la infraestructura de políticas de alertas muy flexible para enviar notificaciones de fallos de la forma que desee, como correo electrónico, enlaces web, etc..

Por último, los problemas de infraestructura a menudo no aparecen de repente, el contexto histórico es importante. La RAM se consumirá lentamente durante horas antes de que la caja comience a fallar, el disco se llenará durante días antes de que las cosas lleguen a un punto crítico. La comprobación puntual de sus servidores no le brinda el contexto histórico que necesita para evitar que ocurran los problemas. Si simplemente verifica el uso del disco cuando se llena un poco, puede hacer algo al respecto. Si no, solo aprendes sobre el problema cuando mueren tus cajas. New Relic recopila datos y los envía a sus servidores todo el tiempo, por lo que los paneles de control se basan en el contexto histórico. Esto hace que sea muy fácil prevenir ciertas clases de problemas.

Funciona en la vida real

Déjame contarte un par de historias. Usamos New Relic en Tuts + tanto para la supervisión del rendimiento de las aplicaciones como para la supervisión del servidor. Hace unos meses estaba de guardia, cuando nuestras cajas empezaron a comportarse mal cada pocos minutos. No se estaban cayendo del todo, pero la aplicación funcionaría muy mal durante cortos períodos de tiempo. Me conecté a las cajas y encontré que el uso de memoria era muy alto. Así que reinicié los servidores uno por uno y las cosas parecieron estar bien por un tiempo. Pero unas horas después todo volvió a suceder. Esto olía como una pérdida de memoria.. 

Así que inicié sesión en New Relic para echar un vistazo a los gráficos. Efectivamente, uno de los despliegues que hicimos anteriormente había introducido una pérdida de memoria en la aplicación. Tomaría algunas horas para que toda la memoria se consumiera por la aplicación, momento en el que entraría en un frenesí desesperado de recolección de basura, causando todo tipo de problemas divertidos. Mirando los gráficos de memoria en todas las cajas, fue inmediatamente obvio lo que estaba sucediendo. En ese momento no teníamos ninguna alerta configurada (lo tenemos ahora), por lo que no nos dimos cuenta del problema hasta que se manifestaron otros problemas. Pero, al poder comparar todas las cajas entre sí, además de tener el contexto histórico, me permite diagnosticar fácilmente el problema, implementar una solución y dormir a tiempo esa noche..

Aquí hay otro. Recientemente se produjo un corte en el centro de datos de AWS donde se aloja Tuts +. Cuando las cosas finalmente se calmaron, reiniciamos todas las casillas para asegurarnos de que no hubiera problemas. Pero cuando las cajas volvían, la aplicación devolvía intermitentemente 500 respuestas o tenía un desempeño muy pobre en algunas ocasiones. Probablemente fue un problema con uno o más de los servidores, lo que es muy molesto de diagnosticar cuando tienes muchos cuadros. Una vez más, ver New Relic nos permitió sacar a la luz el problema muy rápidamente. Una de nuestras cajas regresó con un proceso deshonesto que consumía una gran cantidad de CPU, lo que provocó que la aplicación en esa caja funcionara mal. Otra caja se vio afectada por algún tipo de error de AWS que hizo que la utilización de la E / S en el disco de esa caja fuera del 100%. Sacamos esa caja de nuestro equilibrador de carga, nos deshicimos del proceso deshonesto en el otro y la aplicación comenzó a funcionar bien otra vez..

Los gráficos que proporciona New Relic son realmente útiles y no querría prescindir de ellos, así que permítame mostrarle cómo hacer que el monitoreo del servidor esté en funcionamiento..

Instalación del nuevo Agente de Monitoreo del Servidor Relic

Básicamente, todo se reduce a iniciar sesión en su servidor e instalar el demonio de monitoreo del servidor New Relic (Nrsysmond). Si ha leído el artículo de New Relic for PHP, el procedimiento es casi idéntico. Como de costumbre, asumamos que estamos en Ubuntu. 

Lo primero que debe hacer es importar la clave del repositorio de New Relic:

wget -O - https://download.newrelic.com/548C16BF.gpg | Sudo apt-key add -

Ahora agregamos el repositorio de New Relic al sistema: 

sudo sh -c 'echo "deb http://apt.newrelic.com/debian/ newrelic non-free"> /etc/apt/sources.list.d/newrelic.list'

Ahora solo usamos apto:

sudo apt-get update sudo apt-get install newrelic-sysmond

Una vez que haya finalizado la instalación, recibirás un bonito mensaje como este:

*************************************************** ******************* ******************************* ************************************** *** *** No se puede iniciar la Nueva Reliquia Server Monitor hasta que inserte una clave de licencia válida *** en el siguiente archivo: *** *** /etc/newrelic/nrsysmond.cfg *** *** Puede hacer esto ejecutando el siguiente comando como root: * ** *** nrsysmond-config --set license_key = *** *** No se reportarán datos hasta que el monitor del servidor pueda iniciarse. *** Puede obtener su clave de New Relic en la sección 'Configuración' *** del menú 'Soporte' de su cuenta de New Relic (accesible en *** https://rpm.newrelic.com). *** *********************************************** ********************** **************************** *****************************************

Hagamos lo que dice. Primero, saltemos a la configuración de nuestra cuenta de New Relic para buscar nuestra clave de licencia (estará a la derecha):

Ahora vamos a ejecutar el comando:

nrsysmond-config --set license_key =

Si revisa el archivo de configuración ahora: /etc/newrelic/nrsysmond.cfg. Verás tu clave de licencia allí. Estamos listos para iniciar el agente:

/etc/init.d/newrelic-sysmond start

Ahora puede revisar su lista de procesos para asegurarse de que se está ejecutando:

ps -ef | grep nrsys newrelic 10087 1 0 09:25? 00:00:00 / usr / sbin / nrsysmond -c /etc/newrelic/nrsysmond.cfg -p /var/run/newrelic/nrsysmond.pid newrelic 10089 10087 0 09:25? 00:00:00 / usr / sbin / nrsysmond -c /etc/newrelic/nrsysmond.cfg -p /var/run/newrelic/nrsysmond.pid ubuntu 10100 9734 0 09:25 pts / 1 00:00:00 grep - -color = auto nrsys

Según el agente de PHP, hay dos procesos. Uno es un proceso de monitoreo y el segundo es el trabajador. El trabajador realmente hace el trabajo de comunicarse con los servidores de New Relic, el proceso de monitoreo simplemente vigila al trabajador y si el trabajador muere, por cualquier razón, generará uno nuevo..

También podemos revisar los registros para asegurarnos de que no haya errores en el inicio:

cat /var/log/newrelic/nrsysmond.log 2014-05-25 09:25:02 [10089 / main] siempre: New Relic Server Monitor versión 1.4.0.471/C+IA comenzado - pid = 10089 background = true SSL = true ca_bundle = ca_path = host = ip-10-196-10-195 2014-05-25 09:25:03 [10089 / main] información: redirección de RPM: recopilador-102.newrelic.com (50.31.164.202) puerto 0 (0 significa puerto predeterminado )

Todo se ve bien, y ahora debería comenzar a ver los datos aparecer en la interfaz de usuario de New Relic.

Configurando el Agente de Monitoreo del Servidor

La mayoría de las veces no necesitará configurar nada más que la clave de licencia, pero si necesita aumentar el nivel de registro o configurar un proxy, es definitivamente posible. Todo vive en /etc/newrelic/nrsysmond.cfg. El archivo está muy bien comentado y es bastante explicativo. Si cambia algo, recuerde reiniciar el demonio

/etc/init.d/newrelic-sysmond restart

Solo hay una cosa sutil cuando se trata de configurar la supervisión del servidor y ese es el nombre del servidor, como se verá en los paneles de control de New Relic. Por defecto, New Relic tomará el nombre de host de la caja y hará que el nombre del servidor en los paneles de control (es decir, la salida del nombre de host mando). Te recomiendo que lo guardes de esta manera. Si también está utilizando New Relic para el monitoreo de aplicaciones, mantenga el nombre de host, como lo muestra el nombre de host comando, ya que el nombre del servidor asegurará que New Relic pueda averiguar correctamente qué aplicaciones se están ejecutando en qué cajas y vincular todo correctamente en la interfaz de usuario.

Si realmente tiene que hacerlo, puede cambiar el nombre del servidor como aparecerá en la interfaz de usuario configurando nombre de host = parámetro en el archivo de configuración: /etc/newrelic/nrsysmond.cfg. Deberá reiniciar el demonio para que esto tenga efecto. También puede modificar el nombre del servidor directamente en la interfaz de usuario, lo que no afectará al demonio..

Uso de los paneles de monitoreo del servidor

Lo primero que ves cuando haces clic en el Servidores El enlace a la izquierda es una instantánea de todos sus servidores y las métricas clave de todos ellos (CPU, Disco, Memoria, IO).. 

Esta página puede permitirle ver si uno o más de sus cuadros obviamente se están portando mal. Aquí también puede cambiar el nombre de un servidor o agregarle etiquetas, si es necesario.

Si hacemos clic en uno de los servidores, llegamos al panel principal del servidor:

Hay seis métricas principales aquí:

  • uso de CPU
  • Uso de memoria
  • Utilización de disco IO
  • Red IO
  • Promedio de carga
  • Lista de procesos

Esto le dará una visión general rápida de un servidor en particular. Puede profundizar en cada uno de los gráficos para obtener más información. Por ejemplo, puede profundizar en el gráfico de la CPU para ver qué procesos están usando la CPU:

O puede profundizar en el gráfico del disco para ver su tasa de IO, un desglose de las lecturas y escrituras, así como obtener una estimación de cuánto tiempo pasará antes de que su disco esté lleno..

La mejor parte es que puede usar las mismas operaciones en todos estos gráficos que en los gráficos de nivel de aplicación. Por lo tanto, puede acercarse a una ventana de cinco minutos para observar más de cerca el uso de la CPU, o puede observar una tendencia de siete días en el uso de la memoria.. 

La mejor parte es que los gráficos son fáciles de entender, no está abrumado por las métricas y puede comparar cuadros similares entre sí. Esto puede ayudarlo a diagnosticar el 99% de los problemas comunes que probablemente encuentre con su infraestructura.

Configuración de alertas de supervisión del servidor

New Relic ha realizado mucho trabajo recientemente para mejorar sus capacidades de alerta. Las políticas de alerta es lo que han creado en todo su sistema (por ejemplo, hay políticas de alerta de aplicación para las políticas de alerta de aplicación y servidor para casillas). Puede ser un poco confuso al principio, pero es bastante simple una vez que aprendes a hacerlo. Hay dos conceptos principales, políticas y canales. En términos de alertas de servidor, funciona así: 

Establecemos una política y le asignamos algunos servidores:

También creas un canal (por ejemplo, correo electrónico, webhook) al que se pueden enviar las alertas:

A continuación, asigna un canal a una política. A partir de ese momento, dependiendo de la configuración del canal (por ejemplo, primer evento crítico, todos los eventos críticos, solo tiempo de inactividad). Recibirás notificaciones en ese canal..

Lo único confuso acerca de las políticas de alerta es dónde encontrarlas. Viven bajo Herramientas-> Políticas de alerta:

A continuación, debe hacer clic en Servidores en el menú en la parte superior, para encontrar las políticas de alerta del servidor.

Conclusión

Si ya está utilizando una solución de monitoreo de infraestructura como Nagios y está funcionando bien para usted, entonces es posible que no obtenga mucho más del monitoreo del servidor New Relic (aunque los gráficos y las tendencias históricas son bastante excelentes). Sin embargo, si no está supervisando su infraestructura en absoluto o si su solución actual no está funcionando para usted, definitivamente pruebe New Relic. Para mí, se ha convertido en la primera herramienta que utilizo cuando sospecho que algo anda mal con mis servidores. Y a menudo, me hará saber que se están gestando problemas antes de que la situación se vuelva crítica. Como desarrolladores, ese es el tipo de herramientas que todos queremos en nuestro arsenal.