O maior portal de MU Online do Brasil — desde 2003
Tutorial Intermediário Infra

Como configurar alertas de incidente via Telegram para o seu servidor de MU Online

Monte um sistema de alertas via bot do Telegram para ser avisado em segundos quando o GameServer, MySQL ou site do seu servidor de MU Online caírem, com scripts de monitoramento, escalonamento e teste de falha controlado.

GA Gabriel · Atualizado em 31 jul 2026 · ⏱ 15 min de leitura
Resposta rápida

Quando o GameServer cai às 3 da manhã e ninguém percebe até os jogadores começarem a reclamar no Discord, o custo não é só técnico — é reputacional, e em servidores monetizados, também financeiro (doações e eventos pagos interrompidos sem aviso). Um sistema de alertas via Telegram resolve esse ponto

Quando o GameServer cai às 3 da manhã e ninguém percebe até os jogadores começarem a reclamar no Discord, o custo não é só técnico — é reputacional, e em servidores monetizados, também financeiro (doações e eventos pagos interrompidos sem aviso). Um sistema de alertas via Telegram resolve esse ponto cego, avisando a equipe de administração em segundos, direto no celular, sem depender de alguém estar de olho em um painel. Este tutorial mostra como criar o bot, escrever os scripts de verificação dos serviços críticos do seu servidor de MU Online, configurar escalonamento e testar falhas de forma controlada antes de confiar no sistema em produção.

Por que Telegram e não e-mail ou SMS

E-mail tem atraso de entrega variável e frequentemente cai em spam quando enviado por script automatizado sem infraestrutura de SMTP reputada. SMS tem custo por mensagem e não escala bem para alertas frequentes. O Telegram, por outro lado, oferece uma API de bot gratuita, entrega quase instantânea via push notification no celular, e suporta grupos com múltiplos administradores recebendo o mesmo alerta simultaneamente — é o canal mais usado hoje por administradores de servidores privados justamente por essa combinação de custo zero e velocidade.

Criando o bot no Telegram

  1. Abra uma conversa com o @BotFather dentro do Telegram.
  2. Envie /newbot e siga as instruções, definindo um nome (ex.: "ViciadosMU Monitor") e um username terminado em "bot" (ex.: viciadosmu_monitor_bot).
  3. O BotFather retorna um token no formato 123456789:ABCdefGhIJKlmNoPQRsTUvwxYZ — guarde-o com o mesmo cuidado de uma senha de banco de dados.
  4. Crie um grupo do Telegram com os administradores e adicione o bot a esse grupo.
  5. Descubra o chat_id do grupo acessando https://api.telegram.org/bot<TOKEN>/getUpdates depois de enviar qualquer mensagem no grupo — o chat_id do grupo aparece no JSON retornado (geralmente um número negativo).

Estrutura de monitoramento: o que checar no servidor de MU

ServiçoO que verificarSinal de falha
GameServerProcesso ativo e porta escutando (ex.: 55901)Processo morto ou porta fechada
MySQL/MariaDBConexão e resposta de query simples (SELECT 1)Timeout ou erro de conexão
ConnectServerPorta de entrada (ex.: 44405) respondendoPorta fechada
Site/painelHTTP 200 na home e na página de loginStatus diferente de 200 ou timeout
Uso de RAM/CPU do hostPercentual acima de limiar (ex.: 90%)Recurso saturado, risco de queda iminente
Espaço em discoPercentual livre abaixo de limiar (ex.: 10%)Log ou backup enchendo o disco

Script de verificação em Bash (Linux)

Um script simples, rodado por cron a cada minuto, cobre a maior parte dos casos:

#!/bin/bash
# monitor_mu.sh
TOKEN="123456789:ABCdefGhIJKlmNoPQRsTUvwxYZ"
CHAT_ID="-1001234567890"
STATE_FILE="/tmp/mu_monitor_state"

send_alert() {
    local message="$1"
    curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
        -d chat_id="${CHAT_ID}" \
        -d text="${message}" \
        -d parse_mode="Markdown" > /dev/null
}

check_process() {
    local name="$1"
    local proc="$2"
    if ! pgrep -f "${proc}" > /dev/null; then
        if ! grep -q "${name}_DOWN" "${STATE_FILE}" 2>/dev/null; then
            send_alert "🔴 *ALERTA*: ${name} caiu no servidor!"
            echo "${name}_DOWN" >> "${STATE_FILE}"
        fi
    else
        if grep -q "${name}_DOWN" "${STATE_FILE}" 2>/dev/null; then
            send_alert "🟢 *RECUPERADO*: ${name} voltou ao normal."
            sed -i "/${name}_DOWN/d" "${STATE_FILE}"
        fi
    fi
}

check_process "GameServer" "GameServer"
check_process "ConnectServer" "ConnectServer"
check_process "MySQL" "mysqld"

Salve como /opt/scripts/monitor_mu.sh, dê permissão de execução (chmod +x) e agende no cron:

* * * * * /opt/scripts/monitor_mu.sh

Monitorando o site e o painel

Para checar disponibilidade HTTP, adicione uma função equivalente usando curl com verificação de código de status:

check_http() {
    local name="$1"
    local url="$2"
    local status
    status=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "${url}")
    if [ "${status}" != "200" ]; then
        send_alert "🔴 *ALERTA*: ${name} respondeu com status ${status} (esperado 200)."
    fi
}

check_http "Site principal" "https://www.viciadosmu.com.br"
check_http "Painel de login" "https://www.viciadosmu.com.br/login"

Evitando fadiga de alerta com cooldown

Enviar um alerta a cada minuto enquanto o serviço está fora do ar torna o canal inútil rapidamente — a equipe passa a silenciar as notificações. O padrão usado no script acima (arquivo de estado STATE_FILE) resolve isso: o alerta só é reenviado quando o estado muda (de "up" para "down" ou vice-versa), não a cada execução do cron. Para casos que exigem lembretes periódicos durante incidentes longos, adicione um segundo timestamp que dispara um "lembrete" a cada 30 minutos enquanto o serviço permanecer fora do ar.

Escalonamento por severidade

Nem todo alerta tem a mesma urgência. Separe por nível de severidade para não misturar um alerta de "disco 85% cheio" com "GameServer caiu":

NívelExemploAção sugerida
CríticoGameServer, ConnectServer ou MySQL caíramEnvio imediato + menção a todos (@all no grupo, se suportado)
AltoSite fora do ar, latência altaEnvio imediato para o grupo
AtençãoDisco acima de 80%, RAM acima de 85%Envio único diário, sem repetição
InformativoBackup concluído, deploy realizadoCanal separado, sem push urgente

Crie grupos ou tópicos separados no Telegram por nível, para que alertas críticos não se percam entre mensagens informativas de rotina.

Testando o sistema antes de confiar nele

Nunca confie em um sistema de alertas que nunca disparou de propósito. Faça um teste controlado: pare manualmente o GameServer em um horário de baixo movimento (systemctl stop gameserver ou kill no processo), confirme que o alerta chega no Telegram em menos de 1 minuto, suba o serviço novamente e confirme que o alerta de "recuperado" também dispara. Repita o teste para o MySQL e para o site, simulando queda de cada um isoladamente.

Integrando com logs específicos do emulador

Além de processos e portas, muitos emuladores geram arquivos de log com erros específicos (falha de autenticação em massa, erro de conexão com o banco de contas, exceções não tratadas). Um tail -F combinado com grep em um loop pode disparar alertas quando padrões de erro conhecidos aparecerem:

tail -F /home/mu/GameServer/Log/error.log | while read -r line; do
    if echo "${line}" | grep -qi "database connection failed"; then
        send_alert "⚠️ Log do GameServer reportou falha de conexão com o banco."
    fi
done

Rode esse loop como um serviço systemd separado, não dentro do cron principal, já que ele fica em execução contínua.

Boas práticas de segurança do bot

Nunca deixe o token do bot em um repositório público ou em um script acessível via URL do site. Trate-o como uma credencial: armazene em variável de ambiente ou arquivo com permissão restrita (chmod 600). Se o token vazar, revogue-o imediatamente pelo BotFather (/revoke) e gere um novo, atualizando todos os scripts que o utilizam.

Erros comuns e soluções

SintomaCausa provávelSolução
Bot não envia mensagemToken ou chat_id incorretosConfirme o token no BotFather e o chat_id via getUpdates
Alertas duplicados a cada minutoFalta de controle de estado (cooldown)Implemente arquivo de estado para não repetir o mesmo alerta
Alerta não chega durante queda realCron não está rodando ou script travadoVerifique crontab -l e logs do cron; adicione monitoramento do próprio monitor
Mensagem chega cortada ou sem formataçãoparse_mode incompatível com caracteres usadosEscape caracteres especiais do Markdown ou use HTML como parse_mode
Token exposto publicamenteScript commitado em repositório públicoRevogue o token no BotFather e mova credenciais para variável de ambiente

Checklist de implantação dos alertas

  • Bot criado no BotFather e token armazenado com segurança.
  • Grupo do Telegram criado com os administradores e chat_id identificado.
  • Script de verificação de processos (GameServer, ConnectServer, MySQL) agendado no cron.
  • Verificação HTTP do site e painel configurada.
  • Cooldown/estado implementado para evitar fadiga de alerta.
  • Níveis de severidade definidos e separados por canal/tópico.
  • Teste controlado de queda e recuperação realizado para cada serviço.
  • Monitoramento do próprio monitor (watchdog) configurado.

Com os alertas rodando de forma confiável, o próximo passo é conectar esse monitoramento à rotina geral de operação do servidor descrita no tutorial de como criar um servidor de MU Online, garantindo que infraestrutura, jogo e comunidade estejam todos cobertos pelo mesmo processo de resposta a incidentes.

Perguntas frequentes

Preciso pagar para usar bot do Telegram para alertas?

Não, a API de bots do Telegram é gratuita e não tem limite prático de uso para o volume de alertas de um servidor de MU. O único custo é o servidor/VPS que roda o script de monitoramento, que geralmente já existe na sua infraestrutura.

Qual a diferença entre monitorar via Telegram e usar um serviço como UptimeRobot?

Serviços como UptimeRobot verificam de fora se a porta/site responde, o que é ótimo para disponibilidade externa. Um script próprio rodando dentro do servidor pode checar coisas específicas do MU, como processos travados, uso de RAM do GameServer ou falhas de replicação do MySQL, que um monitor externo genérico não enxerga.

O bot consegue avisar authenticação de múltiplos administradores ao mesmo tempo?

Sim, você pode enviar a mesma mensagem para um grupo do Telegram com todos os admins, ou para múltiplos chat_id individuais. Grupos são mais simples de manter porque não exigem atualizar a lista de destinatários no script sempre que alguém entra ou sai da equipe.

Como evito ser inundado de alertas repetidos durante uma queda longa?

Implemente um cooldown (ex.: não reenviar o mesmo alerta por 15 minutos) e um alerta de 'recuperado' quando o serviço voltar. Isso evita fadiga de alerta, que é quando o admin passa a ignorar as notificações por excesso de ruído.

Dá para integrar esse sistema com o painel do jogo (IGCN, MuEMU) diretamente?

Sim, se o painel expõe alguma API ou log de erro, você pode ler esses arquivos/endpoints no mesmo script de monitoramento e disparar alertas específicos, como queda de conexão com o banco de contas ou erro de autenticação em massa.

GA
Editor de guias e builds

Gabriel cobre gameplay, builds de classes, PvP e progressão. Testa cada estratégia em servidor antes de publicar.

Continue lendo

Artigos relacionados