Quando uma instância do Mastodon defedera outra, as atividades recebidas dessa instância param de chegar. Mas o efeito no seu servidor pode ser sutil, especialmente se você não monitora ativamente os logs de federação. Uma maneira confiável de detectar uma defederação é examinando os padrões de filas do Sidekiq. O Sidekiq é o processador de tarefas em segundo plano que o Mastodon usa para lidar com atividades recebidas e enviadas. Quando uma instância é defederada, as filas que processam mensagens de federação recebidas dessa instância mostram uma queda repentina ou uma parada completa. Este artigo explica como ler os dados das filas do Sidekiq na interface de administração do Mastodon para identificar um evento de defederação.
Principais Conclusões: Detectando Defederação via Filas do Sidekiq
- Painel de administração do Sidekiq em /sidekiq/queues: Mostra a profundidade das filas e as taxas de processamento em tempo real para todas as filas relacionadas à federação.
- Padrão de nomes de filas
pullepush: Atividades recebidas usam filaspull; atividades enviadas usampush. Uma defederação bloqueia o tráfegopullda instância remota. - Dados históricos das filas nas estatísticas do Sidekiq: A página /sidekiq/statistics mostra a contagem de tarefas processadas ao longo do tempo, revelando uma queda após uma defederação.
Por que os Padrões de Filas do Sidekiq Revelam Defederação
O Mastodon usa o Sidekiq para processar atividades de federação de forma assíncrona. Quando uma instância remota envia uma atividade para o seu servidor, ela entra em uma fila do Sidekiq chamada pull (ou uma subfila como pull:default). O worker do Sidekiq então processa essa atividade, como entregar uma nova postagem na timeline de um usuário local. Se sua instância defedera uma instância remota, seu servidor para de aceitar atividades recebidas dessa instância. A fila pull do Sidekiq não receberá mais novas tarefas dessa instância remota. Com o tempo, a profundidade da fila para essa fonte específica cairá para zero e permanecerá assim. Por outro lado, as filas de outras instâncias remotas continuarão mostrando atividade.
O ponto principal é que uma defederação não exclui tarefas existentes na fila. Ela apenas impede que novas tarefas sejam enfileiradas dessa fonte. Portanto, se você vir uma fila que antes estava ativa e agora está completamente ociosa, e o timestamp da última tarefa processada é do momento da ação de defederação, isso é uma forte evidência de defederação.
Entendendo a Nomenclatura das Filas do Sidekiq no Mastodon
O Mastodon organiza as filas do Sidekiq por função. As filas relevantes para detectar defederação são:
- pull — processa atividades de federação recebidas (postagens, curtidas, seguidores) de instâncias remotas
- push — processa atividades de federação enviadas para instâncias remotas
- default — tarefas gerais, incluindo algumas tarefas de manutenção relacionadas à federação
Cada fila pode ter subfilas nomeadas com dois pontos, como pull:default. Em uma implantação padrão do Mastodon, você verá essas filas listadas na interface de administração do Sidekiq em https://sua-instancia.exemplo/sidekiq/queues.
Passos para Detectar Defederação Usando Padrões de Filas do Sidekiq
- Acesse a Interface de Administração do Sidekiq
Faça login no seu servidor Mastodon como administrador. Navegue atéhttps://sua-instancia.exemplo/sidekiq. Se você não configurou uma rota para a interface web do Sidekiq, pode ser necessário acessá-la via SSH e redirecionamento de porta. A interface web padrão do Sidekiq roda na porta 3000 na máquina local. Usessh -L 3000:localhost:3000 usuario@seu-servidore depois abrahttp://localhost:3000no seu navegador. - Verifique a Aba Queues
Clique na aba Queues no topo da interface do Sidekiq. Você verá uma lista de todas as filas com sua profundidade atual (número de tarefas esperando). Procure por filas chamadaspulloupull:default. Anote a profundidade de cada fila. Se alguma filapullmostrar profundidade zero e não processou uma tarefa nos últimos minutos, isso indica que nenhuma atividade recebida está sendo recebida da instância remota correspondente. - Examine o Histórico da Fila
Clique no nome de uma fila específica para ver seu histórico. O Sidekiq mostra um gráfico de tarefas processadas ao longo do tempo. Procure por uma queda brusca nas tarefas processadas. Se a queda coincidir com o momento em que você suspeita que uma defederação foi aplicada, isso é um forte indicador. Por exemplo, se o gráfico mostra 50 tarefas por minuto constantes antes das 14:00 UTC e zero tarefas depois, a defederação provavelmente ocorreu às 14:00 UTC. - Compare com Outras Filas
Para confirmar que a defederação é específica da instância, compare o comportamento da filapullcom as filaspush. Uma defederação bloqueia apenas o tráfego recebido. A filapushpara a mesma instância ainda pode mostrar tarefas enviadas se seus usuários estão postando conteúdo que tenta alcançar essa instância. No entanto, essas tarefas enviadas provavelmente falharão e serão repetidas. Procure por um alto número de repetições na filapushpara essa instância. Esse padrão — zero recebidas, muitas repetições enviadas — é um sinal claro de defederação. - Verifique a Aba de Tarefas com Falha
O Sidekiq tem uma aba Retries que mostra tarefas que falharam e estão agendadas para repetição. Filtre pela filapushe procure por tarefas destinadas à instância suspeita. A mensagem de erro geralmente seráHTTP 403 ForbiddenouHTTP 410 Gone, que são respostas padrão de um servidor que está defederando.
Problemas Comuns ao Ler Padrões de Filas do Sidekiq
Profundidade da Fila Mostra Zero, Mas Nenhuma Defederação Ocorreu
Uma profundidade de fila zero nem sempre significa defederação. Pode também significar que a instância remota está temporariamente fora do ar ou enfrentando problemas de rede. Para diferenciar, verifique a aba Busy no Sidekiq. Se workers estão processando ativamente tarefas dessa fila, a profundidade da fila irá flutuar. Se a fila está zerada por um período prolongado (mais de 30 minutos) e nenhum worker está ocupado nessa fila, é mais provável que seja uma defederação.
Múltiplas Instâncias Defederadas ao Mesmo Tempo
Se você defederou várias instâncias em lote, verá várias filas pull caírem para zero simultaneamente. Nesse caso, a interface do Sidekiq mostrará um conjunto de filas com profundidade zero. Esse padrão é mais fácil de identificar porque afeta várias filas ao mesmo tempo.
Nomes de Filas do Sidekiq Diferem Entre Versões do Mastodon
Versões antigas do Mastodon usavam convenções de nomenclatura de filas diferentes. Por exemplo, a versão 3.x usava pull e push como acima. A versão 4.x introduziu subfilas como pull:default. Se você estiver em uma versão muito antiga (pré-3.0), pode ver filas como incoming e outgoing. Ajuste sua busca de acordo. Verifique a versão do Mastodon no painel de administração em Administration > About.
| Item | Atividade Normal | Após Defederação |
|---|---|---|
| Profundidade da fila pull | Flutua entre 1 e 100+ | Permanece em zero por horas |
| Tarefas processadas na fila pull | Taxa constante de 10 a 100 por minuto | Cai para zero e permanece plano |
| Repetições na fila push | Falhas ocasionais (0–5%) | Alta taxa de repetição (50%+) com erros 403 |
| Atividade de workers na fila pull | Múltiplos workers ocupados | Nenhum worker atribuído a essa fila |
Ler os padrões de filas do Sidekiq oferece um método confiável para detectar uma defederação sem depender de ferramentas de monitoramento externas. Verificando regularmente a profundidade da fila pull e comparando com as repetições da fila push, você pode identificar eventos de defederação rapidamente. Para monitoramento contínuo, considere configurar um script simples que verifique a API do Sidekiq em /sidekiq/api/queues e envie um alerta se uma fila pull cair para zero por mais de 10 minutos. Essa abordagem proativa ajuda a manter a consciência do status de federação da sua instância.