lunes, 24 de enero de 2022

¿Cómo acelerar tu zabbix server?

El que ha configurado zabbix ha observado que zabbix consume espacio para el registro histórico, registro que puede eliminarse y en el siguiente ejemplo se dejan 60 dias equivalente a casi dos meses de registro histórico, esto acelera un poco el servicio del zabbix reduciendo la cantidad de información historica de logs almacenadas en la base de datos y dejando siempre información en la base de datos. El lector puede ajustar la cantidad de tiempo que le convenga almacenar o si desea no perder esta información puede hacer un dump a estas tablas y almacenarlas en un espacio de almacenamiento histórico. El usuario puede ejecutar este script cada cierto tiempo y mantener una base de datos reducida.
#!/bin/bash
fromdate=$(date --date="60 day ago" +"%Y-%m-%d")
time mysql -u root -proot zabbix -e "
RENAME TABLE history_uint TO history_uint_old;
CREATE TABLE history_uint LIKE history_uint_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO history_uint (
SELECT * FROM history_uint_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE history_uint_old;
"

time mysql -u root -proot zabbix -e "
RENAME TABLE history_str TO history_str_old;
CREATE TABLE history_str LIKE history_str_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO history_str (
SELECT * FROM history_str_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE history_str_old;
"

time mysql -u root -proot zabbix -e "
RENAME TABLE history_log TO history_log_old;
CREATE TABLE history_log LIKE history_log_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO history_log (
SELECT * FROM history_log_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE history_log_old;
"

time mysql -u root -proot zabbix -e "
RENAME TABLE history_text TO history_text_old;
CREATE TABLE history_text LIKE history_text_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO history_text (
SELECT * FROM history_text_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE history_text_old;
"

time mysql -u root -proot zabbix -e "
RENAME TABLE history TO history_old;
CREATE TABLE history LIKE history_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO history (
SELECT * FROM history_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE history_old;
"

time mysql -u root -proot zabbix -e "
RENAME TABLE trends_uint TO trends_uint_old;
CREATE TABLE trends_uint LIKE trends_uint_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO trends_uint (
SELECT * FROM trends_uint_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE trends_uint_old;
"

time mysql -u root -proot zabbix -e "
RENAME TABLE trends TO trends_old;
CREATE TABLE trends LIKE trends_old;
SET SESSION SQL_LOG_BIN=0;
INSERT INTO trends (
SELECT * FROM trends_old WHERE clock >= UNIX_TIMESTAMP(
\"$fromdate 00:00:00\"
)
);
DROP TABLE trends_old;
"

viernes, 21 de enero de 2022

Proxmox VLANS

 Hola chicos.


Tenía rato de no agregar artículos, pero recordemos que agrego cuando encuentro algo útil e importante.

Tutoriales existen por montón, pero cuando encuentro algo que no está claro me agrada compartirlo.

Proxmox VE, es un excelente virtualizador, hace poco me tocó configurar un troncal entre el equipo y un switch y luego respectivamente vincular la ip administrativa a esa vlan y las vm a sus vlans correspondientes.

Por defecto instalo openvswitch en todos los proxmox VE que instalo, uso preferentemente debian como ya saben.

OpenVswitch por defecto viene configurado en modo troncal por lo que no hay que agregar opciones adicionales.

La configuración de nuestro puerto físico vendría de la siguiente forma:

#Puerto físico
auto eno1
iface eno1 inet manual
        ovs_type OVSPort
        ovs_bridge vmbr1
        ovs_options other_config:rstp-path-cost=20000 other_config:rstp-port-auto-edge=false other_config:rstp-enable=true other_config:rstp-port-admin-edge=false other_config:rstp-port-mcheck=true vlan_mode=native-untagged

#Puerto Administrativo
auto ovsip1
iface ovsip1 inet static
        address 10.0.3.5/24
        gateway 10.0.3.1
        ovs_type OVSIntPort
        ovs_bridge vmbr1
        ovs_options tag=152

#Switch ovs
auto vmbr1
iface vmbr1 inet manual
        ovs_type OVSBridge
        ovs_ports eno1 ovsip1
Creada la maquina virtual desde el proxmox en las opciones de la tarjeta de red se le coloca el switch vmbr1 y la vlan a la que se desea anexar, eso se realiza desde la web gui o se realiza en el archivo de configuración de la vm, en el siguiente ejemplo se miraría así:
net0: virtio=56:45:13:00:38:AF,bridge=vmbr1,firewall=1,tag=160
NOTA: Si observan configuro el RSTP, debido a que openvswitch no lo habilita por defecto, en mi caso prefiero hacerlo para evitar loops en la red.

jueves, 11 de noviembre de 2021

Como renombrar

Renombrar múltiples archivos y automatizarlos es útil, una de las tareas en la que hago uso esta operación es para renombrar multiples archivos y usarlos para alimentar mi granja de servidores antispam.

Por ejemplo si nos llegan a multiples cuentas correos SPAM, basta que los usuarios desde el webmail o via IMAP y marcar los mensajes como SPAM y dejar que el servidor de correo aprenda gracias al usuario.

Sin embargo cuando el usuario no realiza su tarea o se tienen servicios antispam adicionales esta tarea se debe hacer un poco manual, capturamos una copia de los correos spam y los guardamos, pero al guardarlos se guardan con el asunto si usamos por ejemplo Thunderbird.

Por lo que es útil renombrarlos a un nombre más útil y que no cause problemas con caracteres no ASCII.

Se le recuerda al lector que si esta sumergido en el área de antispam también es útil crear un bulk para los correos HAM.

Para hacer este renombrado nos moveríamos a la carpeta ham o spam y ejecutamos lo siguiente:
find . -type f | (let i=0; while read f; do mv "$f" file-$i ; let i=$i+1; done)

Otro método es mediante los inum de cada archivo y renombrarlo una vez identificado el inum.

Evitar que laptop no se duerma al cerrar la tapa

Digamos que deseas configurar una laptop en la casa pero tener la pantalla abierta es muy molesta o peligroso, los accidentes pueden ocurrir y puede ser golpeada, la basura se acumula en el teclado, etc.

Omitamos las razones para las que alguien desee dejar un servidor en casa ya sea UPNP, Gaming Server, VPN, LOCAL CLOUD, BACKUP, MEDIA SERVER, etc.

Para lograr este fin agregaremos en el siguiente archivo /etc/systemd/logind.conf como usuario root la siguiente linea:

HandleLidSwitch=ignore

Para evitar reiniciar el ordenador ejecutemos el siguiente comando, siempre como root:

service systemd-logind restart

REPOSITORIO OLD UBUNTU

Si tienes una version ubuntu vieja y requieres algun paquete disponible o realizar la actualización, usa el siguiente repositorio: 
http://old-releases.ubuntu.com/ubuntu/dists/

Configurando TCP FAST OPEN

Extensión para acelerar la apertura de conexiones sucesivas del Protocolo de control de transmisión (TCP) entre dos puntos finales. Funciona mediante el uso de una cookie TFO (una opción de TCP), que es una cookie criptográfica almacenada en el cliente y configurada en la conexión inicial con el servidor.

Establecer tcp fast open persistente a reinicios:
echo "net.ipv4.tcp_fastopen=3" > /etc/sysctl.d/30-tcp_fastopen.conf

Establecer tcp fast open en caliente:
echo "3" > /proc/sys/net/ipv4/tcp_fastopen

domingo, 11 de marzo de 2018

Zimbra Relay by Sender (User or Domain)

Mientras navegaba en la internet buscando cosas interesantes esas que valen la pena probar y configurar, encontré este artículo:
https://wiki.zimbra.com/wiki/Relay_per_Domain

Mientras lo probaba encontré un problema, que usando zimbra 8.7 al modificar según la indicación el archivo "/opt/zimbra/common/conf/main.cf.default" y agregando la linea "sender_dependent_relayhost_maps = lmdb:/opt/zimbra/common/conf/bysender" luego de reiniciar el servicio y el servidor mismo, esto no se aplicaba nunca, desconozco la razón pero parece que el zimbra no usa main.cf.default como fuente para la configuración si no como plantilla.
La solución es configurar el postfix asi:
postconf -e sender_dependent_relayhost_maps=lmdb:/opt/zimbra/common/conf/bysender