Sidekiq não está em execução. Teste de heartbeat do Sidekiq falhou, reiniciando

Estou em dúvida se consigo resolver esse problema limpando o Redis ou atualizando-o; ele não foi modificado nos últimos 8+ meses. Nunca trabalhei diretamente com Redis, mas nossa instância Discourse de Tests-Pass foi configurada usando local_discourse em vez do Discourse Docker que agora é recomendado neste fórum. Os problemas que estou enfrentando estão relacionados ao e-mail não estar sendo enviado aos usuários. Qualquer ajuda e sugestão serão bem-vindas!

Sidekiq não está em execução. Muitas tarefas, como o envio de e-mails, são executadas de forma assíncrona pelo Sidekiq. Certifique-se de que pelo menos um processo Sidekiq esteja em execução.

Falha no teste de heartbeat do Sidekiq, reiniciando

config/unicorn.conf.rb:147:in `check_sidekiq_heartbeat
config/unicorn.conf.rb:164:in `master_sleep'
unicorn-5.5.4/lib/unicorn/http_server.rb:296:in `join'
unicorn-5.5.4/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'

Se fizer sentido migrar, estou aberto a sugestões.

Sugiro fazer um backup da sua instalação atual e criar uma nova seguindo a Instalação Padrão Oficial do Discourse

Essa tem sido a recomendação há pelo menos os últimos 4 anos.

Eu apoiaria a sugestão do Rafael.

Seria útil eu usar o launcher para reconstruir ou reiniciar o contêiner do Redis?

Uso: launcher COMANDO CONFIG [–skip-prereqs] [–docker-args STRING]
Comandos:
start: Inicializar/iniciar um contêiner
stop: Parar um contêiner em execução
restart: Reiniciar um contêiner
destroy: Parar e remover um contêiner
enter: Abrir um shell para executar comandos dentro do contêiner
logs: Exibir os logs do Docker de um contêiner
bootstrap: Preparar um contêiner para a configuração com base em um modelo
run: Executar o comando fornecido com a configuração no contexto da última imagem inicializada
rebuild: Reconstruir um contêiner (destruir o antigo, inicializar, iniciar o novo)
cleanup: Remover todos os contêineres que pararam há mais de 24 horas
start-cmd: Gerar o comando do Docker usado para iniciar o contêiner

Opções:
–skip-prereqs Não verificar pré-requisitos do launcher
–docker-args Argumentos extras para passar ao executar o docker
–skip-mac-address Não atribuir um endereço MAC
–run-image Substituir a imagem usada para executar o contêiner

Você instalou seguindo o guia de Instalação Padrão Oficial do Discourse ou de outra forma? Se você tem uma instalação padrão, então sim, executar ./launcher rebuild app provavelmente resolverá qualquer problema que você esteja enfrentando.

Ainda não, mas estamos definindo um horário para a migração. Nosso Discourse está em funcionamento há quase três anos e eu simplesmente não quero adicionar qualquer tempo de inatividade desnecessário. :slight_smile: Nossa instância é totalmente mantida por voluntários, então tenho me dedicado a aprender a mantê-la no último mês. Se uma correção rápida do Redis ajudar (esse container está rodando há um ano sem alterações), eu gostaria de aplicá-la.

Se você não fez uma instalação padrão desde o início, é impossível saber o que pode resolver seu problema atual.

Recomendo configurar uma nova máquina virtual (VM) e realizar uma instalação de teste para garantir que tudo funcione. Ao fazer a transferência, você pode colocar o fórum antigo no modo somente leitura, fazer um backup, restaurá-lo na nova VM e alterar o DNS com quase nenhuma interrupção. (Haverá, na verdade, um pequeno período de indisponibilidade, pois será necessário reconstruir o sistema após a alteração do DNS para instalar o certificado do Let’s Encrypt).

Obrigado. O Let’s Encrypt deve ser realmente bem simples, já que foi configurado para ser apenas uma edição simples do proxy reverso do nginx. Bom saber, e é de se esperar que haja alguma indisponibilidade. Só precisamos agendar isso em um horário de menor movimento.

Estou prestes a migrar e restaurar o backup nas imagens oficiais. Há algo que eu deva saber sobre a limpeza de e-mails backup, etc., que poderiam spammar os usuários assim que o Sidekiq, etc., estiver funcionando corretamente? Obrigado!

A fila de jobs do Sidekiq não será migrada, então muitos e-mails serão perdidos, enquanto os resumos voltarão a ser enviados normalmente.

Então, ao tentar seguir a documentação para instalar as imagens oficiais do Docker do Discourse, estamos enfrentando problemas. Concluímos que falta o contêiner do Redis, o contêiner de recebimento de e-mail e o contêiner de dados que tínhamos anteriormente no Docker.

Parece que nossa instalação anterior incluía:
app.yml
data.yml
mail-receiver.yml
redis.yml

Essa configuração com múltiplos contêineres difere das instruções básicas de instalação. Tenho um backup do nosso antigo /var/discourse para referência.

FAILED                                                                                                                                                        │················································································································
--------------------                                                                                                                                          │················································································································
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 645 exit 1>                 │················································································································
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'                                                                                            │················································································································
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}                                   │················································································································
bbf0e57ac69f1febe2a5f149aa7e6e12541c3c23aaf199188fdf19d507254b58                                                                                              │················································································································
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.                                                   │················································································································
./discourse-doctor may help diagnose the problem.

Parece que pulamos a etapa ./launcher bootstrap data
./launcher start redis

[Mon 11 May 2020 12:53:20 AM UTC] Executando comando de recarregamento: sv reload nginx                                                                                             │················································································································
fail: nginx: runsv não está em execução                                                                                                                                │················································································································
[Mon 11 May 2020 12:53:20 AM UTC] Erro de recarregamento para :                                                                                                          │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Domínios não alterados.                                                                                                        │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Ignorando, próxima hora de renovação: Thu 09 Jul 2020 11:33:04 PM UTC                                                                 │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Adicione '--force' para forçar a renovação.                                                                                            │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Instalando chave em: /shared/ssl/discuss.noisebridge.info_ecc.key                                                              │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Instalando cadeia completa em: /shared/ssl/discuss.noisebridge.info_ecc.cer                                                       │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Executando comando de recarregamento: sv reload nginx                                                                                             │················································································································
fail: nginx: runsv não está em execução                                                                                                                                │················································································································
[Mon 11 May 2020 12:53:21 AM UTC] Erro de recarregamento para :                                                                                                          │················································································································
run-parts: executando /etc/runit/1.d/remove-old-socket                                                                                                         │················································································································
runsvdir iniciado, PID é 626                                                                                                                                  │················································································································
ok: run: redis: (pid 636) 0s                                                                                                                                  │················································································································
chgrp: grupo inválido: 'syslog'                                                                                                                                │················································································································
ok: run: postgres: (pid 639) 0s                                                                                                                               │················································································································
rsyslogd: imklog: não foi possível abrir o log do kernel (/proc/kmsg): Operação não permitida.                                                                               │················································································································
rsyslogd: falha na ativação do módulo imklog [v8.1901.0 tente https://www.rsyslog.com/e/2145 ]                                                                  │················································································································
supervisor pid: 640 unicorn pid: 667

Certo, restauramos com sucesso nossa instância anterior do Discourse! Agora exibindo:

Todas as e-mails de saída foram desabilitados globalmente por um administrador. Nenhuma notificação por e-mail de qualquer tipo será enviada.

Isso está correto: os importadores configuraram isso para que você não envie 50.000 e-mails após uma migração. Ative o e-mail com cuidado nas configurações do seu site.