IBM Cloud Private(ICP)와 함께 제공되는 Prometheus 및 Grafana로 애플리케이션 메트릭을 시각화

목적



IBM Cloud Private(ICP)는 Prometheus와 Grafana가 kube-system 네임스페이스에서 작동하는 제품과 함께 제공되는 모니터링 도구입니다. 일반적으로 노드나 ICP 관련 서비스의 메트릭스를 수집하고 있습니다만, 모처럼이므로 어플리케이션의 메트릭스도 수집해 가시화해 보겠습니다.

검증 환경
- IBM Cloud Private 2.1.0.2 (Kubernetes 1.9.1)

절차



앱의 Prometheus용 메트릭 지원



과거 기사 「 Spring Boot 2에서 /actuator/prometheus 사용 」와 같은 방법이 있습니다. 이 경우 앱의 지표는 /actuator/prometheus에서 수집할 수 있습니다.

Prometheus의 ConfigMap 확인



Prometheus의 ConfigMap은 monitoring-prometheus라는 이름으로 정의되어 있으므로 내부를 확인합니다. 그러면 수상한 코멘트를 찾을 수 있습니다.
$ kubectl get configmap monitoring-prometheus -n kube-system -o yaml | more

      # Example scrape config for pods
      #
      # The relabeling allows the actual pod scrape endpoint to be configured via the
      # following annotations:
      #
      # * `prometheus.io/scrape`: Only scrape pods that have a value of `true`
      # * `prometheus.io/path`: If the metrics path is not `/metrics` override this.
      # * `prometheus.io/port`: Scrape the pod on the indicated port instead of the default of `9102`.
      - job_name: 'kubernetes-pods'

        kubernetes_sd_configs:
          - role: pod

사실, prometheus.io/scrape: "true"를 포드의 주석으로 지정하면이 Prometheus는 자동으로 메트릭을 수집합니다. 또, 수집시의 패스나 포트는 prometheus.io/pathprometheus.io/port 로 변경할 수 있습니다.

앱 배포



다음과 같이 주석을 지정합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kube-sample-top
spec:
  replicas: 2
  selector:
    matchLabels:
      app: kube-sample-top
  template:
    metadata:
      labels:
        app: kube-sample-top
      annotations:
        prometheus.io/scrape: "true" # 収集の有効化
        prometheus.io/path: /actuator/prometheus # パス
        prometheus.io/port: "8080:8080" # Podのポート:コンテナポート
    spec:
      containers:
(略)

Prometheus 확인



Promethues UI를 확인합니다. 포트가 공개되지 않으므로 port-forward합니다.
$ kubectl get pod -n kube-system | grep monitoring-prometheus 
monitoring-prometheus-7994986858-4nwp8                    3/3       Running     0          5d
(略)

$ kubectl port-forward monitoring-prometheus-7994986858-4nwp8 9090:9090 -n kube-system

브라우저에서 http://localhost:9090/로 이동하여 메뉴에서 Status → Targets를 선택합니다. 그렇다면 다음과 같이 Scraping이 시작되어야합니다.



Grafana 확인



ICP 대시보드에서 Platform→Monitoring을 선택하면 Grafana가 표시됩니다. 시험에 빈 대시보드를 만들고 JVM의 힙 사용량을 그래프로 표시해 봅니다.

다음과 유사한 조건을 지정합니다.



그러면 그래프가 그려졌습니다.



아주 쉬웠어요.

이상입니다.

좋은 웹페이지 즐겨찾기