O auto-attach Kubernetes APM , anteriormente conhecido como operador do agente Kubernetes , agiliza a observabilidade full-stack para ambientes Kubernetes , automatizando a instrumentação APM junto com a implantação do agente Kubernetes . Ao ativar a instrumentação automática, os desenvolvedores não precisam mais gerenciar manualmente o agente APM. O Kubernetes APM auto-attach instalará, atualizará e removerá automaticamente o agente APM.
Atualmente ele suporta Java, .NET, Node.js, Python, Ruby e PHP.
Como funciona
O
MutatingWebHook
, após a instalação, torna-se envolvido na interceptação de solicitações API para implantar pod em nós.Refletindo a configuração especificada, ele altera a especificação pod para adicionar um contêiner NR init e variáveis de ambiente.
Após o estabelecimento do pod, o agente New Relic APM é perfeitamente integrado ao aplicativo nele alojado.
Antes de você começar
Antes de instalar o operador, verifique o seguinte:
Helm: Você deve instalá-lo para usar os gráficos. Consulte a documentação do Helm se precisar de ajuda para começar.
Kubectl: você deve configurá-lo para se comunicar com seu cluster.
instalação
Dependendo do que você precisa, você pode escolher instalar o Kubernetes APM auto-attach de forma independente ou junto com nossa integração Kubernetes .
Recomendamos fortemente instalá-lo junto com a integração Kubernetes para aproveitar toda a nossa experiência full-stackde observabilidade .
Instalação do pacote além da integração do Kubernetes (recomendado)
O gráfico de anexação automática do Kubernetes APM faz parte do gráfico nri-bundle
, que gerencia a instalação de todos os componentes necessários para permitir uma observabilidade completa do Kubernetes.
Adicione o parâmetro k8s-agents-operator.enabled=true
ao seu comando helm ou inclua-o no arquivo values.yaml
. Consulte a página Instalar a integração do Kubernetes para obter mais informações sobre como usar o Helm ou confira o gráfico nri-bundle
.
Veja este exemplo de comandos do Helm usando parâmetro:
$helm repo add newrelic https://helm-charts.newrelic.com$
$helm upgrade --install newrelic-bundle newrelic/nri-bundle \> --set global.licenseKey=YOUR_NEW_RELIC_INGEST_LICENSE_KEY \> --set global.cluster=CLUSTER_NAME \> --namespace=newrelic \> --set newrelic-infrastructure.privileged=true \> --set global.lowDataMode=true \> --set kube-state-metrics.enabled=true \> --set kubeEvents.enabled=true \> --set k8s-agents-operator.enabled=true \> --create-namespace
Instalação autônoma
Para instalar o Kubernetes APM auto-attach com a configuração padrão, execute estes comandos:
$helm repo add k8s-agents-operator https://newrelic.github.io/k8s-agents-operator$helm upgrade --install k8s-agents-operator k8s-agents-operator/k8s-agents-operator \> --namespace newrelic \> --create-namespace \> --set licenseKey=YOUR_NEW_RELIC_INGEST_LICENSE_KEY
Para obter uma lista completa de opções de configuração, consulte o gráfico README .
Configurar instrumentação automática
Depois que a conexão automática do APM estiver configurada no seu cluster, o próximo passo é implementar as configurações necessárias para deixá-lo operacional. Isso envolve ter pelo menos um Recurso Personalizado (CR) de instrumentação ativo no cluster.
Veja o que a instrumentação CR permite que você mapeie:
- Nome da instrumentação CR
- Onde aplicará a instrumentação CR (agradecimentos a
podLabelSelector
enamespaceLabelSelector
) - Agente APM (um por CR)
- Versão do agente APM
- Parâmetro de configuração APM (env vars)
- Chave de licença (opcional)
O arquivo manifesto precisa ser injetado no mesmo namespace (newrelic
por padrão) onde você instalou o APM auto-attach.
$kubectl apply -f ./values.yaml -n newrelic
Como usar seletores
Para saber quando a instrumentação CR vai injetar o agente APM, precisamos usar seletores. Há 2 seletores de rótulos disponíveis que você pode usar juntos (eles funcionam como um operador lógico AND (&&)) ou separadamente, dependendo de suas necessidades.
PodLabelSelector
informa ao APM Auto-attach qual pod precisa ser instrumentado.Exemplo usando
matchLabel
(pod select contendo uma tag e valor específicos):...podLabelSelector:matchLabels:app.kubernetes.io/name: flask-hello-world...NameSpaceLabelSelector
define no nível do namespace o pod auto-instrumentado.Exemplo usando
matchExpressions
(selecione namespace contendo uma tag e valor específicos):...namespaceLabelSelector:matchExpressions:- key: "kubernetes.io/metadata.name"operator: "In"values: ["backend"]...DICA
Tenha em mente que aplicar o rótulo
kubernetes.io/metadata.name
é o mesmo que selecionar com base no nome do namespace.
Ambos os seletores suportam matchLabel
e matchExpressions
.
Agente APM
Você precisa especificar o agente APM e sua versão no CR de instrumentação. Recomendamos usar a versão mais recente para aproveitar os recursos mais recentes disponíveis.
Linguagem | Imagem | Versões disponíveis |
---|---|---|
dotnet |
| |
java |
| |
nodejs |
| |
python |
| |
ruby |
| |
php |
|
Veja este exemplo:
... spec: agent: language: dotnet image: newrelic/newrelic-dotnet-init:latest ...
Parâmetro de configuração APM
A instrumentação CR fornece a capacidade de injetar variáveis de ambiente no pod para agilizar a configuração do agente APM. Veja este exemplo:
... spec: env: # Example overriding the appName configuration by using a label of the pod - name: NEW_RELIC_APP_NAME valueFrom: fieldRef: fieldPath: metadata.labels['app.kubernetes.io/name'] ...
No exemplo acima, mostramos como você pode configurar as configurações do agente globalmente usando variáveis de ambiente. Consulte a documentação de configuração de cada agente para obter as opções de configuração disponíveis:
Importante
Você pode injetar essas variáveis de ambiente no manifesto de implantação do aplicativo.
Chave de licença (opcional)
Ao instalá-lo, um é criado e é a licença padrão. Siga estas etapas se precisar enviar a telemetria do APM para uma conta diferente:
Para criar um segredo contendo uma nova chave de licença, execute este comando:
bash$kubectl create secret generic newrelic-key-secret \>--namespace my-monitored-namespace \>--from-literal=new_relic_license_key=<NEW RELIC INGEST LICENSE KEY>Para referenciar o segredo do CR de instrumentação, execute este comando:
...spec:licenseKeySecret: the-name-of-the-custom-secret...
Exemplos de instrumentação CR
Atualizar instrumentação APM no aplicativo
Por padrão, a conexão automática do Kubernetes APM instala automaticamente a versão mais recente disponível do agente APM correspondente.
Depois que o monitoramento de um aplicativo é iniciado, ele não é atualizado automaticamente para uma versão mais recente, a menos que você opte por atualizar. Você pode atualizar o aplicativo reimplantando o pod ou reiniciando sua implantação.
Remover instrumentação APM no aplicativo
Para remover a instrumentação APM de um aplicativo, você deve alterar o seletor de rótulo correspondente dentro do podLabelSelector
ou namespaceLabelSelector
usado ou excluir o CR da instrumentação. Em seguida, reinicie a implantação. O processo de remoção leva apenas alguns segundos.
Atualizar o anexo automático do Kubernetes APM
Instalação do pacote
Execute uma atualização do gráfico nri-bundle
com o seguinte parâmetro:
$k8s-agents-operator.enabled=true
Instalação autônoma
Execute o comando helm upgrade
para atualizar para uma versão mais recente do Kubernetes APM auto-attach.
$helm upgrade k8s-agents-operator newrelic/k8s-agents-operator -n newrelic
Desinstalando o Kubernetes APM auto-attach
Instalação do pacote
Desinstale o gráfico nri-bundle
ou, se quiser apenas remover a anexação automática do Kubernetes APM, execute uma atualização do helm com o seguinte parâmetro:
$k8s-agents-operator.enabled=false
Instalação autônoma
Para desinstalar e excluir o anexo automático do Kubernetes APM, execute este comando:
$helm uninstall k8s-agents-operator -n newrelic
Encontre e use dados
Obtenha insights do seu aplicativo e resolva incidentes usando a página de resumo APM.
Confira a página de resumo do Kubernetes . Ele fornece Kubernetes insights no contexto do seu aplicativo de monitor.
Certificados
O anexo automático do Kubernetes APM pode oferecer suporte a cert-manager
, se preferir.
Execute este comando para instalar o gráfico Helm
cert-manager
:bash$helm install cert-manager jetstack/cert-manager \>--namespace cert-manager \>--create-namespace \>--set crds.enabled=trueNo seu arquivo
values.yaml
, definaadmissionWebhooks.autoGenerateCert.enabled: false
eadmissionWebhooks.certManager.enabled: true
. Depois, instale o gráfico normalmente.
Lançamentos de gráficos disponíveis
Execute este comando para ver os gráficos disponíveis:
$helm search repo k8s-agents-operator
Perguntas frequentes
Resolução de problemas
Caso seu aplicativo não esteja instrumentado, você deverá verificar o seguinte:
Certifique-se de reimplantar ou implantar o novo aplicativo depois de instalar Kubernetes APM auto-attach. Observe que apenas novos aplicativos de auto-instrumento são implantados no cluster.
Execute este comando para verificar se o segredo está instalado no namespace do aplicativo:
bash$kubectl get secrets -n NAMESPACEVerifique se o pod possui os rótulos necessários que permitem a instrumentação automática por meio do CR ao usar
podLabelSelector
. Da mesma forma, verifique se o namespace tem os rótulos necessários ao usarnamespaceLabelSelector
dentro do CR.bash$kubectl get pod POD_NAME -n NAMESPACE -o jsonpath='{.metadata.annotations}'Execute este comando para obter o log do de APM conexão automática pod:
bash$kubectl logs AGENT_OPERATOR_POD -n newrelicExecute este comando para garantir que o contêiner
init
foi injetado e executado com sucesso dentro do pod do aplicativo.bash$kubectl describe pod POD_NAME -n NAMESPACE
Como migrar de versões anteriores que exigiam anotações
A partir da versão 0.14, as anotações no manifesto de implantação do aplicativo não são mais necessárias para que o aplicativo seja autoinstrumentado.
É aconselhável desinstalar todas as versões anteriores à 0.14 e prosseguir com a instalação da versão mais recente. A utilização dos seletores de rótulos dentro da instrumentação CR permitirá a implantação precisa do agente APM, dispensando assim a necessidade de anotações.
Apoiar
O anexo automático do Kubernetes APM oferece suporte aos seguintes idiomas e suas versões mínimas suportadas de acordo com nossa política de suporte padrão ao agente APM:
- Java: 8.12
- .NET: 10,25
- Ruby: 9,10
- Node.js: 11.9
- Python: 9.10
- PHP: 11.12
Para quaisquer problemas:
Revise a seção de problemas no GitHub para encontrar problemas semelhantes ou considere abrir um novo problema.
Você pode entrar em contato com a equipe de suporte da New Relic para obter assistência.