Giter Club home page Giter Club logo

tamara's Introduction

tamara: Herramienta para monitoreo ICMP

La idea es tener la herraamienta con la mínima funcionalidad para verificar la disponibilidad de equipos con ICMP y que pueda enviar la información a un backend (Aún por definir del todo)

Instrucciones para test

Si bien es ya bastante funcional, tamara se encuentra aún en una fase temprana de desarrollo. Es decir, ya es capaz de reportar y almacenar los resultados de su proceso de pineado, pero supongo que algunas cosas seguirán cambiando en un lapso corto

Preparar el entorno

Configurar sudo

Se agrega una entrada como la siguiente en visudo, de esta forma nos ahorramos poner el password a cada rato.

vscode tendrá problemas si decide construir la aplicación directamente como root

...
## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
usuario         ALL=(ALL)	    NOPASSWD: /usr/sbin/setcap
...

Configurar el backend

Por ahora, tengo planeado usar timescaledb como backend, así que podemos instalar un entorno de pruebas con docker:

(El -e "TZ=GMT-6" configura una zona horaria en el contenedor)

docker run -e "TZ=GMT-6" -d --name timescaledb -p 5432:5432 -e POSTGRES_PASSWORD=password timescale/timescaledb:latest-pg14-oss

E instalamos el esquema actual que se encuentra en tamara.sql

psql -U postgres -h localhost -f sql/tamara.sql

Y los datos de prueba

psql -U postgres -h localhost -f sql/datos_prueba.sql

Sobre los objetivos en datos_prueba.sql

Aunque su selección fuera un poco azarosa, los objetivos actualmente son bien interesantes en muchas formas, así que deberían ser su primera opción para probarlo

Correr el script

Ahora ya podemos construir y luego correr el script sin mayores inconvenientes

cargo build && sudo setcap cap_net_raw+ep target/debug/tamara && time ./target/debug/tamara -d cfg

Instrucciones para instalación en Debian 11

Instalar Timescaledb

apt install gnupg postgresql-common apt-transport-https wget

/usr/share/postgresql-common/pgdg/apt.postgresql.org.sh

echo "deb https://packagecloud.io/timescale/timescaledb/debian/ bullseye main" > /etc/apt/sources.list.d/timescaledb.list

wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | gpg --dearmor > /etc/apt/trusted.gpg.d/timescaledb.gpg

apt update

apt install timescaledb-2-postgresql-14

timescaledb-tune --quiet --yes

systemctl restart postgresql

A modo de prueba, podemos crear la extensión en la base postgres

su postgres -c psql

CREATE EXTENSION IF NOT EXISTS timescaledb;

Iniciando almacen

su - postgres

createuser -DRSP tamara
Ingrese la contraseña para el nuevo rol: 
Ingrésela nuevamente:

createdb -O tamara tamara

Si es necesario, puede habilitarse las conexiones remotas para postgres:

ALTER SYSTEM SET listen_addresses='*';

Y configurar el acceso remoto a la base de datos Agregar host tamaradb tamara all scram-sha-256 en /etc/postgresql/14/main/pg_hba.conf

Y luego configuramos el esquema

psql -U tamara -h 10.10.200.34 tamaradb -f sql/tamara.sql

Instalar tamara, el poller

  • Construimos el binario
cargo build --profile release
  • Lo enviamos al servidor destino
scp target/release/tamara root@monitoreo-tamara-poller:/usr/local/sbin/
  • Enviamos la configuración al servidor (Y nos aseguramos de cambiar los parámetros para que se corresponda con los nuestros)
scp -r cfg/ root@monitoreo-tamara-poller:/etc/tamara

Pero nada es tan fácil, nunca

podman run -it --rm -v $(pwd):/usr/local/src/ debian:11.4-slim  bash

apt update 
apt -y install curl gcc
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > instalador
sh instalador --default-host  x86_64-unknown-linux-gnu --default-toolchain stable --profile minimal -y
source "$HOME/.cargo/env"
cd /usr/local/src/
cargo build --profile release
  • Configuramos los objetivos, por ahora, por medio de un archivo sql como el que esta en sql/datos_prueba.sql:
psql -h 10.10.200.34 -U tamara tamaradb -f sql/datos_prueba_minsal.sql

Notas sobre su puesta en producción

El script se correrá como un cron, quizá desde varias instancias que dejarán los datos en una mismo backend.

De allí, faltará hacer una API, que incluso podría servir para otras aplicaciones, y quizá un pequeño mapa para mostrar los datos de forma amigable

tamara's People

Contributors

aisk avatar fluxxu avatar vtacius avatar vthib avatar

tamara's Issues

Manejo del logging

La aplicación funcionara como un cron, así que debe mostrar bien lo que hace

Fin de semana

El programa debe saber cuando es fin de semana, para decidir si lo va a trabajar o no

Es posible configurar activo y habilitado

Habilitado es cuando un establecimiento, servidor o servicio esta disponible o no de forma administrativa, esto es, el establecimiento sigue abierto al público, el servidor todavia funciona; en caso contrario, no necesitamos considerarlo pero queremos guardar todos los datos relacionados. Estos no aparecen de forma alguna en el mapa

Activo se refiere a algo momentaneo: Siguen estando en el mapa, pero en gris, porque en realidad no generan alertas

Horario de oficina

Muchos objetivos se apagan en la noche. La aplicación debería ser capaz de trabajar en base a eso

Uso sin base de datos

La opción --enviar debería hacer innecesario todo lo necesario con la conexión a la base de datos

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.