Decidí compartir mi historia. Quizás incluso alguien encuentre útil esta solución de presupuesto para un problema conocido.
Cuando era joven y ardiente y no sabía dónde poner mi energía, decidí trabajar un poco por mi cuenta. Logré obtener rápidamente una calificación y encontré un par de clientes habituales que me pidieron que mantuviera su servidor de forma continua.
Lo primero que pensé fue en la necesidad de monitoreo. Decidí hacerlo como personas inteligentes, no para reinventar la rueda, sino para mirar opciones ya hechas, como Munin o Zabbix. Pero se descubrió de inmediato que la versión web requiere una buena conexión a Internet, especialmente si la abre por primera vez desde su teléfono. Si te relajas en la naturaleza lejos de la ciudad, es difícil obtener una conexión estable. Por lo tanto, se eligió una opción de monitoreo de consola.
Encima y encima del lector de registros atopsar me ayudaron mucho como monitor de consola. Ya se mencionaron en habr,
encima incluso se desmontaron , pero casi nada se dijo sobre atopsar.
Instalación
Instalación muy simple, solo tres equipos.
#Centos
yum install atop
# Debian / Ubuntu
apt-get install atop
A continuación, puede configurar la operación de monitoreo por sí mismo o usar la configuración predeterminada.
# Debian / Ubuntu / Centos
/etc/default/atop
Archivo estándar:
#cat /etc/default/atop INTERVAL=60 #, , 10 LOGPATH="/var/log/atop" # OUTFILE="$LOGPATH/daily.log" #
Agregar a ejecución automática
# Debian / Ubuntu / Centos
systemctl enable atop
Corre como un demonio
# Debian / Ubuntu / Centos
systemctl start atop
Para perezosos reunidos en un equipo
#Centos
yum install atop && systemctl enable atop && systemctl start atop
# Debian / Ubuntu
apt-get install atop && systemctl enable atop && systemctl start atop
Atopsar
Junto con la parte superior, también se instala atopsar, que es un conveniente analizador de consola de registros binarios que ejecuta el demonio superior. Por supuesto, puede leer los registros encima de sí mismo, pero esto no es tan conveniente si desea capturar un gran intervalo de tiempo.
Un pequeño programa educativo sobre el trabajo de atopsar.
Cuando atopsar comienza sin claves, abre el registro de hoy y muestra la carga en cada núcleo individualmente y la cadena idl para todos los núcleos.
Las teclas que uso son:
-A = imprimir toda la información del registro
-c = muestra información sobre la carga en los núcleos del procesador, la clave predeterminada
-m = RAM y carga de intercambio
-d = actividad del disco
-O = los 3 principales procesos de carga de CPU
-G = los 3 principales procesos de carga de RAM
-D = los 3 principales procesos de carga de disco
-N = los 3 principales procesos de carga de red
-r = especifique la ruta al registro que desea leer, si necesita ver la carga de los últimos días
-b = hora de inicio de salida
-e = tiempo para terminar la salida
-M = crea una columna adicional al final, en la que se marca la criticidad de la fila (+ hay una carga, * - carga crítica)
Gracias a la supervisión, podemos entender la causa del comportamiento incorrecto del servidor en cualquier momento.
Notificaciones
Por lo tanto, hay un monitoreo de la carga, pero aún no permite encontrar y resolver problemas rápidamente. Necesitamos notificaciones sobre el problema.
Soy el único que sigue a los servidores, por lo que debo notificar dónde siempre puedo verlo y al menos reaccionar de alguna manera.
Al principio había SMS: rápido, confiable y gratuito. Pero luego, los operadores móviles cubrieron una distribución gratuita de SMS a través de sus puertas de enlace.
Correo: durante mucho tiempo, puede haber problemas con la entrega.
Mensajeros: deben ponerse en el teléfono, debe crear bots.
Como resultado de la búsqueda, el mensajero de Telegram fue seleccionado por su simplicidad y aplicación conveniente en el teléfono y el escritorio.
Creó su bot usando el
botfather .
Después de poner varios scripts en el servidor que rastrean la carga en el servidor (IDL, smartct, etc.), la presencia de errores como "oom killer", errores al crear una copia de seguridad y otras operaciones que deben controlarse.
Los scripts son bastante simples escritos en bash, por ejemplo, verificando LA y notificando que Load Averadge ha excedido el número de núcleos en el servidor.
if [ ${LA[0]} -gt 2000 ] || [ ${LA[1]} -gt 3000 ] || [ ${LA[2]} -gt 4000 ] then wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text= $ip LA $LAd" wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text=`top -b -n 1 | grep Cpu`" wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text= 5 `top -b -n 1 | grep -A 5 'PID USER' | tail -5`" fi
La simplicidad de la sintaxis ofrece muchos casos de uso (y cualquiera que sepa al menos un poco de lenguaje de programación puede escribir / agregar).
La única advertencia: si el servidor está ubicado en Rusia (y no tiene IPv6 en el servidor), entonces debe usar un proxy. Para hacer esto, al comienzo del script, debe registrar la cadena de conexión al proxy:
export https_proxy=http://:@IP.:
Este no es el final
Camina tranquilamente a través de las montañas con una mochila detrás de usted, toma un descanso de la civilización y luego el teléfono, al capturar accidentalmente la conexión, envía una notificación sobre un problema que ha surgido en su servidor. Que hacer Un ambiente sereno fue arrastrado por el viento. ¿Llamar a mi esposa y dictar órdenes? Jaja
Era urgente encontrar alguna forma de resolver los problemas rápidamente y sin la disponibilidad de un buen Internet. Aquí fui nuevamente salvado por el mensajero (# telegrammivi). Le enseñé a mi bot a comunicarse solo conmigo, ignorando a todos los demás. Ahora, junto con la notificación del problema, obtengo un poco más de datos, según los cuales entiendo quién es el origen del problema, y puedo tratar de resolverlo de forma remota. Es suficiente con escribir un mensaje al bot, lanzar el teléfono más alto para que este mensaje desaparezca y listo, el bot fue a hacer su trabajo. Por lo tanto, puedo, por ejemplo, matar algunos procesos no deseados, reiniciar el demonio, bloquear la IP, etc.
Aquí también transferí futuras solicitudes necesarias de clientes, por ejemplo, restablecimiento urgente de contraseñas a usuarios (porque "¡Ahhh, no podemos acceder al servidor, perdemos millones!"), Busque un usuario que tenga acceso a la carpeta deseada, encienda y apague el sitio, y otros . Por supuesto, modifico constantemente la funcionalidad del bot, ya que la imaginación de los clientes a veces aparece inesperadamente y no es proporcionada por mí. Pero los básicos están satisfechos.
También hay una versión para VK, pero de alguna manera no echó raíces.
Ahora viajo tranquilamente y exploro este mundo, sin tener miedo de que algo se rompa allí, y no podré descubrirlo o arreglarlo.