2025-06-09 18:10:36 -03:00
2025-06-09 17:54:31 -03:00
2025-06-09 10:07:51 -03:00

Zabbix

📌 Sobre o Projeto

Um compose personalizado do zabbix para instalar pacotes sem a necessidade de um re-build, neste arquivo, utilizo uma versão mais leve do sistema, instalo o mtr, adicionado sistema de alertar walert para envio de alertas via whatsapp.


🚀 Como Usar

  • Acesse seu terminal;
  • Clone o repositorio:
 sudo git clone https://git.instantti.com.br/instant/zabbix.git
  • acesse o diretorio:
 cd zabbix/
  • Execute o comando:
 sudo chmod +x data/alertscripts/walert && \
 docker-compose up -d

Via Portainer

  • Para portainer, crie uma nova stack com o conteudo abaixo:
---
services:
  zbx-postgres:
    image: postgres:alpine
    container_name: zbx-postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: zabbix
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: zabbix
    volumes:
      - ./db:/var/lib/postgresql/data
    networks:
      - zbx-net

  zbx-server:
    image: zabbix/zabbix-server-pgsql:alpine-latest
    container_name: zbx-server
    restart: unless-stopped
    user: root
    environment:
      DB_SERVER_HOST: zbx-postgres
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: zabbix
      ZBX_CACHESIZE: 8G
      ZBX_STARTPOLLERS: 19
      ZBX_HOSTNAME: "zbx-server"
      ZBX_TIMEOUT: 10
    volumes:
      - "./data/alertscripts:/usr/lib/zabbix/alertscripts"
      - "./data/externalscripts:/usr/lib/zabbix/externalscripts"
      - "./data/modules:/var/lib/zabbix/modules"
      - "./data/snmptraps:/var/lib/zabbix/snmptraps"
      - "./data/mibs:/var/lib/zabbix/mibs"
      - "./data/export:/var/lib/zabbix/export"
      - "/etc/localtime:/etc/localtime:ro"
      - "./zabbix-init.sh:/usr/local/bin/zabbix-entrypoint.sh"
    depends_on:
      - zbx-postgres
    entrypoint: ["/usr/local/bin/zabbix-entrypoint.sh"]
    command: ["docker-entrypoint.sh"]
    networks:
      - zbx-net

  zbx-web:
    image: zabbix/zabbix-web-nginx-pgsql:alpine-latest
    container_name: zbx-web
    restart: unless-stopped
    environment:
      DB_SERVER_HOST: zbx-postgres
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: zabbix
      ZBX_SERVER_HOST: zbx-server
      ZBX_MEMORYLIMIT: 512M
      ZBX_SERVER_NAME: Instant
      PHP_TZ: "America/Sao_Paulo"
    depends_on:
      - zbx-server
    ports:
      - 14201:8080
    networks:
      - zbx-net

  zbx-agent:
    image: zabbix/zabbix-agent:alpine-latest
    container_name: zbx-agent
    restart: unless-stopped
    user: root
    environment:
      - ZBX_SERVER_HOST=zbx-server,zbx-agent
      - ZBX_SERVER=zbx-server
      - ZBX_HOSTNAME=zbx-server
      #- ZBX_DEBUGLEVEL=5
      - ZBX_LISTENIP=0.0.0.0
    volumes:
      - "./data/agent:/etc/zabbix/zabbix_agentd.d"
      - "./data/agentmodules:/var/lib/zabbix/modules"
      - "/etc/localtime:/etc/localtime:ro"
    depends_on:
      - zbx-server
    networks:
      zbx-net:
        aliases:
          - zbx-agent
          - zbx-agent-passive
          - zbx-agent-ubuntu

  zbx-walert:
    container_name: zbx-walert
    image: grandow/walert
    restart: always
    ports:
      - 14211:4000
    volumes:
      - "./tokens:/opt/whatsapp/tokens"
    environment:
      - TZ=America/Sao_Paulo
    healthcheck:
      test: ["CMD", "bash", "-c", "curl -s http://localhost:4000/status | grep -o 'successChat' || exit 1"]
      interval: 10s
      timeout: 5s
      start_period: 60s
      retries: 5
    networks:
      - zbx-net

networks:
  zbx-net:
  • Criar um arquivo chamado zabbix-init.sh com o conteudo abaixo:
#!/bin/sh
echo "[INIT] Instalando mtr no container..."
apk update && apk add --no-cache mtr
echo "[INIT] Executando entrypoint original..."
# Usa exec sem su, preservando variáveis de ambiente como DB_SERVER_HOST
exec /usr/bin/docker-entrypoint.sh /usr/sbin/zabbix_server --foreground -c /etc/zabbix/zabbix_server.conf
  • Após criar o arquivo execute os seguintes comandos:
chmod +x zabbix-init.sh && chmod 755 zabbix-init.sh
  • Inicie a imagem.
  • Ja dentro do zabbix, importe o walert.xml em Alertas > Tipos de midias.
  • Crie uma nova ação de trigger em: Alertas > Ações > Ações de Trigger
    • Nome: Notificacoes Walert
    • Aba: Ações:

      • Adicione uma nova condição:
        • Tipo: Incidente não suprimido
        • Operador: Não.
    • Aba: Operações:

      • Adicione uma nova condição:
        • Enviar aos usuarios: Admin
        • Enviar aos tipos de midia (selecione): Walert.

Tip

  • Garanta que todas as pastas / volumes estejam criados e com as corretas permissões configuradas.

##👤 Autores

  • William grando.
  • Agradecimento a Fernando Almondes (Bee Solutions), serviu como base para este projeto.
Description
No description provided
Readme 471 KiB
Languages
Shell 100%