New Relic 메트릭 어댑터 를 배포하여 New Relic 계정의 메트릭을 사용하여 Kubernetes 클러스터의 애플리케이션 및 서비스를 자동 확장할 수 있습니다. 이 어댑터는 New Relic에서 메트릭 값을 가져와 Horizontal Pod Autoscaler 에서 사용할 수 있도록 합니다.
newrelic-k8s-metrics-adapter는 New Relic NRQL 쿼리 결과 기반의 외부 측정항목 사용을 지원하기 위해 external.metrics.k8s.io
API를 구현합니다. 배포되면 구성된 NRQL 쿼리를 기반으로 NerdGraph API를 사용하여 구성된 각 측정항목의 값을 가져옵니다.
메트릭 어댑터는 TLS를 사용하여 보안 엔드포인트를 통해 메트릭을 노출합니다.
클러스터의 New Relic 메트릭 어댑터.
요구 사항
- 지원되는 버전을 실행하는 Kubernetes 클러스터.* New Relic Kubernetes 통합.
- New Relic Kubernetes 통합 .
- New Relic의 사용자 API 키 .
- 클러스터에 설치된 다른 외부 메트릭 어댑터가 없습니다.
설치
New Relic Metrics Adapter를 설치하기 위해 모든 New Relic Kubernetes 구성요소를 배포하는 데 사용되는 nri-bundle
차트에도 포함된 newrelic-k8s-metrics-adapter
Helm 차트를 제공합니다.
아직 설치하지 않은 경우 Kubernetes 통합을 설치하세요.
다음 명령을 사용하여 New Relic Metrics Adapter를 포함하도록 설치를 업그레이드하십시오.
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
다음 플래그를 확인하고 조정하십시오.
metrics-adapter.enabled
: 측정항목 어댑터 차트가 설치되도록true
으로 설정해야 합니다.newrelic-k8s-metrics-adapter.personalAPIKey
: 유효한 New Relic 개인 API 키로 설정되어야 합니다.newrelic-k8s-metrics-adapter.config.accountID
: 메트릭을 가져올 유효한 New Relic 계정으로 설정해야 합니다.newrelic-k8s-metrics-adapter.config.externalMetrics.external_metric_name.query
: 다음과 같은 위치에 새 외부 측정항목을 추가합니다.external_metric_name
: 메트릭 이름입니다.query
: 메트릭 값을 가져오는 데 사용되는 기본 NRQL 쿼리입니다.
팁
또는 --values
플래그를 사용하여 helm 명령에 전달할 수 있는 values.yaml
파일을 사용할 수 있습니다. 값 파일에는 구성 섹션에 설명된 메트릭을 구성하는 데 필요한 모든 매개변수가 포함될 수 있습니다.
구성
메트릭 어댑터에서 여러 메트릭을 구성하고 일부 매개변수를 변경하여 메트릭 캐시 및 필터링의 동작을 수정할 수 있습니다. 수정할 수 있는 모든 매개변수의 전체 목록과 설명을 보려면 차트 README.md 및 values.yaml 파일을 참조하십시오.
작동 원리
다음 예는 nri-bundle
차트 설치에서 측정항목 어댑터를 활성화하고 nginx_average_requests
측정항목을 구성하는 Helm 값 파일입니다.
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"
주의
메트릭의 기본 시간 범위는 1h입니다. 따라서 SINCE
절로 쿼리를 정의하여 환경과 필요에 따라 시간 범위를 조정해야 합니다.
다음과 같이 외부 메트릭을 사용하는 HPA가 있습니다.
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
HPA 정의에 따라 컨트롤러 관리자는 New Relic 메트릭 어댑터에서 제공하는 외부 메트릭 API에서 메트릭을 가져옵니다.
New Relic 메트릭 어댑터는 nginx_average_requests
메트릭 이름과 모든 선택기를 포함하는 쿼리를 수신하고 구성된 메트릭을 기반으로 내부 메모리에서 일치하는 메트릭 이름을 검색합니다. 그런 다음 쿼리에 선택기를 추가하여 NerdGraph를 사용하여 실행되는 최종 쿼리를 구성하여 New Relic에서 값을 가져옵니다. 위의 예는 다음과 같은 쿼리를 생성합니다.
FROM Metric SELECT average(nginx.server.net.requestsPerSecond) WHERE clusterName=CLUSTER_NAME AND `k8s.namespaceName`='nginx' SINCE 2 MINUTES AGO
동일한 계정의 다른 클러스터에서 측정항목을 제외하기 위해 clusterName
필터가 쿼리에 자동으로 추가되었습니다. removeClusterFilter
구성 매개변수를 사용하여 제거할 수 있습니다. 또한 값은 기본값이 30초인 cacheTTLSeconds
구성 매개변수에 의해 정의된 기간 동안 캐시됩니다.