Aperçu
Nous travaillons toujours sur cette fonctionnalité, mais nous aimerions que vous l'essayiez !
Cette fonctionnalité est actuellement fournie dans le cadre d'un programme d'aperçu conformément à nos politiques de pré-sortie.
Vous pouvez utiliser les métriques de votre compte New Relic pour mettre à l'échelle automatiquement les applications et les services de votre cluster Kubernetes en déployant l' adaptateur Métriques New Relic. Cet adaptateur récupère les valeurs métriques de New Relic et les rend disponibles pour les Autoscalers de pod horizontaux.
L' adaptateur newrelic-k8s-métriques implémente l'API external.metrics.k8s.io
pour prendre en charge l'utilisation de résultats de requête New Relic NRQL basés sur des métriques externes. Une fois déployée, la valeur de chaque métrique configurée est récupérée à l'aide de l' API NerdGraph en fonction de la requête NRQL configurée.
L'adaptateur de métriques expose les métriques sur un point de terminaison sécurisé avec TLS.
Adaptateur de métriques New Relic dans un cluster.
Exigences
- Un cluster Kubernetes exécutant une version prise en charge.* L' intégration de New Relic Kubernetes.
- L' intégration de New Relic Kubernetes.
- API clé utilisateur de New Relic.
- Aucun autre adaptateur métrique externe n'est installé dans le cluster.
installation
Pour installer l'adaptateur Métriques New Relic, nous fournissons le graphique Helm newrelic-k8s-metrics-adapter
, qui est également inclus dans le graphique nri-bundle
utilisé pour déployer tous les composants New Relic Kubernetes .
Si ce n'est pas déjà fait, installez notre intégration Kubernetes.
Mettez à niveau l'installation pour inclure l'adaptateur New Relic Métriques avec la commande suivante :
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
Veuillez noter et ajuster les indicateurs suivants :
metrics-adapter.enabled
: Doit être défini surtrue
pour que le graphique d'adaptateur de métriques soit installé.newrelic-k8s-metrics-adapter.personalAPIKey
: Doit être défini sur une clé API personnelle New Relic valide.newrelic-k8s-metrics-adapter.config.accountID
: Doit être défini sur un compte New Relic valide à partir duquel les métriques seront récupérées.newrelic-k8s-metrics-adapter.config.externalMetrics.external_metric_name.query
: Ajoute une nouvelle métrique externe où :external_metric_name
:Le nom de la métrique.query
:La requête NRQL de base utilisée pour obtenir la valeur de la métrique.
Conseil
Alternativement, vous pouvez utiliser un fichier values.yaml
qui peut être transmis à la commande helm avec l'indicateur --values
. Les fichiers de valeurs peuvent contenir tous les paramètres nécessaires pour configurer les métriques expliquées dans la section de configuration .
Configuration
Vous pouvez configurer plusieurs métriques dans l'adaptateur de métriques et modifier certains paramètres pour modifier le comportement du cache et du filtrage des métriques. Pour voir la liste complète et les descriptions de tous les paramètres qui peuvent être modifiés, reportez-vous aux fichiers README.md et values.yaml du graphique.
Comment ça marche
L'exemple suivant est un fichier de valeurs Helm qui active l'adaptateur de métriques sur l'installation du graphique nri-bundle
et configure la métrique nginx_average_requests
:
newrelic-k8s-metrics-adapter: enabled: true 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"
Prudence
La durée par défaut des métriques est de 1 h. Par conséquent, vous devez définir la requête avec la clause SINCE
pour ajuster la durée en fonction de votre environnement et de vos besoins.
Il existe un HPA qui consomme la métrique externe comme suit :
kind: HorizontalPodAutoscalerapiVersion: autoscaling/v2metadata: 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
Sur la base de la définition HPA, le gestionnaire de contrôleur récupère les métriques de l'API de métriques externes qui sont servies par l'adaptateur de métriques New Relic.
L'adaptateur de métriques New Relic reçoit la requête incluant le nom de métrique nginx_average_requests
et tous les sélecteurs, et recherche un nom de métrique correspondant dans la mémoire interne en fonction des métriques configurées. Ensuite, il ajoute les sélecteurs à la requête pour former une requête finale qui est exécutée à l'aide de NerdGraph pour récupérer la valeur de New Relic. L'exemple ci-dessus générera une requête comme celle-ci :
FROM Metric SELECT average(nginx.server.net.requestsPerSecond) WHERE clusterName=CLUSTER_NAME AND `k8s.namespaceName`='nginx' SINCE 2 MINUTES AGO
Notez qu'un filtre clusterName
a été automatiquement ajouté à la requête pour exclure les métriques d'autres clusters du même compte. Vous pouvez le supprimer en utilisant le paramètre de configuration removeClusterFilter
. La valeur est également mise en cache pendant une période définie par le paramètre de configuration cacheTTLSeconds
, dont la valeur par défaut est de 30 secondes.