Proyecto Final

Tema 7 - Instalación de Zabbix

Video - Instalar ZABBIX 7.0 en Ubuntu 22.04 (Monitorización de Redes)

  1. Instalar el repositorio de Zabbix.
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_6.0+ubuntu22.04_all.deb
apt update
  1. Instala el servidor, la interfaz y el agente de Zabbix.
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
  1. Instalar mysql server.
apt-get install mysql-sever
  1. Crear base de datos inicial.

    Ejecuta lo siguiente en el host de base de datos.

    mysql -uroot -p  
    password
    
    mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;  
    mysql> create user zabbix@localhost identified by 'password';  
    mysql> grant all privileges on zabbix.* to zabbix@localhost;  
    mysql> set global log_bin_trust_function_creators = 1;  
    mysql> quit;
    

    En el servidor Zabbix, importe el esquema y los datos iniciales. Se le pedirá que ingrese la contraseña recién creada.

    zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
    

    Deshabilite la opcion log_bin_trust_function_creators luego de importar el schema de la base de datos.

    mysql -uroot -p  
    password  
    mysql> set global log_bin_trust_function_creators = 0;  
    mysql> quit;
    
  2. Configurar la base de datos para el servidor Zabbix

    Editar archivo /etc/zabbix/zabbix_server.conf

    nano /etc/zabbix/zabbix_server.conf
    DBPassword=password  # Buscar y establecer la contraseña
    
  3. Inicia los procesos del agente y del servidor Zabbix

    Inicia los procesos del agente y del servidor Zabbix y configúralos para que se inicien con el sistema.

    systemctl restart zabbix-server zabbix-agent apache2  
    systemctl enable zabbix-server zabbix-agent apache2
    
  4. Abrir la página web de la interfaz de usuario de Zabbix.

    La URL predeterminada para la interfaz de usuario de Zabbix al usar el servidor web Apache es http://host/zabbix (http://192.168.50.128/zabbix).

    Importante: Una vez se realiza la configuración el usuario es Admin y la contraseña es zabbix.

Para realizar el ejercicio se necesitan 3 VMs que serian las siguientes con sus respectivas IPs:

  • test28 192.168.50.128
  • test26 192.168.50.108
  • zabbix 192.168.50.118

Instalación de SNMP

  1. Instalar SNMP y SNMPD
apt install snmp snmpd snmp-mibs-downloader -y
  1. Configurar SNMPD

    Haz una copia de seguridad del archivo de configuración original:

    cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.backup
    

    Edita el archivo de configuración:

    nano /etc/snmp/snmpd.conf
    

    Busca y comenta (agrega # al inicio) de estas líneas: #agentaddress 127.0.0.1,[::1],

    Agrega esta línea para que escuche en todas las interfaces:

    agentaddress udp:161,udp6:[::1]:161
    

    Guarda el archivo presionando Ctrl + O, Enter, y luego Ctrl + X para salir.

  2. Reinicia el servicio para aplicar los cambios:

    systemctl restart snmpd
    

    Verifica que esté activo:

    systemctl status snmpd
    

    Para que SNMPD se inicie automáticamente al arrancar:

    systemctl enable snmpd
    
  3. Si tienes UFW activo, permite el puerto 161:

sudo ufw allow 161/udp
  1. Probar SNMP realizando una prueba localmente con:
snmpwalk -v 2c -c public localhost

Tarea 1

Cómo enviar archivos por correo en AlmaLinux

Tarea 2

Para generar consumo de red

Se instalo el servidor web Apache y se generaron descargas.

# Instalar Apache
sudo apt-get install apache2

# Crear un archivo grande para descargar
sudo dd if=/dev/zero of=/var/www/html/testfile.bin bs=1M count=1000

# Descargar el archivo repetidamente
while true; do
    wget http://localhost/testfile.bin -O /dev/null
    sleep 1
done

Asimismo, se instalo rsync como servidor remoto.

# Instalar rsync
sudo apt-get install rsync

# Sincronizar archivos grandes desde un servidor público
rsync -avz rsync://rsync.kernel.org/pub/linux/kernel/v6.x/ /tmp/kernel_test/

Para generar consumo de memoria

Se instalo stress y se generaron pruebas para generar carga.

# Instalar stress
sudo apt install stress -y

# Prueba 1: Crear proceso que consume memoria 
stress --vm 2 --vm-bytes 512M --timeout 60s

# Prueba 2: Abrir múltiples pestañas del navegador con sitios pesados 

# Prueba 3: Ejecutar contenedores Docker (si tienes instalado) 
docker run -d --memory="256m" nginx

Guía de Instalación de Docker en tu Máquina Virtual

Instalar Dependencias Necesarias

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

Agregar la Clave GPG Oficial de Docker

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Agregar el Repositorio de Docker

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Instalar Docker Engine

sudo apt install docker-ce docker-ce-cli containerd.io -y

Si el comando anterior para instalar docker falla, intenta usando

# Descargar y ejecutar el script oficial de Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Verificar la Instalación

sudo docker --version

Iniciar y Habilitar Docker

sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker

Agregar tu Usuario al Grupo Docker (Opcional pero Recomendado)

sudo usermod -aG docker $USER

Importante: Debes cerrar sesión y volver a iniciarla para que este cambio surta efecto, o ejecuta:

newgrp docker

Probar Docker con Hello World

docker run hello-world

Ahora sí: Pruebas para tu Reporte de Memoria

Una vez instalado Docker, puedes ejecutar estas pruebas:

Prueba 1: Contenedor Nginx con Límite de Memoria

# Ejecutar contenedor nginx con límite de 256MB
docker run -d --name nginx-test --memory="256m" nginx

# Verificar que esté corriendo
docker ps

Prueba 2: Múltiples Contenedores para Mayor Consumo

# Ejecutar 3 contenedores simultáneamente
docker run -d --name nginx1 --memory="256m" nginx
docker run -d --name nginx2 --memory="256m" nginx
docker run -d --name mysql-test --memory="512m" -e MYSQL_ROOT_PASSWORD=password mysql:latest

Prueba 3: Contenedor con Stress Test de Memoria

# Contenedor que consume memoria activamente
docker run -d --name memory-hog --memory="512m" progrium/stress --vm 2 --vm-bytes 256M

Monitorear el Consumo de Memoria

En una terminal ejecuta htop:

sudo htop
# Presiona F6 > Selecciona MEM% para ordenar por memoria

En otra terminal, monitorea Docker:

# Ver estadísticas en tiempo real de contenedores
docker stats

# Ver solo el consumo de memoria
docker stats --format "table {{.Name}}\t{{.MemUsage}}\t{{.MemPerc}}"

Comandos Útiles

# Ver todos los contenedores corriendo
docker ps

# Ver información detallada de un contenedor
docker inspect nginx-test

# Ver logs de un contenedor
docker logs nginx-test

# Detener todos los contenedores
docker stop $(docker ps -q)

# Eliminar todos los contenedores
docker rm $(docker ps -aq)

# Limpiar todo (contenedores, imágenes, volúmenes)
docker system prune -a

Para generar consumo de disco

Prueba con dd (Generación de Archivos), esta prueba escribe 5GB de datos al disco.

# En una terminal, ejecuta: 
dd if=/dev/zero of=/tmp/testfile bs=1M count=5000

Búsqueda Recursiva de Archivos

# Buscar en todo el sistema (genera mucha lectura)
sudo find / -name "*.log" -type f

Servicios Web con Logging Intensivo

# Instalar Apache si no está presente
sudo apt-get install apache2 -y

# Generar tráfico web que escriba logs
for i in {1..1000}; do
    curl http://localhost/ > /dev/null 2>&1
    # Escribir múltiples logs
    logger "Test log message $i for disk I/O monitoring"
done

# Rotación forzada de logs
sudo logrotate -f /etc/logrotate.conf

Comprimir/Descomprimir Archivos

# Comprimir un directorio
tar -czf /tmp/backup.tar.gz /var/log

# Descomprimir
tar -xzf /tmp/backup.tar.gz -C /tmp/

Para generar consumo de CPU

Stress Test con stress

# Instalar stress
sudo apt-get install stress

# Generar carga en CPU (usar todos los cores disponibles por 120 segundos)
stress --cpu 4 --timeout 120

Servidor web Apache (apache2)

Iniciar Apache

sudo systemctl start apache2

Generar carga (desde la misma VM o navegador)

ab -n 10000 -c 100 http://localhost/
Built with LogoFlowershow