visualização
Ainda estamos trabalhando nesse recurso, mas adoraríamos que você experimentasse!
Atualmente, esse recurso é fornecido como parte de um programa de visualização de acordo com nossas políticas de pré-lançamento.
Você pode usar a métrica da sua conta New Relic para dimensionar automaticamente aplicativos e serviços em seu cluster do Kubernetes implantando o Adaptador métrica New Relic . Este adaptador busca os valores de métrica do New Relic e os disponibiliza para os escalonadores automáticos horizontais de pods.
O newrelic-k8s-metrics-adapter implementa a external.metrics.k8s.io
API para dar suporte ao uso de New Relic NRQL resultados de consulta baseados em métricas externas. Uma vez implantado, o valor de cada métrica configurada é obtido através da API NerdGraph com base na consulta NRQL configurada.
O adaptador métrico expõe a métrica em um endpoint seguro com TLS.
Adaptador métrico New Relic em cluster.
Requisitos
- Um cluster do Kubernetes executando uma versão suportada.* A integração do New Relic Kubernetes.
- A integração do New Relic Kubernetes.
- New Relic Usuário chave de API da.
- Nenhum outro adaptador métrico externo instalado no cluster.
instalação
Para instalar o New Relic adaptador métrico , fornecemos o newrelic-k8s-metrics-adapter
gráfico Helm , que também está incluído no nri-bundle
gráfico usado para implantar todos os New Relic Kubernetes componentes .
Se ainda não estiver instalado, instale nossa integração Kubernetes.
Atualize a instalação para incluir o Adaptador métrico New Relic com o seguinte comando:
bash$helm upgrade --install newrelic newrelic/nri-bundle \>--namespace newrelic --create-namespace --reuse-values \>--set metrics-adapter.enabled=true \>--set newrelic-k8s-metrics-adapter.personalAPIKey=YOUR_NEW_RELIC_PERSONAL_API_KEY \>--set newrelic-k8s-metrics-adapter.config.accountID=YOUR_NEW_RELIC_ACCOUNT_ID \>--set newrelic-k8s-metrics-adapter.config.externalMetrics.external_metric_name.query=NRQL query
Observe e ajuste os seguintes sinalizadores:
metrics-adapter.enabled
: Deve ser configurado comotrue
para que o gráfico do adaptador métrico seja instalado.newrelic-k8s-metrics-adapter.personalAPIKey
: Deve ser definido como uma chave de API pessoal válida do New Relic.newrelic-k8s-metrics-adapter.config.accountID
: Deve ser definido para uma conta New Relic válida de onde as métricas serão obtidas.newrelic-k8s-metrics-adapter.config.externalMetrics.external_metric_name.query
: adiciona uma nova métrica externa onde:external_metric_name
: o nome da métrica.query
: a consulta NRQL base usada para obter o valor da métrica.
Dica
Como alternativa, você pode usar um arquivo values.yaml
que pode ser transmitido ao comando helm com a sinalização --values
. Os arquivos de valores podem conter todos os parâmetros necessários para configurar a métrica explicada na seção de configuração .
Configuração
Você pode configurar múltiplas métricas no adaptador métrica e alterar alguns parâmetros para modificar o comportamento do cache métrico e da filtragem. Para ver a lista completa e as descrições de todos os parâmetros que podem ser modificados, consulte os arquivos do gráfico README.md e values.yaml .
Como funciona
O exemplo a seguir é um arquivo de valores do Helm que habilita o adaptador métrica na instalação do gráfico nri-bundle
e configura a métrica nginx_average_requests
:
metrics-adapter: enabled: truenewrelic-k8s-metrics-adapter: personalAPIKey: <Personal API Key> config: accountID: <Account ID> externalMetrics: nginx_average_requests: query: "FROM Metric SELECT average(nginx.server.net.requestsPerSecond) SINCE 2 MINUTES AGO"
Cuidado
O intervalo de tempo padrão para métrica é 1h. Portanto, você deve definir consulta com a cláusula SINCE
para ajustar o intervalo de tempo de acordo com seu ambiente e necessidades.
Existe um HPA consumindo a métrica externa da seguinte forma:
kind: HorizontalPodAutoscalerapiVersion: autoscaling/v2beta2metadata: name: nginx-scalerspec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 maxReplicas: 10 metrics: - type: External external: metric: name: nginx_average_requests selector: matchLabels: k8s.namespaceName: nginx target: type: Value value: 10000
Com base na definição do HPA, o gerenciador do controlador busca a métrica da API métrica externa que é atendida pelo adaptador métrica New Relic .
O adaptador métrico New Relic recebe a consulta incluindo o nome da métrica nginx_average_requests
e todos os seletores, e procura um nome de métrica correspondente na memória interna com base na métrica configurada. Em seguida, ele adiciona os seletores à consulta para formar uma consulta final que é executada usando o NerdGraph para buscar o valor do New Relic. O exemplo acima irá gerar uma consulta como a seguinte:
FROM Metric SELECT average(nginx.server.net.requestsPerSecond) WHERE clusterName=CLUSTER_NAME AND `k8s.namespaceName`='nginx' SINCE 2 MINUTES AGO
Observe que um filtro clusterName
foi adicionado automaticamente à consulta para excluir métricas de outros clusters na mesma conta. Você pode removê-lo usando o parâmetro de configuração removeClusterFilter
. Além disso, o valor é armazenado em cache por um período de tempo definido pelo parâmetro de configuração cacheTTLSeconds
, cujo padrão é 30 segundos.