Monitoring/Prometheus

[Prometheus] Node Exporter란?

박만자 2022. 7. 28. 14:32

Node Exporter

Prometheus Node Exporter는 하드웨어의 상태와 커널 관련 메트릭을 수집하는 메트릭 수집기입니다. Prometheus는 Node Exporter의 metrics HTTP endpoint에 접근하여 해당 메트릭을 수집할 수 있습니다. Node Exporter로 부터 수집한 메트릭을 Prometheus내의 TSDB에 저장하여 PromQL로 메트릭을 쿼리해 서버 상태를 모니터링할 수 있습니다.

 

Node Exporter 설치

Node Exporter를 설치하는 방법은 압축 파일을 다운받아 바이너리 파일로 실행하는 방법과  도커 이미지로 컨테이너를 생성하여 실행하는 두 가지 방법이 있습니다. Node Exporter는 기본적으로 9100 포트를 사용하므로 9100 포트에 다른 서비스가 할당되어있는지 확인한 후 진행해 주시길 바랍니다. 예제는 AWS EC2(Amazon Linux 2)에서 진행하였습니다.

바이너리 파일로 실행

먼저 아래 사이트에 접속합니다.

https://prometheus.io/download/#node_exporter

 

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

 

자신에 OS에 맞는 압축 파일을 선택한 후 우클릭 하고 링크 주소 복사를 클릭합니다.

 

그다음 wget 명령어로 해당 압축 파일을 다운로드 합니다.

$ wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0-rc.0/node_exporter-1.4.0-rc.0.linux-amd64.tar.gz

 

다운로드한 압축 파일의 압축을 해제합니다.

$ tar xzvf prometheus-2.37.0.linux-amd64.tar.gz

 

압축 해제한 폴더로 이동합니다.

$ cd prometheus-2.37.0.linux-amd64/

 

폴더안에있는 바이너리 파일을 실행합니다.

$ ./node_exporter

컨테이너로 실행

다음 명령어로 Node Exporter를 컨테이너로 실행할 수 있습니다.

$ docker run -d --name node-exporter \
--net="host" \
--pid="host" \ 
-v "/:/host:ro,rslave" \ 
quay.io/prometheus/node-exporter:latest \
--path.rootfs=/host

컨테이너로 실행한 Node Exporter가 호스트를 모니터링 하기 위해서는 path.rootfs를 호스트의 루트 디렉토리로 지정해 주어야 합니다. 그래야 Node Exporter가 호스트의 파일 시스템에 접근할 수 있습니다. -v 옵션으로 호스트의 루트 디렉토리를 컨테이너 내부의 /host 디렉토리로 마운트 해주었고 해당 디렉토리를 path.rootfs로 지정해 주었습니다.

 

 

이미지 태그에 관한 정보는 아래 사이트에서 확인하실 수 있습니다.

https://hub.docker.com/r/prom/node-exporter

 

Docker Hub

 

hub.docker.com

 

Node Exporter 실행 확인

Node Exporter가 실행 중인 서버의 9100 포트로 접속합니다.

위와 같이 뜬다면 Node Exporter가 정상적으로 작동중인 것입니다. Node Exporter는 메트릭을 수집하는 역할만 하기 때문에 수집한 메트릭을 시각화하여 볼 수는 없습니다.

 

/metrics 경로로 접속하면 Node Exporter가 수집하는 메트릭에 관한 정보들을 확인하실 수 있습니다.

 

이제 Prometheus에서 다음과 같이 YAML파일을 구성하여 Node Exporter의 metrics HTTP endpoint에 접근할 수 있습니다.

scrape_configs:
  - job_name: 'node-exporter'
    static_configs:
    - targets: ['127.0.0.1:9100','127.0.0.2:9100',...]

 

참고