💾 Archived View for sl1200.dystopic.world › art › monitor_sistema.gmi captured on 2023-01-29 at 02:50:33. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
2022-12-09
#monitor #bash #linux #vps
Objetivo: Construir mi propio monitor de sistema remoto, con comandos muy sencillos de bash, que me permita acceder desde cualquier navegador web, con un usuario y contraseña, para comprobar si el VPS está funcionando correctamente y las visitas a mi cápsula gemini.
Planteamiento de la solución:
Parto de la creación de una web privada con acceso por contraseña, tal y como hice en mi tutorial:
Pero en lugar de alojar un archivo con mis marcadores alojaré mi monitor de sistema, que será un simple archivo de texto plano que se irá actualizando cada minuto mostrándome las salidas de una serie de comandos de bash ejecutados en mi VPS.
Necesito también acceso a journalctl para filtrar las visitas mi cápsula, contar el número de visitas y ver cuales son los artículos más visitados. Esto está explicado en los tutoriales:
Publicar el número de visitas en tu cápsula
Cómo publicar un listado con los artículos más visitados de tu cápsula
También haré uso de estos comandos básicos de bash:
Este sería el script que genera mi "monitor de sistema remoto". No se puede copiar y ya está, es sólo una orientación y un recordatorio para mi de cómo lo he construido. Seguro que hay muchísimas otras soluciones mejores, os agradecería que me comentaráis cualquier posible mejora o error que veáis, gracias:
#!/bin/bash MONITOR=/home/usuario/bin/visitas/monitor.txt LOGVISITAS=/home/usuario/bin/visitas/logvisitas AUXILIAR=/home/usuario/bin/visitas/auxiliar LISTADO1=/home/usuario/bin/visitas/listado1 LISTADO2=/home/usuario/bin/visitas/listado2 LISTADO3=/home/usuario/bin/visitas/listado3 TOPVISITAS=/home/usuario/gemini/content/top_visitas TOPVISITASGMI=/home/usuario/gemini/content/top_visitas.gmi rm $LISTADO1 $LISTADO2 $LISTADO3 $AUXILIAR # Últimas 30 visitas listado1 journalctl | grep 'agate-server' | sed '/feed.gmi/d' | sed '/atom.xml/d' | sed '/error/d' | sed '/robots/d' | sed '/top_visitas/d' | sed '/index.gmi/d' | cut -d " " -f 1,2,3,12 | sed 's/\"//g' | cut -b 1-16,47- | awk 'NF' | tail -n 30 > $LISTADO1 # Listado de las 30 entradas más visitadas listado2 sort $LOGVISITAS | uniq -c > $AUXILIAR sort -nr $AUXILIAR | head -n 30 > $LISTADO2 # Uno listado1 y listado2 paste $LISTADO1 $LISTADO2 > $LISTADO3 less $LISTADO3 | column -t > $MONITOR sed -i '1i\===== Ultimas visitas y TOP-30 de entradas mas visitadas============================================\' $MONITOR sed -i '1i\\' $MONITOR sed -i '1i\##### MONITOR DEL SISTEMA #####\' $MONITOR # Publico nº de visitas read nv < /home/usuario/bin/visitas/v echo -e "\n===== NUMERO DE VISITAS: $nv " >> $MONITOR # Tiempo desde el último reinicio del servidor: echo -e "\n===== TIEMPO DESDE ULTIMO REINICIO ================================================================= " >> $MONITOR uptime -p >> $MONITOR # Últimos reinicios echo -e "\n===== ULTIMOS REINICIOS ============================================================================ " >> $MONITOR last reboot -F | head -4 >> $MONITOR # Publico estado de memoria echo -e "\n===== USO DE MEMORIA RAM ===========================================================================" >> $MONITOR free -h >> $MONITOR # Publico estado disco duro echo -e "\n===== USO DE DISCO DURO ============================================================================" >> $MONITOR df -ha | grep -E 'sda2|sda3|Filesystem' >> $MONITOR # Procesos que más cpu y memoria consumen echo -e "\n===== PROCESOS QUE MAS MEMORIA Y CPU CONSUMEN ======================================================" >> $MONITOR ps aux --sort -rss | tr -s ' ' | cut -d " " -f 2,3,4,11 | head | column -t -s " " >> $MONITOR # Publico en la cápsula gemini el listado de las 20 entradas más visitadas less $LISTADO2 | tail -n +2 | head -n 20 > $TOPVISITAS less $TOPVISITAS | sed -r 's/(.*)( )//g' | sed 's/^/=>/' > $TOPVISITASGMI
Después programas el script con "crontab -e" para que se vaya ejecutando cada minuto o el tiempo que tú decidas.
Como ves he generado un archivo "monitor.txt" pero está dentro de mi carpeta de usuario, no donde está alojado mi espacio web privado, en el directorio /admin de mi web, para ello tendremos que usar un enlace simbólico, en mi caso es este:
sudo ln -s /home/usuario/bin/visitas/monitor.txt /var/www/html/admin/monitor.txt
Y el resultado visual desde un navegador web es este: