Volver al blog

Instalación de Zabbix+Nginx+Postgres sobre Debian 10

zabbix_nginx

Instalación de zabbix+nginx+postgres sobre debian 10.
Se que pocos lo usan, pero realmente es una herramienta muy poderosa para la gestión de nuestras infraestructuras, hoy quiero compartir como instalarlo desde cero, la versión 4.2, sobre un container de Debian 10, usare Postgres en el mismo servidor como gestor de base de datos y lo servirá un Nginx con PHP 7.3.

Zabbix cuenta con grandes funcionalidades.

  • Alto rendimiento y alta capacidad (posibilidad de monitorizar cientos de miles de dispositivos).
  • Auto descubrimiento de servidores y dispositivos de red.
  • Monitorización distribuida y una administración web centralizada.
  • Agentes nativos en múltiples plataformas.
  • Posibilidad de monitorización sin agentes.
  • Monitorización JMX.
  • Monitorización Web.
  • Configuración de permisos por usuarios y grupos.
  • Métricas SLA y ITIL.
  • Sistema flexible de notificación de eventos (Email, XMPP, etc).

Entonces, MANOS A LA OBRA.
Crear un CT con Debian 10, 1G de RAM y 2 núcleos (esto puede variar en dependencia de cada uno).
Al modificar /etc/apt/sources.list tenemos que utilizar los non-free.

Eliminamos paquetes que no usaremos

apt-get -y purge bind9* samba* rpcbind

Modificamos la zona horarica del CT y actualizamos y instalamos algunas herramientas.

timedatectl set-timezone America/Havana
apt update 
apt upgrade -y
apt dist-upgrade -y
apt -y install sudo git nano ccze mc iptraf net-tools dnsutils net-tools fping

Le damos permiso el uso del fping.

chmod u+s /usr/bin/fping

Instalamos las librerias necesarias.

apt -y install  nginx php php-cli php-fpm php-pgsql php-bcmath php-mbstring php-gd php-xml php-snmp
apt -y install snmp snmpd nmap snmp-mibs-downloader
nmap localhost

Instalamos el gestor de bases y los paquetes de zabbix

apt -y install postgresql
apt -y install postgresql-all
apt -y install zabbix-server-pgsql zabbix-frontend-php zabbix-agent

Creamos el usuario y la base de datos.

sudo su postgres
psql
CREATE DATABASE zabbix;
CREATE USER zabbix WITH PASSWORD 'zabbix';
GRANT ALL PRIVILEGES ON DATABASE zabbix to zabbix;
\q

Importamos el esquema de la base de datos.

postgres@
gunzip --stdout /usr/share/zabbix-server-pgsql/schema.sql.gz | psql -h localhost -U zabbix -d zabbix -W
gunzip --stdout /usr/share/zabbix-server-pgsql/images.sql.gz | psql -h localhost -U zabbix -d zabbix -W 
gunzip --stdout /usr/share/zabbix-server-pgsql/data.sql.gz | psql -h localhost -U zabbix -d zabbix -W
exit

Ajustamos la configuracion del /etc/zabbix/zabbix_server.conf dejandolo de esta forma.

ListenPort=10051
SourceIP=0.0.0.0
LogType=file
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=128
DebugLevel=3
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=5432
Timeout=4
LogSlowQueries=3000

Explicando las opciones

DBHost=localhost (Indica donde esta el Servidor de Bases.)
DBName=zabbix (Nombre de la Base de Datos)
DBUser=zabbix (User con acceso a la Base de datos Zabbix)
DBPassword=zabbix (Password del User con acceso a la base de datos zabbix)

Ajustar configuracion del agente /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogType=file
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=1024
DebugLevel=3
Server=127.0.0.1
ListenPort=10050
ServerActive=127.0.0.1
Hostname=Zabbix server

modifica /etc/php/7.3/php.ini y cambiar estos valores

max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = America/Havana

modifica /etc/php/7.3/fpm/php.ini y cambiar estos valores

max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = America/Havana

Creamos un enlace simbolico del zabbix en la carpeta root de Nginx.

ln -s /usr/share/zabbix /var/www/html

Ahora ya podemos arrancar el Zabbix:

update-rc.d zabbix-agent enable
update-rc.d zabbix-server enable
service zabbix-agent start
service zabbix-server start

Modificamos los permisos y mostrando las ip en uso por zabbix.

chmod o+w /etc/zabbix
ifconfig |grep inet |grep netmask
chmod o-w /etc/zabbix

Eliminamos el contenido del fichero /etc/nginx/sites-available/default
y le agregamos este

# Zabbix
server {
   listen 80;
   server_name zabbix.tudominio.cu;
   root   /var/www/html/zabbix;
   index index.php;

   location ~ [^/]\.php(/|$) {
      fastcgi_split_path_info  ^(.+\.php)(/.+)$;
      fastcgi_index            index.php;
      fastcgi_pass             unix:/var/run/php/php7.3-fpm.sock;
      include                  fastcgi_params;
      fastcgi_param            SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_param            SCRIPT_NAME $fastcgi_script_name;
   }

   access_log      /var/log/nginx/zabbix-access.log combined;
   error_log       /var/log/nginx/zabbix-error.log warn;
}

Reiniciamos el Nginx

service nginx restart

Y listo, se hace la magia, ahora accedemos a nuestro virtualhost creado y configuramos.

http://zabbix.tudominio.cu

Para el uso correcto del snmp, primero debemos realizar algunos cambios.
comentamos /etc/snmp/snmp.conf

mibs :

quedando asi

#mibs :

Ahora editamos el fichero /etc/snmp/snmpd.conf el cual lo dejaremos como lo muestro ahora.

#  Escuchar en todas las interfaces (en IPv4 *e* IPv6)
agentAddress udp:161,udp6:[::1]:161

# Configurar comunidad de "sólo lectura"
# y restringir quién se puede conectar
rocommunity clavecomunidadxxx  127.0.0.1

# Información sobre este servidor
sysLocation    info del nodo
sysContact     [email protected]

# Cuáles capas OSI están activas
# (applicación + extremo a extremo)
sysServices    72

# Incluye MIB de dskTable que es propietario (además de hrStorageTable)
includeAllDisks  10%

Reiciamos el SNMP

/etc/init.d/snmpd restart

Ahora, esto mismo debemos de hacer el los server que deseamos gestionar por SNMP, en los Router, Access Point, Swith y otros, deben de crear la comunidad que pusieron en el rocommunity del zabbix.

#  Escuchar en todas las interfaces (en IPv4 *e* IPv6)
agentAddress udp:161,udp6:[::1]:161

# Configurar comunidad de "sólo lectura"
# y restringir quién se puede conectar
rocommunity NetManage  ip-del-zabbix/32
rocommunity NetManage  127.0.0.1

# Información sobre este servidor
sysLocation    EEPF Network Indio Hatuey
sysContact     [email protected]

# Cuáles capas OSI están activas
# (applicación + extremo a extremo)
sysServices    72

# Incluye MIB de dskTable que es propietario (además de hrStorageTable)
includeAllDisks  10%

Hasta aquí tenemos nuestro Zabbix en función, en próximo manual comenzaremos agregar plantillas, host, alertas y si algunos desean lo ponemos mas chulo.

Espero lograr ayudar a los que se inclinan por esta poderosa herramienta.

Suscríbete · Newsletter

Mantente al día, cada semana

Artículos prácticos sobre Linux, redes, seguridad, virtualización y la nube — escritos por sysadmins cubanos.

  • Guías y tutoriales de administración de sistemas
  • Nuevos artículos sobre servidores, redes y nube
  • Sin spam, cancela cuando quieras

Respetamos tu bandeja de entrada. Cancela con un clic.

Patrocinado por SYSCU

¿Tu infraestructura en la nube te cuesta de más?

SYSCU optimiza tu nube de punta a punta — FinOps, DevOps & CI/CD, migraciones a AWS, seguridad y observabilidad. Equipo 100 % senior que reduce tu factura hasta un 40 % y acelera tus despliegues en semanas.

Nuevo · BetaSYSCU Atlas Insight — la plataforma FinOps que convierte tu gasto AWS en decisiones: visibilidad multi-cuenta, recomendaciones automáticas y alertas de anomalías.

No comments yet