Importante
A partir de 26 de agosto de 2024, você não poderá mais criar novos monitores usando tempos de execução legados em locais públicos ou privados.
Em 22 de outubro de 2024, encerraremos a vida útil do minion privado conteinerizado (chamadas por minuto) e do legado runtime do Synthetics versões que ele suporta. Revise nossas etapas de migração recomendadas para evitar a degradação do seu monitor de localização privada.
Este documento orienta você na configuração do seu minion privado em contêiner (CPM).
Você pode fazer o seguinte para personalizar suas chamadas por minuto:
- Use variáveis de ambiente para configurar seu minion privado em contêiner.
- Configure módulos personalizados para API com script ou monitor de navegador com script .
- Preserve os dados de lançamento com armazenamento permanente de dados.
Você não pode modificar nenhum arquivo de chamadas por minuto e a New Relic não se responsabiliza por quaisquer modificações que você fizer.
Configuração usando variáveis de ambiente
As variáveis ambientais permitem ajustar a configuração das chamadas por minuto para atender às suas necessidades ambientais e funcionais específicas.
Diretrizes para montagem de volumes
Todos os diretórios e arquivos must recebem propriedade de grupo como 3729
com permissões de leitura/gravação. Isso garante que o Runner, que usa uid: 1000
e gid: 3729
, tenha acesso a todos os volumes montados. No entanto, o Minion pode ser executado como root (uid: 0
) ou com qualquer uid
entre o intervalo de [2000, 4000]
, inclusive. Para obter mais informações, consulte executando como não root no Kubernetes ou Docker.
Docker
- Os diretórios são montados em um contêiner como volumes especificando um argumento
-v
dentrodocker run
- Por exemplo,
docker run ... -v /path/to/src:/path/to/dest:rw
Kubernetes
- É possível adicionar um diretório a um volume persistente (PV) usando
kubectl cp
. No entanto, há suporte para abordagens alternativas, desde que as permissões de arquivo sejam definidas adequadamente. - Por exemplo,
kubectl cp /path/to/src <POD_NAME>:/path/to/dest
adicionará um diretório a cada PV no pod especificado - Cada PV deve ter uma cópia separada dos diretórios. Por exemplo, um cluster com n réplicas minion deve ter n PVs, cada um com sua própria cópia de diretórios
- Os diretórios e arquivos devem ser adicionados antes da inicialização do Minion , caso contrário, o Minion deve ser reiniciado para detectar as atualizações
Módulos de nós personalizados
Os módulos de nós personalizados são exclusivos para chamadas por minuto. Eles permitem que você forneça um conjunto arbitrário de módulos de nó e os disponibilize para monitor com script no monitoramento sintético.
Para configurar os módulos:
Crie um diretório contendo um
package.json
, seguindo as diretrizes oficiais do npm, na raiz do diretório. Tudo o que estiver contido no campodependencies
será instalado pelas chamadas por minuto no início e disponibilizado ao executar o monitor naquele Minion privado.Opcionalmente, você pode substituir o nível raiz
package.json
por um diretório específico da versão do Node.js. Isso permite que um script seja atualizado por tempo de execução do monitor se uma versão Node.js de um tempo de execução não for mais compatível com sua dependência. Veja um exemplo disso abaixo.Depois de criar o diretório de módulos personalizados e o
package.json
você pode aplicá-lo às suas chamadas por minuto para Docker e Kubernetes.Consulte o registro de chamadas por minuto de
"... Initialization of Custom Modules ..."
para ver se os módulos foram instalados corretamente ou se houve algum erro. O log de instalação do npm será mostrado.
Agora você pode adicionar "require('async');"
ao script de monitor que você envia para esta localização privada.
Mudar package.json
Você também pode usar módulos Node.js junto com módulos locais e hospedados. Para alterar os módulos personalizados usados pelas suas chamadas por minuto, modifique package.json
e reinicie as chamadas por minuto. Ele detectará a alteração na configuração durante a reinicialização e, em seguida, limpará e reinstalará.
Cuidado
Módulos locais: embora seu package.json
possa incluir qualquer módulo local, esses módulos devem residir na árvore no diretório do módulo personalizado. Se armazenado fora da árvore, o processo de inicialização falhará e você verá uma mensagem de erro no docker log após iniciar chamadas por minuto.
Armazenamento permanente de dados
Chamadas por minuto é um aplicativo stateless e não preserva informações de solicitações ou sessões anteriores por padrão. No entanto, você pode preservar os dados entre os lançamentos ativando o armazenamento permanente de dados. Por exemplo, você pode definir permanentemente como o minion se identifica (por exemplo, Minion_ID
) e usá-lo para associar esses dados ao minion exato que os produziu.
Para definir o armazenamento permanente de dados no Docker:
Crie um diretório.
Lançar as chamadas por minuto, montando o diretório em
/var/lib/newrelic/synthetics
.Exemplo:
bash$docker run ... -v /example-permanent-dir:/var/lib/newrelic/synthetics:rw ...
Para definir o armazenamento permanente de dados no Kubernetes:
Lançar as chamadas por minuto, definindo um valor para o valor de configuração
persistence.permanentData
na linha de comando ou em um arquivo YAML durante a instalação. O valor deve especificar o subcaminho no volume persistente do seu minion onde você deseja que os dados sejam salvos.Exemplo:
bash$helm install ... --set persistence.permanentData=PERMANENT_DATA_SUBPATH ...
Variáveis de ambiente definidas pelo usuário para monitor com script
Minion privado em contêiner permite configurar variáveis de ambiente para uso em monitor com script. Essas variáveis ficam hospedadas localmente nas chamadas por minuto e podem ser acessadas via $env.USER_DEFINED_VARIABLES
. Existem duas maneiras de definir variáveis definidas pelo usuário: montando um arquivo JSON ou fornecendo uma variável de ambiente para as chamadas por minuto no lançamento. Se ambos forem fornecidos, as chamadas por minuto utilizarão apenas valores fornecidos pelo ambiente.
Acessando variáveis de ambiente definidas pelo usuário a partir do script
Para fazer referência a uma variável de ambiente definida pelo usuário configurada, use o $env.USER_DEFINED_VARIABLES
reservado seguido do nome de uma determinada variável com notação de ponto.
Por exemplo, $env.USER_DEFINED_VARIABLES.MY_VARIABLE
Cuidado
Variáveis de ambiente definidas pelo usuário não são limpas do log. Para informações confidenciais, considere usar o recurso de credenciais seguras .