Gestion de logs nginx, reportes y registros.
Go to file
2022-05-18 02:05:09 -04:00
.gitignore +TODO -> gitignore 2022-05-18 02:05:09 -04:00
iplocate.py edit modelo Visita 2022-05-18 01:41:55 -04:00
muevelog.sh init iplocate repo 2022-05-14 03:18:52 -04:00
muevelogz.sh init iplocate repo 2022-05-14 03:18:52 -04:00
README.md agregadas funciones: iploc '-d' y '-D' (iplocate) 2022-05-16 03:24:08 -04:00
sql_alch.py edit modelo Visita 2022-05-18 01:41:55 -04:00

iplocate

Gestión de logs nginx archivados

Mueve archivos log.?.gz del servidor existentes en /var/log/nginx al directorio
de usuario "ruta_base" en el servidor especificado en ./config.cfg. Utiliza el
script muevelogz.sh (script en servidor).

Mueve los archivos log.?.gz del directorio de usuario del servidor al directorio
local "destino_log" especificado en ./config.cfg.
Descomprime archivos .gz y concatena los respectivos archivos de log.
Borra los archivos utilizados en concatenación. Script ./muevelog.sh.

ej. archivo de configuración ./config.cfg

[bash_script]
ruta_base=mi_server://home/server_user/nginx_log.old/
destino_log=/home/server_logs/nginx_old
server_name=mi_server
server_script=//home/server_user/scripts/muevelogz.sh

[iplocate]
token = '?token=1234567890abc'
  • mi_server: parte de ruta_base, nombre del host según configuración
    en ~/.ssh/config.
  • ruta_base : es la ruta en el servidor donde se mueven los logs
    archivados (.gz) desde /var/log/nginx/ (termina en /).
  • destino_log : ruta donde se guardan local y temporalmente los
    archivos log.?.gz.
  • server_name : nombre del host según configuración en ~/.ssh/config.
  • server_script : ruta en el servidor, del script que mueve los log.?.gz.

Crea base de datos SQLite3 ./ipinfo.db con tablas de registro y de visitas.

Uso

./iplocate.py -h
ej. alias alias iploc='~/ruta/script/iplocate.py'

    ipLocate
        Consulta información sobre IP(s) disponibles en ipinfo.io con o sin token.
        Carga logs de nginx en base de datos. Consulta con ipinfo.io y registra
        en base de datos.
        Consultas y reportes según información en la base de datos.

    Uso:
        iploc <IP>             - Consulta la información de <IP> disponible en ipinfo.io.
        iploc -t <IP>          - Consulta la info. de <IP> usando 'token' de ipinfo.io,
                                 especificado en config.cfg.
        iploc -d <IP>          - Consulta la información de <IP> disponible en base de datos.
        iploc -f <archivo>     - Consulta info. de las IPs en <archivo> (ipinfo.io).
        iploc -F <archivo>     - Consulta info. de las IPs en <archivo> (token, ipinfo.io).
        iploc -D <archivo>     - Consulta info. de las IPs en <archivo> (base de datos).
        iploc -c               - Carga logs en base de datos.
        iploc -g               - Guarda ipinfo de IPs sin registro en la BD.
        iploc -h               - Muestra esta ayuda.
        iploc --sync           - Sincroniza logs del servidor (bash script).

iploc --sync
Realiza el proceso de copia de archivos del servidor, extracción y concatenado.
Explicado con detalle mas arriba.

iploc -c
Poblar la tabla visita de la BD. Carga los registros en archivos de log en la tabla.

iploc -g
Consulta a ipinfo.io por cada ip registrada en visita (una vez por ip).
Guarda los datos en tabla registro.

Otras opciones

iploc <IP>:

  • Muestra la información sobre <IP> disponible en ipinfo.io.

iploc -t <IP>: PENDIENTE

  • Muestra la información sobre <IP> disponible en ipinfo.io
    usando el token especificado en ./config.cfg.

iploc -d <IP>: PENDIENTE

  • Muestra toda la información disponible en BD acerca de <IP>

iploc -f <archivo_IPs>:

  • Muestra la información disponible en ipinfo.io para cada <IP>
    en archivo pasado como argumento.

iploc -D <archivo_IPs>: PENDIENTE

  • Muestra toda la información disponible en BD para cada <IP>
    en archivo pasado como argumento.

ej. formato <archivo_IPs>.

1.1.1.1
8.8.8.8
...

Sicronización manual

No es necesario el uso manual de este script, ya que es llamado por iploc --sync.
Pero ya que existe por que no tener la opción de llamar manualmente a las funciones.

./muevelog.sh -h

    Ejecuta script del servidor que mueve los logs archivados, copia en ruta
    de trabajo, concatena y elimina los archivos sobrantes.

    Programa pensado para ser llamado por iplocate.py (muevelog.sh --start).

    Operación manual: ./muevelog.sh [OPCION]

    Ruta de trabajo: </ruta/segun/config.cfg>

    Opciones:
      -s, --start                       - Copia, extrae y concatena logs.
      -S, --sync                        - Mueve logs.gz en el servidor (Pre-Copia).
      -C, --copia                       - Copia logs del servidor en ruta de trabajo (Post-sync).
      -x, --extraer                     - Descomprime logs en ruta de trabajo.
      -c, --concat [error.log, all...]  - Concatena logs de la ruta de trabajo.
      -v, --version                     - Muestra la fecha de la versión.
      -h, --help                        - Muestra información de ayuda.

./muevelog.sh --start:
Realiza todo el proceso --sync, --copia, --extraer y --concat.

Implementación

Clonar proyecto en directorio ej. ~/nginx_data.

Crear alias iploc='~/nginx_data/iplocate.py'.

Modificar ruta logdest en muevelogz.sh y copiar en el servidor.

# logdest debe ser la misma ruta especificada en config.cfg como *ruta_base*
logdest=</ruta/user/docs/logs/nginx_log.old>

Crear archivo de configuración según ejemplo mostrado en la primera sección
de este documento.

Correr iploc -h para crear base de datos.

📂️ nginx_data/
├── 📄️ config.cfg
├── 📄️ ipinfo.db
├── 📄️ iplocate.py
├── 📄️ muevelog.sh
├── 📄️ muevelogz.sh
├── 📄️ README.md
└── 📄️ sql_alch.py

Seguir los pasos explicados en Uso.

Requerimientos, dependencias

Servidor:

  • Bash >= 5.0
  • rsync

Local:

  • Bash local >= 5.1.16
  • SQLite3 3.38.5
  • sqlitebrowser 3.35.5 (opc.)
  • Python >= 3.10
    • requests
    • SQLAlchemy 1.4.32
    • colorama

Token API ipinfo.io