본문 바로가기

Develop/DevOps

[모니터링] 프로메테우스 + 그라파나 모니터링 시스템 구축하기 (feat micrometer)

 

이 전에 만든 스프링 배치+스케줄러에서 호출하는 API 퍼포먼스 측정을 위해

CTO님이 WAS 모니터링 환경을 구성하는 업무를 지시하였다.

근데 난 모니터링 환경을 구성해본적이 없다 😭 ( 사이드프로젝트가 아니라 회사에서 구성한 적은 이번이 처음 😅)

 

스타트업에서는 해당 환경을 구성할 일이 없었고

그 전 회사에서는 어느 과장님께서 이미 구성한 환경을 이용만 해보았는데 

처음하는 일인지라 간만에 집중했던 것 같다 🤪

 

스카우터와 프로메테우스에서 고민을 많이 했지만

추후 확장성과 대시보드를 다양하게 구성할 수 있고 차트 디자인도 마음에 들어서

스카우터+그라파나 를 선택하게 되었다 😆

 

포스팅 할 생각이 없었던 지라 설치부터는 사진을 남기지 않았다.. 🤦‍♂️

공식문서 또는 위키 설명과 서버에 구성하는 방법에 대해서 간략한 설명(?)과 함께 포스팅을 남긴다.

 

프로메테우스를 통하여 메트릭 정보를 수집하고

그라파나로 수집한 데이터를 시각화 하여 모니터링 환경을 구성한다!

 

 

나는 centos 에 구성하였다.

 


그래서... 프로메테우스(Prometheus) 가 뭔가요? 😅

공식문서에서는 아래와 같이 설명하고 있다.

 

프로메테우스란? 🤔

 

Prometheus 는 원래 SoundCloud 에서 구축된 오픈 소스 시스템 모니터링 및 경고 툴킷입니다 . 2012년 시작된 이후 많은 기업과 조직에서 Prometheus를 채택했으며 이 프로젝트에는 매우 활발한 개발자 및 사용자 커뮤니티가 있습니다 . 이제는 독립형 오픈 소스 프로젝트이며 어떤 회사와도 독립적으로 유지 관리됩니다. 이를 강조하고 프로젝트의 거버넌스 구조를 명확히 하기 위해 Prometheus는 Kubernetes 에 이어 두 번째 호스팅 프로젝트로 2016년에 Cloud Native Computing Foundation 에 합류했습니다 .

Prometheus는 지표를 시계열 데이터로 수집하고 저장합니다. 즉, 지표 정보는 레이블이라고 하는 선택적 키-값 쌍과 함께 기록된 타임스탬프와 함께 저장됩니다.

 

 

프로메테우스 아키텍처 (출처 : 프로메테우스 공식 홈페이지)

 

 

 


그래서... 그라파나는 뭔가요? 🤔

 

 

위키백과에서는 그라파나를 아래와 같이 설명하고 있다.

 

Grafana는 멀티플랫폼 오픈 소스 애널리틱스 및 인터랙티브 시각화 웹 애플리케이션이다.

지원되는 데이터 소스에 연결될 때 웹의 차트, 그래프, 경보를 제공한다. 추가 기능이 포함된 라이선스된 GRafana Enterprise 버전은 셀프 호스팅된 설치본으로, 또는 Grafana Labs 클라우드 서비스의 계정으로 이용이 가능하다. 플러그인을 통해 확장이 가능하다. 최종 사용자는 인터랙티브 쿼리 빌더를 사용하여 복잡한 모니터링 대시보드를 만들 수 있다. Grafana는 타입스크립트 기반 프론트엔드, Go 기반 백엔드로 나뉜다.

 


처음에 포스팅 할 생각이 없어가지고 리눅스 환경에 Prometheus , Grafana  설치하는 사진은 없다..

설정부터 살펴보자 설치 방법은 공식문서 또는 다른 블로그 포스팅을 참고하시길!! 

 


cpu 사용률,메모리 사용량 기타 등등 메트릭 정보도 수집하기 위해  *  Node Exporter 도 같이 설치해주자

 

* Node Exporter 는 Prometheus와 함께 사용되는 오픈 소스 소프트웨어입니다. Node Exporter는 리눅스 및 Unix 시스템에서 실행되는 서버 리소스 및 운영 체제 메트릭을 수집하는 데 사용됩니다.

Node Exporter는 CPU 사용률, 메모리 사용량, 디스크 사용량, 네트워크 활동 및 기타 시스템 관련 메트릭과 같은 다양한 정보를 제공합니다. 이러한 메트릭은 Prometheus 서버로 전송되어 모니터링, 경고 및 시각화를 위해 사용될 수 있습니다.

따라서 Node Exporter는 서버의 상태와 성능을 모니터링하고 이를 Prometheus나 기타 모니터링 도구를 사용하여 분석하는 데 사용됩니다. 이를 통해 시스템 관리자는 서버의 건강 상태를 파악하고 필요한 조치를 취할 수 있습니다.


 

다른 모니터링 오픈 소스에 비해  프로메테우스 + 그라파나 설정은 비교적 간단한 것 같다. 

 

 

1. 메트릭 정보를 수집할 gradle 프로젝트에 아래와 같이 의존성을 추가한다

 

2. 프로젝트 application.yml 파일을 열어서 아래와 같이 Spring Actuator 설정을 추가한다. 

management:
  endpoints:
    web:
      exposure:
        include: prometheus
  metrics:
    tags:
      application: "ndj-project"

 

 

2. 프로메테우스 설치 경로에 가서 vi 편집기로 prometheus.yml 파일을 열어 편집한다.

vi prometheus.yml

 

global:
  scrape_interval: 10s

scrape_configs:
  - job_name: "수집한 타임시리즈1"
    metrics_path: "/actuator/prometheus"
    static_configs:
      - targets: ["localhost:포트"]

  - job_name: "수집한 타임시리즈2"
    metrics_path: "/actuator/prometheus"
    static_configs:
      - targets: ["localhost:포트"]

  - job_name: "수집한 타임시리즈3"
    metrics_path: "/actuator/prometheus"
    static_configs:
      - targets: ["localhost:8088"]

  - job_name: "수집한 타임시리즈4"
    metrics_path: "/actuator/prometheus"
    static_configs:
      - targets: [ "localhost:8180" ]

  - job_name: "수집한 타임시리즈5"
    metrics_path: "/actuator/prometheus"
    static_configs:
      - targets: [ "localhost:8380" ]

  - job_name: "수집한 타임시리즈6"
    metrics_path: "/actuator/prometheus"
    static_configs:
      - targets: [ "localhost:포트" ]
  
  - job_name: "수집한 타임시리즈7"
    metrics_path: "/actuator/prometheus"
    static_configs:
      - targets: [ "localhost:포트" ]
  
  - job_name: "수집한 타임시리즈8"
    metrics_path: "/actuator/prometheus"
    static_configs:
      - targets: [ "localhost:포트" ]

  - job_name: "수집한 타임시리즈9"
    metrics_path: "/actuator/prometheus"
    static_configs:
      - targets: [ "localhost:포트" ]



  - job_name: "node_exporter"
    static_configs:
      - targets: ["localhost:포트"]

  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:포트"]

 

 

3. 그라파나에 어드민 계정으로 접속한다.

(어드민 설정 하는 것도 사진을 남기지 않았기에 어드민 설정 방법은 공식문서 또는 다른 블로그 포스팅을 참고!!)

 

admin 계정으로 사용할 계정 role을 변경할 수 있다.

별도 설정하지 않았다면 어드민 계정 아이디 admin 비밀번호 admin 

 

좌측 메뉴에서 톱니바퀴 (Configuration) 메뉴에서 내가 이용할 계정 role 변경 이후 datasource에서 prometheus를 추가한다.

 

 

 

4. + 버튼을 클릭하여 대시보드를 구성하거나 

 이미 다른 사용자가 구성해놓은 템플릿을 다운로드 하여 그라파나에 import 하여 이용할 수도 있다.

https://grafana.com/grafana/dashboards/

 

나는 여기서 https://grafana.com/grafana/dashboards/4701-jvm-micrometer/ 를 이용하고 있다.

 

 

 

포스팅 생각이 없었기에 두서 없이 작성해버렸다..

잘못된 정보 댓글 남겨주시면 바로 정정하겠습니다 !!


 

Ref

 

https://prometheus.io/docs/introduction/overview/

 

Overview | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

prometheus.io

 

https://github.com/prometheus/prometheus

 

GitHub - prometheus/prometheus: The Prometheus monitoring system and time series database.

The Prometheus monitoring system and time series database. - prometheus/prometheus

github.com

 

https://grafana.com/docs/grafana/latest/

 

Grafana open source documentation | Grafana documentation

Thank you! Your message has been received!

grafana.com

 

https://github.com/grafana/grafana

 

GitHub - grafana/grafana: The open and composable observability and data visualization platform. Visualize metrics, logs, and tr

The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many mo...

github.com

 

https://micrometer.io/

 

Micrometer Application Observability

Vendor-neutral application observability facade Micrometer provides a facade for the most popular observability systems, allowing you to instrument your JVM-based application code without vendor lock-in. Think SLF4J, but for observability.

micrometer.io

 

반응형