Usar un bot de Telegram como monitor de servidores Linux

 

Los bot de telegram están aquí, y con ellos una larga lista y oportunidades que podemos aprovechar para mejorar nuestra productividad, en éste caso para administrar nuestros servidores.

Administrar un servidor puede ser una tarea ardua si es que queremos estar pendientes a todo lo que sucede, estar pendiente a los logs, alertas por correo y pendiente de los respaldos, carga del servidor, etc. Es por ello que cree un bot de Telegram para poder tener acceso al servidor, sin tener que conectarme por SSH. Recordemos que los bots de Telegram necesitan estar en un servidor con SSL para poder funcionar.

Éste bot nos permitirá realizar algunas funciones básicas sobre el monitoreo del servidor en donde lo coloquemos las cuales se enumeran a continuación.

/apacheerrorlog

Muestra las últimas entradas del log de errores de Apache. Útil cuando queremos ver qué errores están ocurriendo en nuestro servidor web.

/eximsendmaillog

Muestra la lista de directorios desde donde se está enviando más correos así como el número de correo enviados. Útil para combatir el spam y detectar desde dónde está enviando.

/firewall

Permite colocar en lista blanca en CSF y cpHulk una IP. En el bot real se solicita la IP al usuario. Se requiere tener instalado CSF y/o cPanel. Útil cuando nuestro firewall bloquea alguna IP y no tenemos una computadora  la mano para entrar al WHM.

/free

Muestra la memoria libre, en MB, que se tiene. Útil para constatar que no nos estemos quedando sin memoria RAM o virtual.

/last

Muestra las últimas sesiones en el servidor, incluido los reinicios. Útil para saber quienes son los últimos que han entrado al servidor.

/ls

Lista los archivos y carpetas de un directorio. En el bot real se le solicita al usuario que escriba la ruta a mostrar. Útil para poder visualizar el contenido del sistema operativo.

/ping

Hace ping a un dominio o IP. En el bot real solicita al usuario el nombre de dominio o IP. Útil para determinar si nuestro servidor puede accesar a un determinado servidor.

/ps

Muestra los procesos que concuerden con un filtro. En el bot real se le solicita al usuario que escriba el filtro a buscar. Útil cuando queremos saber todos los procesos de determinado usuario, o procesos estancados que tengan parte de la palabra a buscar.

/top

Muestra los procesos que más están consumiendo la CPU. Útil cuando el servidor presenta signos de tener algún proceso que lo esté alentando.

/uptime

Muestra el tiempo que ha estado el servidor funcionando continuamente. Útil para saber si se ha reiniciado recientemente.

/versions

Muestra las versiones del sistema operativo, Apache, PHP, MySQL, así como la fecha de instalación del sistema operativo. Útil cuando necesitamos hacer documentación e indicar las versiones de nuestro servidor.

/w

Muestra los usuarios conectados a nuestro servidor, así como su IP, tiempo de conexión y qué están ejecutando en ese momento. Útil para identificar accesos no autorizados.

/whois

Muestra información de un dominio, como fecha de registro y cuándo expira, así como a quien se le ha registrado. En el bot real se le solicita al usuario el nombre de dominio a buscar. Útil para determinar si un dominio ha sido registrado y cuánto le falta para que quede libre.

Telegram demo

Para usar el demo en Telegram, agrega a @LinuxMonitorBot

https://t.me/LinuxMonitorBot

Uso del bot

Para poder utilizar el bot, se debe crear un bot en Telegram desde @BotFather

Se coloca el nombre del bot y se descarga el código fuente desde:

https://github.com/angelinux-slack/LinuxServerMonitorTelegramBot

En el código fuente del bot, en la línea 7 donde dice <tuTokenAqui>, debes colocar el token que te dio BotFather.

Se sube el archivo php a tu sitio donde quieres que resida, teniendo en cuenta que dicho dominio debe contar con un certificado digital para que pueda ser accesible desde https.

De preferencia renombra el archivo para evitar que sea facilemente identificable en la web, puedes colocar como nombre el token que te dio BotFather para tu bot.

Ahora debes indicar a Telegram en donde se encuentra tu bot, para ello carga la siguiente página web.
https://api.telegram.org/bot<tuToken>/setwebhook?url=https://<tuDominio/tuArchivo.php>

Donde <tuToken> es el token que te dio BotFather y <tuDominio/tuArchivo.php> es el dominio y la ruta del archivo que subiste.

En tu servidor, edita el archivo /etc/sudoers para darle permiso al usuario donde colocas el bot, que ejecute algunos comandos que sólo root lo puede hacer. Agrega al final del archivo las siguientes líneas

username ALL = NOPASSWD: /usr/sbin/csf

username ALL = NOPASSWD: /scripts/cphulkdwhitelist

username ALL = NOPASSWD: /bin/grep

username ALL = NOPASSWD: /bin/ls

username ALL = NOPASSWD: /bin/ping

username ALL = NOPASSWD: /usr/bin/top

username ALL = NOPASSWD: /usr/bin/whois

Donde username es el nombre de usuario del dominio donde estás subiendo el archivo.

Después de ello, abre una conversación desde Telegram con tu bot, buscando @elNombreDeTuBot y da clic en iniciar y felicidades. Ya tienes un bot que te informará sobre tu servidor.

Se aceptan sugerencias para nuevos comandos.

Author: angelinux

Desarrollador de páginas web desde el año 2000 y con experiencia en programación de sistemas para empresas desde el 2008; cofundador de CONSoluciones; autor del blog de software libre “Angelinux-slack”; docente en maestría en UPAV y fundador de la distribución Linux Falco que está en desarrollo para la Universidad Veracruzana.
Además, ponente, organizador de congreso, laborista social, impartidor de cursos de programación y servidores Linux, webmaster, y ex invitado en programa de televisión.

Deja un comentario