From 16adbaf201253aa42abf57007e642c6c4831cda6 Mon Sep 17 00:00:00 2001 From: William Grando Date: Mon, 9 Jun 2025 18:42:11 -0300 Subject: [PATCH] Como usar mais completo. --- readme.md | 166 +++++++++++++----------------------------------------- 1 file changed, 40 insertions(+), 126 deletions(-) diff --git a/readme.md b/readme.md index 9daf3a7..29367d2 100644 --- a/readme.md +++ b/readme.md @@ -27,124 +27,8 @@ Um compose personalizado do zabbix para instalar pacotes sem a necessidade de um ``` #### Via Portainer - - - Para portainer, crie uma nova stack com o conteudo abaixo: - - -```yaml ---- -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: - -```shell + - 1° Criar um arquivo chamado **zabbix-init.sh** com o conteudo abaixo: + ```shell #!/bin/sh echo "[INIT] Instalando mtr no container..." apk update && apk add --no-cache mtr @@ -152,15 +36,34 @@ 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: - + - 2° Ajuste as permissões do arquivo criado com o comando: ```shell 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** + + - 3° Crie o arquivo com o gatilho de envio de mensagens com os comandos abaixo: + ```shell +mkdir -p -v data/alertscripts && touch data/alertscripts/walert && chmod +x data/alertscripts/walert + ``` + - 4° Copie todo conteudo de **data/alertscripts/walert** do repositorio, para dentro do arquivo **walert** que foi criado no passo anterior: + ```shell + #!/bin/bash +# Baseado em BEEZAP - Bee Solutions. + +URL="http://zbx-walert:4000/api/send" +PHONE="$1" +TITULO="$2" +MESSAGE="$TITULO$3" + +wget -q -O- --post-data "{\"number\": \"${PHONE}\", \"message\": \"${MESSAGE}\"}" "$URL" --header "content-type: application/json" + ``` + + - 4° Dentro do portainer, crie uma nova stack com o conteudo de **docker-compose.yml** + - 5° Aguarde todos os containers da stack iniciarem corretamente. + - 6° Abra pagina do zabbix no seu browser: **http://seuip:14201** + - 7° Ja dentro do zabbix, importe o **walert.xml** em Alertas > Tipos de midias. + - 7,5° Abra em outra aba do seu browser: **http://seuip:14201/status** e scaneie o QrCode pra logar no whatsapp + - 8° 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: @@ -168,14 +71,25 @@ chmod +x zabbix-init.sh && chmod 755 zabbix-init.sh - Operador: **Não**. - Aba: **Operações**: - * Adicione uma nova condição: + * Adicione uma nova condição em (**Operação**): - **Enviar aos usuarios**: Admin - Enviar aos tipos de midia (selecione): **Walert**. + * Repita o processo acima para condição (**Operação Recuperação**) + - 9° Va em Usuarios > usuarios > Admin (selecione) > Midia + * Adicione uma nova midia: + - Tipo: **Walert** + - Enviar para: 55 + - Usar severidade: **Atenção**, **Média**, **Alta**, **Desastre** + - Adicionar + * De um atualizar. + - 10° Teste, Adicione um host ficticio agente snmp e template: **icmp-ping** pra ser mais rapido. -- >[!TIP] > - Garanta que todas as pastas / volumes estejam criados e com as corretas permissões configuradas. +> - **Nos passos 8° e 9° As opções podem e devem ser customizadas para o seu cenário.** +> - **No passo 7,5° atente-se porque o codigo é invalidado a cada 1minuto, caso não funcione, reinicie a stack e pule direto pra teste passo.** ##👤 Autores - - William grando. + - William Grando. - Agradecimento a Fernando Almondes (Bee Solutions), serviu como base para este projeto. \ No newline at end of file