Skip to content
Esta página foi traduzida com IA e pode conter imprecisões. Ajude a melhorar no GitHub.

Central de notificações ​

A Central de notificações assina o barramento interno de eventos do Gately e, de acordo com as suas regras, envia eventos como mudanças de DDNS, expiração de certificados, bloqueios do WAF e falhas de processos para Webhook, Telegram, Bark, ntfy, Gotify, Pushover, Discord, Slack, ServerChan, PushPlus, WeCom, DingTalk, Feishu e e-mail. A interface de administração fica no grupo "Sistema" da barra lateral → "Notificações".

Como funciona ​

  1. Cada módulo publica eventos no barramento de eventos do processo quando o seu estado muda. A publicação nunca bloqueia a lógica de negócio.
  2. Quando a Central de notificações recebe um evento, ela verifica as regras uma a uma: a regra está ativada, o nível do evento não é menor que o nível mínimo da regra e o tipo do evento coincide com a lista de eventos da regra.
  3. Depois que uma regra correspondente passa pela desduplicação de silêncio, a mensagem é entregue aos canais ativados selecionados pela regra. Se um evento corresponde a várias regras, cada canal recebe a mensagem apenas uma vez.
  4. O resultado de cada envio (sucesso ou o motivo da falha) é gravado em "Envios recentes", que mantém em memória as últimas 200 entradas. As falhas também são gravadas no log do módulo.

Um único envio expira em 45 segundos.

Canais ​

Clique em "Adicionar canal", escolha um tipo e preencha os campos. Todo canal tem um nome (obrigatório), uma observação e uma chave de ativação. Campos secretos não são exibidos de novo após salvar; deixá-los em branco ao editar mantém o valor original.

TipoCampos obrigatóriosCampos opcionais
WebhookURL da requisiçãoMétodo da requisição (padrão GET; GET, POST, PUT ou PATCH), cabeçalhos (um Chave: Valor por linha), corpo, conteúdo de correspondência de sucesso, timeout (segundos, padrão 20), ignorar a validação do certificado
TelegramBot Token, Chat IDURL da API (deixe em branco para usar https://api.telegram.org)
BarkDevice KeyURL do servidor (deixe em branco para usar https://api.day.app)
WeComURL do botNenhum
DingTalkURL do botSegredo de assinatura (preencha quando o bot tem "assinatura" ativada)
FeishuURL do botSegredo de assinatura (preencha quando o bot tem "verificação de assinatura" ativada)
E-mailServidor, destinatários e pelo menos um entre remetente ou usuárioCriptografia, porta, usuário, senha
ntfyTópicoURL do servidor (em branco usa https://ntfy.sh), token de acesso
GotifyURL do servidor, token do aplicativoNenhum
PushoverToken do aplicativo, User KeyNenhum
DiscordURL do webhookNenhum
SlackURL do webhookNenhum
ServerChanSendKeyNenhum
PushPlusTokenNenhum

Os campos de URL exigem um endereço completo começando com http:// ou https://.

Variáveis de template do Webhook ​

As variáveis abaixo podem ser usadas na URL da requisição e no corpo, escritas como o nome da variável entre chaves (a forma com prefixo # também é aceita):

VariávelConteúdo
titleTítulo, no formato [Gately] Título do evento
messageDescrição detalhada do evento
textCorpo completo, incluindo descrição, origem, nível e hora
typeTipo do evento, como ddns.changed
sourceOrigem do evento
levelNível: info, warn ou error
timeHora no formato RFC 3339

Campos extras que um evento carrega (como ip e container) também podem ser usados como variáveis. Se um nome colidir com a tabela acima, a tabela acima tem precedência. Os valores das variáveis na URL passam por escape de URL.

E-mail ​

CriptografiaValorPorta padrão
STARTTLSstarttls587
SSL/TLStls465
Nenhumanone25

Uma porta 0 usa a porta padrão da criptografia escolhida. Você pode informar vários destinatários separados por vírgula. Os e-mails são enviados em texto simples UTF-8. A autenticação PLAIN é usada quando o servidor oferece AUTH e um usuário está definido; quando o remetente está em branco, o usuário é usado.

Assinaturas e códigos de resposta ​

  • DingTalk: depois de definido um segredo de assinatura, as requisições levam timestamp e sign automaticamente.
  • Feishu: depois de definido um segredo de assinatura, o corpo da requisição leva timestamp e sign automaticamente.
  • WeCom, DingTalk, Feishu e Bark verificam o código de retorno de negócio na resposta. Um HTTP 200 com falha de negócio também é registrado como envio com falha.

Regras ​

Clique em "Adicionar regra":

CampoDescrição
NomeObrigatório
EventosPelo menos um. Escolha tipos de evento específicos, * para todos os eventos ou informe um curinga como ddns.*. Os curingas usam a sintaxe path.Match do Go
Nível mínimoinfo, warn ou error; em branco significa info. Eventos abaixo desse nível não são enviados
CanaisPelo menos um
Silêncio (segundos)Dentro de uma mesma regra, eventos do mesmo tipo e da mesma origem são enviados apenas uma vez nesse período, e as repetições são descartadas. 0 desativa a desduplicação
AtivadaChave

Dica

Bloqueios do WAF e mudanças de estado de upstream podem ocorrer com frequência. Nas regras que os cobrem, defina um tempo de silêncio de 300 segundos ou mais.

Modelos de regra ​

Ao criar uma regra, clique em um modelo para preencher eventos, nível e tempo de silêncio; depois escolha os canais e salve:

ModeloEventos
Falhas críticasFalha na atualização de DDNS, falha na renovação de certificado, upstream indisponível, subprocesso encerrado de forma anormal, falha de backup, contêiner encerrado
Expiração de certificadosCertificado prestes a expirar, falha na renovação (silêncio de 24 horas)
Mudanças de endereçoRegistro DDNS atualizado, endereço STUN alterado
Saúde dos serviçosUpstream indisponível e recuperado, contêiner encerrado, subprocesso encerrado
Segurança e loginsFalha de login, IP banido, login bem-sucedido, acesso a conteúdo sensível
Alterações de configuraçãoCada alteração de configuração na interface de administração

Tipos de evento ​

Tipo de eventoNomeNívelGatilho
ddns.changedDNS dinâmico: registro atualizadoInfoUma tarefa de DDNS atualizou o seu registro com sucesso
ddns.failedDNS dinâmico: falha na atualizaçãoErroUma tarefa de DDNS falhou ao atualizar
stun.changedSTUN: endereço de travessia alteradoInfoO endereço de travessia de uma regra STUN mudou
ssl.expiringCertificado: expira em breveAvisoRestam menos de 7 dias de validade; cada certificado é lembrado no máximo uma vez a cada 24 horas
ssl.renew_failedCertificado: falha na renovaçãoErroA emissão ou renovação do certificado falhou
waf.blockedWAF: requisição bloqueadaAvisoO WAF bloqueou uma requisição, com os campos ip, host e path
upstream.downProxy reverso: upstream fora do arErroUm backend de um serviço Web foi considerado indisponível
upstream.upProxy reverso: upstream recuperadoInfoUm backend indisponível se recuperou
docker.exitedDocker: contêiner encerradoAviso ou ErroUm contêiner terminou com código de saída diferente de zero (aviso) ou foi encerrado por falta de memória (erro)
process.exitedProcesso filho encerrado de forma anormalErroUm processo filho gerenciado pelo Gately terminou de forma anormal e será reiniciado automaticamente; a origem é o nome do log desse processo
backup.doneBackup: concluídoInfoUm backup agendado ou manual foi bem-sucedido em todos os destinos; veja Backup da configuração
backup.failedBackup: falhouErroO empacotamento do backup falhou, ou a gravação em algum destino falhou
auth.failedAutenticação: falhas repetidasAvisoUm login na interface de administração falhou, com o campo ip
auth.bannedAutenticação: IP banidoAvisoFalhas repetidas de autenticação em serviços Web dispararam um banimento automático
login.successInterface de administração: login bem-sucedidoInfoUm login na interface de administração foi bem-sucedido, com os campos ip e user
audit.changeInterface de administração: alteração de configuraçãoInfoQualquer operação de alteração na interface de administração, com os campos actor, ip, method e path; veja Auditoria e histórico de configuração
audit.accessInterface de administração: acesso a conteúdo sensívelAvisoDownload de backup, pacote de diagnóstico ou chave privada de certificado, abertura de terminal etc.; mesmos campos
notify.testNotificação de testeInfoGerada pelo botão "Testar" do canal; não participa da correspondência de regras

Enviar um teste ​

O botão "Testar" no cartão de um canal envia diretamente a esse canal uma mensagem com o título "Notificação de teste". Ele ignora as regras e funciona mesmo que o canal não esteja ativado. Em caso de sucesso, aparece "Notificação de teste enviada"; em caso de falha, o erro específico é exibido. Os resultados dos testes também aparecem em "Envios recentes", com "Teste" na coluna da regra.

A API correspondente é POST /api/notify/channels/{key}/test, que pode ser chamada com o escopo notify:write de um token de API.

Distribuído sob a licença Apache-2.0.