A New Relic está fazendo a transição das imagens de runtime do Synthetics do Node.js 16 com Chrome 134 para o Node.js 22 com Chrome 147 ou superior. Esta atualização corrige a CVE-2026-5281 e traz os runtimes para as versões atualmente suportadas. O Chrome 134 está fora dos canais suportados do Google, e o Node.js 16 atingiu o fim da vida útil em setembro de 2023.
As novas imagens de tempo de execução estão disponíveis no Docker Hub:
Importante
Ação necessária até DATE. A New Relic está encerrando o suporte para os runtimes do Node.js 16 e Chrome 134. Se você não atualizar, a New Relic migrará automaticamente seus monitores. No entanto, a migração automática pode não detectar monitores que passam, mas falham silenciosamente em algumas etapas do script.
Diferenças entre localização pública e privada
O caminho de migração depende se seus monitores são executados em locais públicos ou localizações privadas.
Localizações públicas: Altere o dropdown de versão do Browser na página de configuração do monitor de Chrome 134 para Latest. Nenhuma alteração de infraestrutura necessária.
Localizações privadas: você deve implantar novas imagens de tempo de execução na infraestrutura do seu gerenciador de jobs de Sintéticos (SJM).
Importante
Para localização privada, os dropdowns de versão do Browser e do Runtime nas Configurações gerais não têm efeito. A versão é totalmente determinada pela imagem que o SJM está executando. Alterar o dropdown não altera qual versão do runtime processa o job — apenas a imagem implantada faz isso. Sendo assim, o atributo runtimeTypeVersion em SyntheticCheck não é uma maneira confiável de identificar a versão de runtime para tarefas de monitor privado.
A página Runtime Upgrades em Synthetics > Runtime Upgrades foi projetada para monitores públicos. Para localizações privadas, não há validação pré-migração automatizada por meio dessa ferramenta. Se você apontar vários gerenciadores de jobs — cada um executando um runtime diferente — para a mesma chave de localização privada, quaisquer resultados exibidos são execuções reais de tarefas, não verificações isoladas de compatibilidade. Use a estratégia de localização privada paralela para comparar o comportamento do monitor entre runtimes antes de confirmar a atualização.
O que está mudando
Use esta tabela para identificar se os resultados do seu monitor vieram de um SJM executando uma imagem rc1.x.
| Componente | Versão antiga | rc1.x versão |
|---|---|---|
| Node.js | 16 | 22 ou superior |
| Chrome | 134 | 147 ou superior |
| Versão do runtime da API | 1.2.134 | 1.2.143 ou superior |
| Versão de tempo de execução do browser | 3.0.55 | 3.0.63 ou superior |
Consultando versões de runtime
Cada tag rc1.x do Docker Hub corresponde a um valor nr.runtimeVersion específico reportado em eventos SyntheticCheck. Você pode consultar o atributo nr.runtimeVersion em NRQL:
SELECT count(*) FROM SyntheticCheckWHERE locationLabel = 'YOUR_PRIVATE_LOCATION'FACET type, nr.runtimeVersion SINCE 1 day agoDica
Use rc1.14 ou superior para o tempo de execução do browser para obter o Chrome 146.0.7680.177, que inclui o patch para CVE-2026-5281.
Principais alterações comportamentais
Essas alterações podem impactar seus monitores existentes:
O padrão do HTTP keep-alive foi alterado. O Node.js 22 define
http.globalAgentcomokeepAlive: truepor padrão (erafalseno Node.js 16). Scripts que criam agentes HTTP personalizados sem definir explicitamentekeepAlive: falsepodem apresentar tempos de execução mais longos ou timeouts, pois as conexões permanecem abertas e impedem que o processo seja encerrado.Maior uso de recursos. O Chrome 147 requer mais CPU e memória do que o Chrome 134 para o mesmo workload. Os contêineres de tempo de execução de Browser normalmente usam 625-980 MiB do seu limite de memória padrão de 3,256 GiB durante a execução, em comparação com o uso menor no Chrome 134.
Aumento da sobrecarga do contêiner. Monitores de browser com script têm uma sobrecarga média de contêiner de 6–10 segundos. Monitores de API com script têm uma média de 2–4 segundos. Monitores que estavam próximos aos limites de timeout no tempo de execução antigo podem agora excedê-los.
Escolha sua estratégia de migração
Existem duas abordagens para a migração de localização privada. Escolha com base na sua tolerância a riscos e no tamanho da frota de monitores.
Opção A: Atualização in-place
Atualize todos os SJMs para as novas imagens de tempo de execução. Todos os monitores são executados imediatamente nos novos runtimes.
Ideal para: Pequenas frotas de monitores, ambientes não críticos ou quando você pode tolerar algumas falhas de monitor durante a transição.
Passos:
- Atualize a configuração
DESIRED_RUNTIMESem cada SJM para usar as novas tags de imagem. - Reinicie ou reimplante o SJM.
- Resultados do monitor.
Risco: Alguns monitores podem falhar até que seus scripts sejam atualizados para funcionar com o Node.js 22 e o Chrome 147 ou superior.
Opção B: Localização privada paralela (recomendada)
Crie uma segunda localização privada, implante SJMs com as novas imagens de tempo de execução lá e execute monitores em ambas as localizações simultaneamente para comparação A/B.
Ideal para: Ambientes de produção, grandes frotas de monitores ou quando você precisa de zero interrupção no monitoramento existente.
Passos:
Crie uma nova localização privada na New Relic. Dê um nome descritivo.
Implante um ou mais SJMs apontados para a nova localização privada com as novas imagens de tempo de execução.
Configure uma regra de silenciamento para suprimir o ruído de alerta do novo local durante os testes:
Acesse Alerts > Muting rules e crie uma regra com a condição
tags.privateLocation EQUALS <your-new-location-name>.Adicione a nova localização privada aos seus monitores. Cada monitor pode ser atribuído a várias localizações privadas. Os jobs de cada local são executados de forma independente — uma falha no novo local não afeta os resultados do local antigo.
Compare os resultados entre os dois locais. Use esta consulta NRQL:
SELECT count(*), percentage(count(*), WHERE result = 'SUCCESS') AS 'Success %',average(executionDuration) AS 'Avg Exec Duration'FROM SyntheticCheckSINCE 1 day agoFACET locationLabel, monitorNameCorrija quaisquer monitores com falha no novo local editando manualmente os scripts.
Assim que todos os monitores passarem no novo local, remova o local antigo dos seus monitores e desative a infraestrutura antiga do SJM.
Compensação: custo duplo de infraestrutura durante o período de transição. Você precisa de hosts ou recursos de cluster separados para o segundo conjunto de SJMs.
Essa abordagem oferece uma visão completa de como todos os seus monitores são executados nos novos tempos de execução, incluindo diferenças nos resultados e na duração de execução — ambos afetam a carga do gerenciador de tarefas e o planejamento de recursos.
Para testar apenas falhas de script sem a comparação completa da infraestrutura, configure uma segunda localização privada com um pequeno SJM de teste e execute um subconjunto de monitores. Isso mostra como os monitores existentes se comportam nos novos runtimes, mas não como os runtimes se adequam à capacidade da sua infraestrutura existente.
Implantar SJM com novas imagens de runtime
Atualize sua implantação existente do SJM para usar as novas tags de imagem de runtime. O próprio SJM (newrelic/synthetics-job-manager:latest) não muda — apenas as imagens de runtime que ele baixa.
Dica
Para obter instruções detalhadas de instalação e configuração, consulte Instalar o gerenciador de jobs do Synthetics e Configuração do Job Manager.
Docker
Atualize a variável de ambiente DESIRED_RUNTIMES para referenciar as novas tags de imagem:
$docker run \> --name sjm \> --restart unless-stopped \> -e PRIVATE_LOCATION_KEY=YOUR_PRIVATE_LOCATION_KEY \> -e "DESIRED_RUNTIMES=[newrelic/synthetics-ping-runtime:latest,newrelic/synthetics-node-api-runtime:RC_IMAGE_TAG,newrelic/synthetics-node-browser-runtime:RC_IMAGE_TAG]" \> -v /var/run/docker.sock:/var/run/docker.sock:rw \> newrelic/synthetics-job-manager:latestSubstitua YOUR_PRIVATE_LOCATION_KEY pela sua chave de localização privada e RC_IMAGE_TAG pela tag da imagem do Docker Hub, como rc1.17.
Se você tiver um contêiner SJM existente, pare e remova-o primeiro, depois inicie o novo:
$docker stop YOUR_CONTAINER_NAME$docker rm YOUR_CONTAINER_NAMEHomem-Pod
Certifique-se de ter concluído todas as dependências do Podman incluindo o serviço de API do Podman na porta 8000. Em seguida, atualize o DESIRED_RUNTIMES:
$podman pod create --network slirp4netns --name sjm-pod \> --add-host=podman.service:YOUR_HOST_IP$
$podman run -d \> --name sjm \> --pod sjm-pod \> --restart unless-stopped \> -e PRIVATE_LOCATION_KEY=YOUR_PRIVATE_LOCATION_KEY \> -e "DESIRED_RUNTIMES=[newrelic/synthetics-ping-runtime:latest,newrelic/synthetics-node-api-runtime:RC_IMAGE_TAG,newrelic/synthetics-node-browser-runtime:RC_IMAGE_TAG]" \> -e CONTAINER_ENGINE=PODMAN \> -e PODMAN_API_SERVICE_PORT=8000 \> -e PODMAN_POD_NAME=sjm-pod \> newrelic/synthetics-job-manager:latestDica
Faça o pré-pull das imagens de runtime antes de iniciar o SJM para evitar problemas de timeout durante a primeira inicialização. A imagem do runtime do navegador tem aproximadamente 3 GB:
$podman pull docker.io/newrelic/synthetics-node-browser-runtime:RC_IMAGE_TAG$podman pull docker.io/newrelic/synthetics-node-api-runtime:RC_IMAGE_TAG$podman pull docker.io/newrelic/synthetics-ping-runtime:latestSubstitua YOUR_PRIVATE_LOCATION_KEY pela sua chave de localização privada e RC_IMAGE_TAG pela tag da imagem do Docker Hub, como rc1.17.
Kubernetes
Atualize os valores do Helm para o chart do gerenciador de tarefas do Synthetics. Se você usar um arquivo values.yaml, atualize as tags de imagem de tempo de execução:
$helm repo update$
$helm upgrade sjm newrelic/synthetics-job-manager \> --namespace YOUR_NAMESPACE \> --set synthetics.privateLocationKey=YOUR_PRIVATE_LOCATION_KEY \> --set-json 'synthetics.desiredRuntimes=[{"image":"newrelic/synthetics-ping-runtime","tag":"latest"},{"image":"newrelic/synthetics-node-api-runtime","tag":"RC_IMAGE_TAG"},{"image":"newrelic/synthetics-node-browser-runtime","tag":"RC_IMAGE_TAG"}]'Para uma nova instalação:
$helm install sjm newrelic/synthetics-job-manager \> --namespace synthetics --create-namespace \> --set synthetics.privateLocationKey=YOUR_PRIVATE_LOCATION_KEY \> --set-json 'synthetics.desiredRuntimes=[{"image":"newrelic/synthetics-ping-runtime","tag":"latest"},{"image":"newrelic/synthetics-node-api-runtime","tag":"RC_IMAGE_TAG"},{"image":"newrelic/synthetics-node-browser-runtime","tag":"RC_IMAGE_TAG"}]'Substitua YOUR_PRIVATE_LOCATION_KEY pela sua chave de localização privada e RC_IMAGE_TAG pela tag da imagem do Docker Hub, como rc1.17.
Consultas NRQL para monitoramento da transição
Se você configurou uma segunda localização privada com os mesmos monitores — onde as verificações são executadas como tarefas reais, não como validações pré-migração — use estas consultas para acompanhar o progresso da sua migração:
Taxa de falhas por monitor no novo tempo de execução:
SELECT percentage(count(*), WHERE result = 'SUCCESS') AS 'Success %', count(*) AS 'Total Checks'FROM SyntheticCheckWHERE locationLabel = 'YOUR_NEW_LOCATION'SINCE 1 day agoFACET monitorNameComparação da duração da execução entre as localizações antigas e novas:
SELECT average(executionDuration) AS 'Avg Execution Duration (ms)', average(duration) AS 'Avg Duration (ms)', average(executionDuration - duration) AS 'Avg Overhead (ms)'FROM SyntheticCheckSINCE 1 day agoFACET locationLabel, monitorNameIdentificar monitores com tempos de execução aumentados:
SELECT monitorName, average(executionDuration) AS 'Avg ExecDuration'FROM SyntheticCheckSINCE 1 day agoFACET monitorName, locationLabelORDER BY average(executionDuration) DESCCorrigir monitores com falha
Resolução de problemas
Problemas comuns
| Problema | Causa possível | Solução |
|---|---|---|
Error: tab crashed | Limite de memória do Chrome 147 excedido | Aumente HEAVY_WORKER_MEMORY ou reduza HEAVYWEIGHT_WORKERS |
| Mais de 30 segundos adicionados ao tempo de execução | Conexões keep-alive impedindo o encerramento do processo | Corrigido no rc1.11; verifique se há agentes personalizados em scripts |
| Podman SJM falha ao criar rede de ponte | Permissões do Podman rootless | Siga a configuração das dependências do Podman; garanta a delegação de cgroup e o serviço da API do Podman |
| Podman SJM encerra durante a extração da imagem | Imagens grandes esgotando o tempo limite no primeiro download | Faça o pré-pull de imagens de runtime com podman pull antes de iniciar o SJM |
| Monitor passa, mas perde etapas do script | Falhas silenciosas em scripts de várias etapas | Use a estratégia de local paralelo para comparar resultados entre os tempos de execução antigos e novos |
Consultas NRQL úteis
Verificar se há monitores com aumento nas taxas de falha:
SELECT percentage(count(*), WHERE result = 'FAILED') AS 'Failure %'FROM SyntheticCheckSINCE 1 day agoFACET monitorNameWHERE percentage(count(*), WHERE result = 'FAILED') > 0Compare a duração de execução antes e depois da migração:
SELECT average(executionDuration) AS 'Avg ExecDuration', max(executionDuration) AS 'Max ExecDuration', average(executionDuration - duration) AS 'Avg Overhead'FROM SyntheticCheckSINCE 1 day agoFACET monitorNameORDER BY average(executionDuration) DESCEncontre monitores com falhas nas abas do Chrome:
SELECT count(*)FROM SyntheticCheckWHERE error LIKE '%tab crashed%'SINCE 1 day agoFACET monitorNameRecomendações de recursos
Com base em testes com runtimes rc1.15:
| Componente | Mínimo recomendado | Padrão |
|---|---|---|
| Memória do contêiner SJM | 3,256 GiB | 3,256 GiB |
Memória de tempo de execução do Browser (HEAVY_WORKER_MEMORY) | 4 GiB | 3,256 GiB |
| Memória compartilhada do runtime do Browser | 2,256 GiB | 2,256 GiB |
Compartilhamentos de CPU do runtime do Browser (HEAVY_WORKER_CPUS) | 2 | 1 |
| Memória de tempo de execução de ping | 1 GiB | 1 GiB |
HEAVY_WORKER_CPUS define os compartilhamentos de CPU do Docker (um peso relativo), não um limite rígido de núcleos de CPU. Aumentá-lo só faz diferença quando vários contêineres estão competindo por CPU simultaneamente.
Linha do tempo
| Data | Evento |
|---|---|
| Abril de 2026 | Novas imagens de tempo de execução (rc1.15) disponível no Docker Hub |
| Abril de 2026 | Boletim de segurança NR26-04 publicado |
| -Julho de 2026 | Fim do suporte para os ambientes de execução Node.js 16/Chrome 134 |
| -Julho de 2026 | Migração automática dos monitores restantes |
Cuidado
Monitores que são migrados automaticamente podem passar na validação, mas falhar silenciosamente em algumas etapas do script. Teste seus monitores proativamente usando a estratégia de localização privada paralela para garantir uma transição tranquila.