O gerenciador de tarefas pode operar em um ambiente de sistema de contêiner Docker, um ambiente de sistema de contêiner Podman ou um ambiente de sistema de orquestração de contêiner Kubernetes. O gerenciador de tarefas detectará automaticamente seu ambiente para selecionar o modo de operação apropriado.
Recurso sintético do gerenciador de tarefas
Como o gerenciador de tarefas Sintético opera como um contêiner em vez de uma máquina virtual, simplificamos a instalação, os primeiros passos e a atualização do gerenciamento e da orquestração de tarefas. Ele também vem com algumas funcionalidades adicionais:
Capacidade de aproveitar um contêiner Docker como um ambiente sandbox .
Recurso específico do Kubernetes
O gerenciador de tarefas apresenta algumas funcionalidades adicionais específicas do Kubernetes:
Usa recursos CronJob do Kubernetes para executar o monitor sem ping
Não requer acesso privilegiado ao soquete Docker
Suporta cluster hospedado e local do Kubernetes
Suporta vários motores de contêiner, como Docker e Containerd
Implantável por meio de gráficos Helm, bem como YAMLs de configuração
Permite alocação de recursos baseada em tempo de execução de trabalho configurável (ping, API e browser) para gerenciamento ideal de recursos
Observabilidade oferecida através do cluster New Relic do Kubernetes Explorer
Requisito do sistema e compatibilidade
Para hospedar gerenciadores de tarefas Sintético, seu sistema deve atender aos requisitos mínimos para o ambiente de sistema escolhido.
Cuidado
Não modifique nenhum arquivo do gerenciador de tarefas Sintético. A New Relic não se responsabiliza por quaisquer modificações que você fizer. Para obter mais informações, entre em contato com seu representante de conta ou com um representante técnico de vendas da New Relic.
Compatibilidade para
Requisitos
Sistema operacional
Linux kernel: 3.10 ou superior macOS: 10.11 ou superior Windows: Windows 10 de 64 bits ou superior
Você também deve configurar Docker para executar o contêiner Linux para que os gerenciadores de tarefas Sintético funcionem em sistemas Windows.
O gerenciador de tarefas Docker Sintéticos não foi projetado para uso com orquestradores de contêineres, como AWS ECS, Docker Swarm, Apache Mesos, instância de contêiner Azure , etc. Executar o gerenciador de tarefas Docker Sintéticos em um orquestrador de contêineres resulta em problemas inesperados, pois ele próprio funciona como um orquestrador. Se você estiver usando a orquestração de contêineres, consulte nossos requisitos do gerenciador de tarefasKubernetes Sintéticos.
O gerenciador de tarefas Podman Sintéticos não foi projetado para uso com orquestradores de contêineres, como AWS ECS, Docker Swarm, Apache Mesos, Azure contêiner instância, etc. Executar o gerenciador de tarefas Docker Sintéticos em um orquestrador de contêineres resulta em problemas inesperados, pois ele próprio funciona como um orquestrador. Se você estiver usando a orquestração de contêineres, consulte nossos requisitos do gerenciador de tarefasKubernetes Sintéticos.
Compatibilidade para
Requisitos
Sistema operacional
Linux kernel: 3.10 ou superior macOS: 10.11 ou superior
O contêiner Linux, incluindo o gerenciador de tarefas, é executado apenas em nós Linux K8s.
Processador
Uma CPU moderna e multi-core
Podde gerenciador de tarefas sintético
CPU (vCPU/Core): 0,5 até 0,75 Memory: 800 Mi até 1.600 Mi
Os recursos alocados para um pod do gerenciador de tarefas Sintético são configuráveis pelo usuário.
Podde tempo de execução de ping
CPU (vCPU/Core): 0,5 até 0,75 Memory: 500 Mi até 1 Gi
Considerações adicionais:
Os recursos alocados para um pod de tempo de execução de ping são configuráveis pelo usuário.
A proporção máxima de recursos de solicitação de limite para CPU e memória é 2.
Podtempo de execução da API Node.js
CPU (vCPU/Core): 0,5 até 0,75 Memory: 1.250 Mi até 2.500 Mi
Considerações adicionais:
Os recursos alocados para um pod de tempo de execução da API Node.js são configuráveis pelo usuário.
A proporção máxima de recursos de solicitação de limite para CPU e memória é 2.
Podde tempo de execução do browser Node.js
CPU (vCPU/Core): 1,0 até 1,5 Memory: 2.000 Mi até 3.000 Mi
Considerações adicionais:
Os recursos alocados para um pod de tempo de execução do browser Node.js são configuráveis pelo usuário.
A proporção máxima de recursos de solicitação de limite para CPU e memória é 2.
Para visualizar versões, dependência, valores padrão de quantos pods de tempo de execução iniciam com cada gerenciador de tarefas Sintético e muito mais, consulte Mostrar ajuda e exemplos abaixo.
Chave de localização privada
Antes de lançar os gerenciadores de empregos Sintético, você deve ter uma chave de localização privada. Seu gerenciador de tarefas Sintético usa a chave para autenticar no New Relic e executar o monitoramento associado a essa localização privada.
Para encontrar a chave da localização privada existente:
No índice Private locations , localize a localização privada à qual você deseja que seu gerente de tarefas Sintético seja atribuído.
Observe a chave associada à localização privada com a chave ícone.
Instalar, atualizar e configurar o gerenciador de tarefas Sintético
Se você estiver executando mais de um Docker ou Podman no mesmo host, você terá conflitos de porta. Para evitar essa contenção de porta, certifique-se de fazer o seguinte ao começar a configurar os gerenciadores de tarefas:
Execute gerenciadores de tarefas e chamadas por minuto em hosts diferentes.
Execute cada gerenciador de tarefas em um host separado.
Execute cada chamada por minuto em um host diferente.
A menos que você esteja hospedando as imagens em um repositório de imagens local, você precisa permitir conexões com docker.io através do seu firewall para que Docker ou o Podman possam extrair o gerenciador de tarefas do Sintéticos e o tempo de execução das imagens do Synthetics. Quando o gerenciador de tarefas do Sintéticos é iniciado, as imagens de tempo de execução são extraídas automaticamente. Consulte Configuração do ambienteDocker , Configuração do ambiente Podman e Configuração do ambienteKubernetes para obter detalhes sobre como definir um repositório local e o endpoint de registro do executor.
Verifique se o pod do gerenciador de tarefas Sintético está instalado e funcionando:
bash
$
kubectl get -n YOUR_NAMESPACE pods
Assim que o atributo status de cada pod for mostrado como running, seu gerenciador de tarefas Sintético estará ativo e pronto para executar o monitoramento atribuído à sua localização privada.
Pare ou exclua o gerenciador de tarefas Sintético
Em um ambiente de sistema de contêiner Docker ou Podman, use o respectivo procedimento stop para parar o gerenciador de tarefas do Sintéticos. Em um ambiente de sistema de orquestração de contêineres Kubernetes , use o procedimento delete Kubernetes para interromper a execução do gerenciador de tarefas do Sintéticos.
Exclua o namespace configurado para o gerenciador de tarefas Sintético em seu cluster do Kubernetes:
bash
$
kubectl delete namespace YOUR_NAMESPACE
Sandbox e dependência
Sandboxing e dependência são aplicáveis ao gerenciador de tarefas Sintéticos em um ambiente de sistema de contêiner Docker ou Podman.
O gerenciador de tarefas Sintético é executado em Docker e é capaz de aproveitar Docker como uma tecnologia de sandbox. Isso garante o isolamento completo da execução do monitor, o que melhora a segurança, a confiabilidade e a repetibilidade. Cada vez que um monitor de script ou browser é executado, o gerenciador de tarefas Sintético cria um novo contêiner Docker para executá-lo usando o tempo de execução correspondente.
O contêiner do gerenciador de tarefas Sintético precisa ser configurado para se comunicar com o mecanismo docker para gerar contêineres de tempo de execução adicionais. Cada contêiner gerado é então dedicado a executar uma verificação associada ao monitor Sintético em execução na localização privada à qual o contêiner do gerenciador de tarefas Sintético está associado.
Há uma dependência crucial no lançamento. Para ativar o sandbox, certifique-se de que:
Seu soquete UNIX docker gravável é montado na variável de ambiente/var/run/docker.sock ou DOCKER_HOST. Para obter mais informações, consulte Opção de soquete Daemon do Docker.
Cuidado
A contagem de núcleos no host determina quantos contêineres de tempo de execução o gerenciador de tarefas Sintético pode executar simultaneamente no host. Como os requisitos de memória são dimensionados para a contagem esperada do contêiner de tempo de execução, recomendamos not running multiple synthetics job managers on the same host para evitar contenção de recursos.
O gerenciador de tarefas do Sintéticos é executado no Podman e consegue aproveitar o Podman como uma tecnologia de sandbox. Isso garante o isolamento completo da execução do monitor, o que melhora a segurança, a confiabilidade e a repetibilidade. Toda vez que um monitor com script ou browser é executado, o gerenciador de tarefas do Sintéticos cria um novo contêiner Podman para executá-lo usando o tempo de execução correspondente.
O contêiner do gerenciador de tarefas do Sintéticos precisa ser configurado para se comunicar com o mecanismo do Podman para gerar contêineres de tempo de execução adicionais. Cada contêiner gerado é então dedicado a executar uma verificação associada ao monitor Sintético em execução na localização privada à qual o contêiner do gerenciador de tarefas Sintéticos está associado.
Há uma dependência crucial no lançamento. Para habilitar o sandbox, certifique-se de ter:
Crie um serviço de API do Podman e configure o Podman para fornecer acesso à API HTTP.
mkdir -p ~/.config/systemd/user
touch ~/.config/systemd/user/podman-api.service
vi ~/.config/systemd/user/podman-api.service
Defina o serviço para expor a API do Podman na porta 8000.
[Unit]
Description=Podman API Service
After=default.target
[Service]
Type=simple
ExecStart=/usr/bin/podman system service -t 0 tcp:0.0.0.0:8000
Restart=on-failure
[Install]
WantedBy=default.target
Habilitou e iniciou o serviço da API do Podman.
systemctl --user daemon-reload
systemctl --user enable podman-api.service
systemctl --user start podman-api.service
systemctl --user status podman-api.service
Cuidado
A contagem de núcleos no host determina quantos contêineres de tempo de execução o gerenciador de tarefas Sintético pode executar simultaneamente no host. Como os requisitos de memória são dimensionados para a contagem esperada do contêiner de tempo de execução, recomendamos not running multiple synthetics job managers on the same host para evitar contenção de recursos.
Segurança, sandbox e execução como não-root
Por padrão, o software executado dentro de um gerenciador de tarefas Sintético é executado com root privilégios de usuário. Isso é adequado para a maioria dos cenários, pois a execução ocorre em área restrita.
Para executar o gerenciador de tarefas Sintético como um usuário não root, são necessárias etapas adicionais:
Se o seu ambiente exigir que você execute o gerenciador de tarefas Sintético como um usuário não-root, siga este procedimento. No exemplo a seguir, o usuário não root é my_user.
Certifique-se de que my_user possa usar o mecanismo Docker no host:
Verifique se my_user tem permissões de leitura/gravação para todos os diretórios e volumes passados para o gerenciador de tarefas Sintético. Para definir essas permissões, use o comando chmod .
Obtenha o uid de my_user para uso no comando de execução: id -u my_user.
Uma vez atendidas essas condições, use a opção "-u <uid>:<gid>" ao iniciar o gerenciador de tarefas Sintético:
bash
$
docker run ... -u1002...
OU
bash
$
docker run ... -u1002-eDOCKER_HOST=http://localhost:2375 ...
Entenda seus ambientes Docker, Podman ou Kubernetes
Abaixo estão informações adicionais sobre como manter e compreender o ambiente de contêiner do gerenciador de tarefas. Visualize informações de licença, entenda as configurações de rede do gerenciador de tarefas e confira o repositório de imagens docker .
Para um gerenciador de tarefas Sintético no ambiente do sistema de orquestração de contêineres Kubernetes, os seguintes comandos Helm show podem ser usados para visualizar o chart.yaml e o values.yaml, respectivamente:
bash
$
helm show chart YOUR_REPO_NAME/synthetics-job-manager
bash
$
helm show values YOUR_REPO_NAME/synthetics-job-manager
Alguns de nossos softwares de código aberto estão listados sob diversas licenças de software e, nesse caso, listamos a licença que escolhemos usar. Nossas informações de licença também estão disponíveis em nossa documentação de licenças.
Tanto para docker quanto para Kubernetes, o gerenciador de tarefas Sintético e seu contêiner de runtime herdarão as configurações de rede do host. Para obter um exemplo disso em um ambiente de sistema de contêiner docker , consulte o sitedocker .
Uma rede bridge é criada para comunicação entre o gerenciador de tarefas Sintético e o contêiner runtime. Isso significa que opções de comando de rede como --network e --dns passadas para o contêiner do gerenciador de tarefas Sintético no lançamento (como por meio de comandos docker run em um ambiente de sistema docker contêiner) não são herdadas ou usadas pelos contêineres de tempo de execução.
Quando essas redes são criadas, elas extraem do pool de endereços IP padrão configurado para o daemon. Para obter um exemplo disso em um ambiente de sistema de contêiner Docker , consulte o site Docker .
No caso do Podman, não usamos uma rede de ponte para comunicação entre o gerenciador de tarefas do Sintéticos e o contêiner de tempo de execução, em vez disso, usamos um pod Podman. Todos os contêineres em um pod Podman compartilham o mesmo namespace de rede. Isso significa que eles compartilham o mesmo endereço IP dentro desse pod. Neste caso, embora os contêineres compartilhem o mesmo IP, seus serviços são expostos em portas diferentes.
Uma única imagem Docker do gerenciador de tarefas Sintéticos atende ao ambiente do sistema de orquestração de contêineres Docker, Podman e Kubernetes . A imagem do Docker é hospedada no Docker Hub. Para garantir que sua imagem do Docker esteja atualizada, consulte o repositório newrelic/synthetics-job-manager do Docker Hub.
Considerações adicionais para conexão do gerenciador de tarefas Sintético
Conexão
Descrição
Gestores de trabalho Sintético sem acesso à Internet
Um gestor de empregos Sintético pode operar sem acesso à internet, mas com algumas exceções. O gerenciador de tarefas do Sintético precisa poder entrar em contato com o domínio "synthetics-horde.nr-data.net" . Isso é necessário para que ele reporte dados ao New Relic e receba o monitor para execução. Pergunte à administração da rede se isso é um problema e como configurar exceções.
Comunique-se com o Sintético através de um proxy
Para configurar a comunicação com o New Relic por proxy, use as variáveis de ambiente denominadas HORDE_API_PROXY*.
Argumentos aprovados no lançamento
Isso se aplica somente ao ambiente de contêiner Docker e Podman. Os argumentos passados para o contêiner do gerenciador de tarefas Sintéticos no lançamento não são repassados para o contêiner de tempo de execução gerado pelo gerenciador de tarefas Sintéticos. Docker e o Podman não têm o conceito de "herança" ou "hierarquia" de contêiner, e não copiamos a configuração que é passada do gerenciador de tarefas do Sintéticos para o contêiner em tempo de execução. Entretanto, no caso do Podman, os argumentos passados no nível pod são compartilhados entre o gerenciador de tarefas do Sintéticos e o contêiner de tempo de execução no pod. A única configuração compartilhada entre eles é aquela definida no nível do daemon do Docker .