Como Auditar o Volume de Tráfego de Relés em uma Instância Mastodon
🔍 WiseChecker

Como Auditar o Volume de Tráfego de Relés em uma Instância Mastodon

Administradores de instâncias Mastodon frequentemente precisam entender quanto tráfego de rede os relés geram. Relés distribuem postagens públicas entre vários servidores, o que pode consumir largura de banda e armazenamento significativos. Sem auditorias regulares, um único relé mal configurado pode degradar o desempenho da instância para todos os usuários. Este artigo explica como auditar o volume de tráfego de relés usando ferramentas internas do Mastodon e consultas PostgreSQL.

Principais Conclusões: Auditando Tráfego de Relés no Mastodon

  • Página Administração > Relés: Lista todos os relés conectados com status e indicadores básicos de atividade.
  • Consulta PostgreSQL na tabela relays: Recupera o total de bytes recebidos e enviados por relé para medição precisa do volume.
  • Monitoramento da fila Sidekiq: Mostra como os jobs de processamento de relés afetam a taxa de transferência e a latência da instância.

Entendendo o Tráfego de Relés no Mastodon

Relés no Mastodon funcionam como hubs de atividade que encaminham postagens públicas de um servidor para muitos outros. Quando você conecta um relé, sua instância envia todas as postagens públicas para o relé, e o relé envia de volta postagens de outras instâncias conectadas. Esse fluxo bidirecional pode resultar em altos volumes de tráfego, especialmente em relés populares com centenas de servidores membros.

Como os Relés Afetam o Desempenho da Instância

Cada conexão de relé adiciona dois fluxos de tráfego: saída (suas postagens enviadas ao relé) e entrada (postagens retransmitidas de outros servidores). O fluxo de entrada é tipicamente maior porque agrega conteúdo de todos os outros membros do relé. O tráfego de entrada alto pode encher o banco de dados com status federados, aumentar as filas de jobs do Sidekiq para processamento e consumir espaço em disco com anexos de mídia que seus usuários locais talvez nunca vejam.

Quais Dados a Tabela Relays Contém

O Mastodon armazena informações dos relés na tabela relays do banco de dados. As colunas principais para auditoria de tráfego são inbox_url, state, follow_activity_id e os timestamps created_at e updated_at. No entanto, a tabela não armazena contagens cumulativas de bytes por padrão. Para medir o volume de tráfego, você deve examinar as estatísticas de jobs do Sidekiq e logs do servidor, ou usar ferramentas de monitoramento externas como Prometheus.

Passos para Auditar o Volume de Tráfego de Relés

Os passos a seguir orientam você na auditoria de tráfego de relés usando a interface de administração do Mastodon, consultas PostgreSQL e monitoramento do Sidekiq. Execute esses passos no seu servidor Mastodon via SSH ou interface web.

  1. Acesse a Página de Administração de Relés
    Faça login na sua instância Mastodon como administrador. Vá para o painel de administração clicando no ícone de engrenagem no canto superior direito. Selecione Administração > Relés. Esta página exibe todos os relés aos quais sua instância está inscrita, junto com o estado atual (ativado, desativado ou pendente de aprovação). Anote o número total de relés e seus status.
  2. Verifique os Indicadores de Status dos Relés
    Na página de Relés, cada relé mostra um selo de status. Um selo verde significa que o relé está ativo e trocando tráfego. Um selo vermelho indica uma falha de conexão. Se um relé estiver desativado, ele não gera tráfego. Clique no nome do relé para ver sua URL de inbox. Copie a URL de inbox para o próximo passo.
  3. Consulte o Banco de Dados para Atividade do Relé
    Abra uma sessão de terminal no seu servidor Mastodon. Conecte-se ao banco de dados PostgreSQL usando o comando psql -d mastodon_production -U mastodon. Execute a seguinte consulta para listar todos os relés e seus últimos horários de atividade:
    SELECT id, inbox_url, state, created_at, updated_at FROM relays ORDER BY updated_at DESC;
    Esta consulta mostra quando cada relé enviou ou recebeu dados pela última vez. Um relé com um timestamp updated_at muito antigo pode estar ocioso ou desconectado.
  4. Meça o Tráfego de Entrada com Sidekiq
    O tráfego de relés é processado por workers do Sidekiq. Abra o painel do Sidekiq navegando para https://suainstancia.com/sidekiq (requer login de administrador). Vá para a aba Queues. Procure por filas chamadas push, pull e default. A fila push lida com entregas de saída do relé; a fila pull lida com o processamento de entrada do relé. Profundidades altas de fila em qualquer uma delas indicam tráfego intenso de relés. Anote a profundidade da fila e os valores de latência.
  5. Estime o Volume de Bytes a Partir dos Logs do Servidor
    O Mastodon registra requisições HTTP para o inbox do relé. No seu servidor, execute o seguinte comando para contar os bytes recebidos de um relé específico nas últimas 24 horas:
    sudo journalctl --unit=mastodon-web -S "24 hours ago" | grep "relay_inbox_url" | awk '{sum += $10} END {print sum}'
    Substitua relay_inbox_url pela URL de inbox real do passo 2. Este comando soma o cabeçalho Content-Length das requisições de entrada do relé. O resultado está em bytes. Repita para cada relé para comparar volumes.
  6. Compare o Tráfego Entre Relés
    Crie uma planilha simples com colunas para nome do relé, URL de inbox, estado, última atividade e bytes diários estimados. Preencha os dados dos passos 3, 4 e 5. Essa comparação ajuda a identificar qual relé consome mais largura de banda. Se um relé mostrar tráfego de entrada extremamente alto, considere desativá-lo ou substituí-lo por um relé mais restritivo.

Problemas Comuns ao Auditar Tráfego de Relés

Tráfego do Relé Não Aparece nos Logs

Se o comando journalctl não retornar resultados, o relé pode estar ocioso ou os logs do servidor web podem ter sido rotacionados antes da consulta. Verifique primeiro o timestamp updated_at no banco de dados. Se o relé foi atualizado recentemente mas os logs não mostram nada, sua configuração de logging pode excluir corpos de requisição. Certifique-se de que o serviço web do Mastodon esteja registrando no nível info ou superior.

Fila do Sidekiq Mostra Latência Alta Persistente

Uma profundidade de fila acima de 1000 com latência superior a 30 segundos indica que o tráfego do relé está sobrecarregando seus workers do Sidekiq. Para mitigar isso, reduza o número de relés conectados ou aumente o número de processos Sidekiq. Você também pode habilitar a gem sidekiq-throttled para limitar a taxa de processamento de relés. Desative qualquer relé que não seja essencial para sua comunidade.

Consulta ao Banco de Dados Não Retorna Relés

Se a tabela relays estiver vazia, sua instância nunca se inscreveu em nenhum relé. Isso é normal para instâncias pequenas. Para começar a usar relés, vá em Administração > Relés e clique em Adicionar novo relé. Insira a URL de inbox do relé de uma lista confiável. Após adicionar, repita os passos de auditoria para monitorar o tráfego.

Fontes de Tráfego de Relés no Mastodon: Entrada vs Saída

Item Tráfego de Entrada Tráfego de Saída
Direção Do relé para sua instância Da sua instância para o relé
Conteúdo Postagens públicas de todos os outros membros do relé Postagens públicas dos seus usuários locais
Volume típico 10 a 100 vezes maior que o de saída Proporcional à atividade dos seus usuários
Impacto no BD Alto: armazena status federados e mídia Baixo: apenas envia status já armazenados
Ferramenta de monitoramento Profundidade da fila pull do Sidekiq e bytes nos logs Profundidade da fila push do Sidekiq e bytes nos logs

Após concluir esta auditoria, você pode identificar relés que consomem muita largura de banda e decidir se deve mantê-los, desativá-los ou substituí-los. Agende regularmente esta auditoria a cada mês para detectar picos de tráfego precocemente. Para monitoramento avançado, considere integrar o Prometheus com o endpoint de métricas do Mastodon em /metrics para automatizar a coleta de tráfego e alertas.