즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

써드파티 도구/유용한 도구

윈도우 시스템 실시간 모니터링

다물칸 2023. 8. 31. 16:45
728x90

개요

모니터링 도구 하면 ELK가 떠오를 것이다. ELK는 Elastic Search + Log Stash + Kibana 솔루션을 합친 모니터링 플랫폼이다. 로그를 기반으로 매트릭 데이터를 Elastic Search에 누적시키고 키바나를 통해 시각화하는 것을 말한다. 

 

툴을 사용하는 것에 대해서는 무료지만, 전체적인 구성 하는데 컨설팅 비용은 천문학적 수준이다. 이것을 일개 개발자에게 시키는 것 또한 하나의 언어를 배우는 수준의 러닝 커브가 꽤 높다. 

 

게다가 ELK의 경우 로그기반이기 때문에 로그를 정제하는데 시간과 노력이 많이 필요하다. 또한 시각화.. 즉 대시보드를 구성하는 것 또한 마찬가지. 이것은 아래 설명할 녀석들도 해당이다. 

 

ELK의 대항마는 아니지만 순수 매트릭 데이터.. 여기서 매트릭 데이터라함은 로그성 데이터가 아닌 이를테면 CPU 사용량, 메모리 사용량 같은 이미 정제된 데이터를 수집해 시각화하는 도구를 소개해볼까 한다. 

 

Promethus + Exporter + Grafana 역시 무료로 사용이 가능하다. 

프로메테우스는 시계열 데이터베이스다. 그리고 Exporter는 내보내는 녀석 즉 메트릭 데이터를 수집하는 데몬 서버형태로 수많은 Exporter들이 이미 산재(프로메테우스 공식홈페이지에서 제공되는 Exporter들)되어 있다. 프로메테우스의 경우 클라이언트 처럼 Exporter들에 접속해 주기적으로 메트릭 데이터를 수집하는 형태로 동작한다. 

 

Exporter > Prometheus > Grafana 형태로 데이터가 움직인다. 

 

설치

 

본문에서는 윈도우에서 설치하고 매트릭 데이터를 그라파나에서 시각화되는 것을 확인해보겠다. 

 

Windows Exporter

 

Releases · prometheus-community/windows_exporter

Prometheus exporter for Windows machines. Contribute to prometheus-community/windows_exporter development by creating an account on GitHub.

github.com

실행파일을 다운받아 실행하면 다음과 같이 실행된다. 

Prometheus 

 

Download | Prometheus

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

prometheus.io

zip파일을 다운받아 풀어서 실행파일을 실행하면 다음과 같이 실행한다. 

프로메테우스는 promethus.yml (YAML)파일이 환경설정 파일이 된다. 여기에 Exporter정보를 넣어 수집해보자. 

# my global config
global:
  scrape_interval: 15s # 15초마다 메트릭데이터를 수집하겠다는 옵션이다.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9182"] # 윈도우 Exporter의 포트를 수정했다.

다시 시작해보자. 

브라우저에서 "localhost:9090"으로 접속하면 아래처럼 상태를 확인이 가능하다. 

타겟의 엔드포인트 URL을 눌러보면 수집된 메트릭데이터를 볼 수 있다. 각각의 데이터가 무엇인지는 Exporter의 깃헙 사이트에서 확인하자. 실행중인 서비스목록 등 여러 데이터가 많다.

 

Grafana

 

Download Grafana | Grafana Labs

Overview of how to download and install different versions of Grafana on different operating systems.

grafana.com

설치형 또는 단독 실행파일을 다운받아 실행한다. 프로메테우스 처럼 실행하고 웹 브라우저에서 설정을 하는 형태로 동작된다. 

그냥 쉽게 설치하면, 서비스 형태로 시작된다. 

설정 없이 브라우저에서 접속할 경우 "localhost:3000"으로 접속하면 로그인 창이 나오는데 여기서 "admin / admin"으로 접속하면 다음과 같이 접속된다. 

 

5년전에 했을 때보다 뭔가 많이 바뀐 것 같다. 

 

짝대기 3개를 클릭해서 Connections를 클릭하면 많은 리소스로부터 받을 수 있는데 우리는 프로메테우스로부터 데이터를 받아야 하니 아래처럼 검색해서 선택하자. 

클릭한 후, "Add New Data source"를 클릭한다.

아래 그림처럼 미리 세팅한 프로메테우스의 정보를 입력해야 한다. 

이미 뭔가가 입력된 것처럼 보이지만, 직접 입력을 해야 적용된다. 우선 URL정보를 입력하고 맨 아래 "Save & Test"를 클릭한다.

 

제대로 프로메테우스가 동작한다면 아래와 같은 메시지를 볼 수 있다. 

 

이제 부터 대시보드로 들어가 새로운 대시보드를 만들어보자. 

 

여기서는 매트릭이 어떤 데이터인지 알아야 쿼리를 하고 타이틀이나 라벨등을 넣어 데이터를 만들어낼 수 있다. 

 

메트릭 검색 쪽 보면 "Open"이 있는데 이걸 누르면 "Metrics Exporter" 검색이 가능하다. 

여기서 영문이기는 하지만 살펴보면 알아서 타입도 게이지로 할 건지도 나온다. "Select"하고 쿼리실행을 해보면 짜잔 그래프를 그려지는 것을 볼 수 있다. 

 

하나하나 판넬을 추가하고 저장하면 대시보드를 구성이 가능하다. 

 

메트릭 익스포터를 보면 알겠지만, 우리가 설치한 윈도우 익스포터 외에도 다른 메트릭들이 있는 것을 볼 수 있는데 이는 프로메테우스 자체에서 별도 메트릭 데이터도 포함된 것이다. 즉, 다른 익스포터들을 프로메테우스와 연동하면 별도 설정없이 이 메트릭 익스포터 검색창에서 데이터를 가져올 수 있다. 

 

대충 최종.. 

반응형