Kubernetes의 시스템 메트릭을 Prometheus에서 수집하고 New Relic에 통합해보십시오.

New Relic Advent Calendar 2019의 21일째 게시물입니다. (컨디션 불량으로 투고가 상당히 늦어 버렸습니다..)

소개



당사의 제품에서는 데이터 전송의 기반을 Kubernetes(EKS)로 구축하고 있습니다.
데이터 전송은 Jobs에서 수행됩니다.

인프라 및 애플리케이션 모니터링에는 New Relic을 사용합니다. 지표를 수집하려면 Prometheus을 사용합니다.

이번에는 Kubernetes의 시스템 메트릭을 Prometheus에서 수집하고 New Relic에 통합하는 곳까지를 소개하고 싶습니다.

Prometheus와 new relic의 협력에 대하여



Kubernetes와 New Relic의 협력은 New Relic Prometheus OpenMetrics을 사용합니다.
모니터링되는 Prometheus 엔드포인트를 자동으로 식별하여 메트릭을 수집할 수 있습니다. 수집한 지표는 New Relic Insights에 의해 시각화됩니다.



방법



Kubernetes에 New Relic Prometheus OpenMetrics를 도입하는 방법은 여기을 참조하십시오.

기본적으로 New Relic이 제공하는 manifest file에 New Relic의 라이센스 키나 클러스터 이름을 입력하고 apply하는 것만으로 도입 가능합니다.

배포가 완료되면 아래와 같이 New Relic Prometheus OpenMetrics 포드 (nri-prometheus-78888747d7-gxkrd)가 시작됩니다.
kubectl get pod -n kube-system
NAME                                 READY   STATUS    RESTARTS   AGE
aws-node-j825j                       1/1     Running   0          63m
aws-node-qmr56                       1/1     Running   0          4m
cluster-autoscaler-779c8bfb8-zvcxx   1/1     Running   0          25m
coredns-57db5788d5-968pj             1/1     Running   0          25m
coredns-57db5788d5-nrjpk             1/1     Running   0          25m
fluentd-7ft2n                        1/1     Running   0          63m
fluentd-p48g5                        1/1     Running   0          3m40s
kube-proxy-cktvq                     1/1     Running   0          63m
kube-proxy-htwgh                     1/1     Running   0          4m
kube-state-metrics-d6c99df65-9p8qk   2/2     Running   0          25m
nri-prometheus-78888747d7-gxkrd      1/1     Running   0          25m

수집할 Prometheus 엔드포인트를 식별하는 방법은 주로 두 가지입니다.
  • Deployment에 레이블을 제공하여 자동으로 식별

  • 아래와 같이 Deployment template label에 prometheus.io를 주는 것으로 식별 가능하게 됩니다. 아래 예제에서는 9394 포트 metrics에 액세스하여 메트릭 수집이 가능하도록 설정합니다.
    apiVersion: apps/v1
    kind: Deployment
    spec:
    
      ・
      ・
      ・
    
      template:
        metadata:
          labels:
            prometheus.io/scrape: "true"
            prometheus.io/port: "9394"
            prometheus.io/path: "metrics"
    
  • Prometheus 엔드 포인트 URL을 config의 대상으로 설정합니다.

  • New Relic Prometheus OpenMetrics manifest 파일의 config.yaml 내에 고정 URL을 설정할 수 있는 항목이 있으므로, 거기에 엔드포인트 정보를 기재한다
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: nri-prometheus
    
    
    ・
    ・
    ・
    
    apiVersion: v1
    data:
      config.yaml: |
    
        ・
        ・
        ・
    
        targets:
          - description: trocco app
            urls: ["http://sample.com:9394/metrics", "http://sample.com:9100/metrics"]
    

    이렇게 하면 Prometheus에서 수집한 지표를 New Relic과 연동할 수 있습니다.

    수집된 지표 시각화



    수집한 지표는 New Relic Insight에 의해 시각화가 가능합니다.
    NRQL 쿼리에서 필요한 데이터를 추출하고 시각화, 경고를 설정합니다. 다음은 수집된 지표를 시각화한 예입니다.



    오늘은 Kubernetes의 시스템 메트릭을 Prometheus에서 수집하고 New Relic에 통합하는 곳을 소개했습니다. 아직 New Relic은 만져 1개월 정도입니다만, 여러가지 할 수 있는 것이 많이 즐겁습니다. 앞으로 점점 잘 다루고 싶습니다.

    끝까지 봐 주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기