TokyoAJ

도쿄아재

SERVER 2024.12.18

Prometheus + node_exporter

node_exporter

node_exporter는 Prometheus 모니터링 시스템에서 호스트 머신의 메트릭을 수집하는 역할을 하는 Prometheus Exporter 중 하나입니다. node_exporter는 호스트 시스템의 다양한 지표를 수집하여 Prometheus 형식으로 노출하며, 이를 Prometheus 서버가 수집하여 저장하도록 합니다.

주요 기능과 수집되는 메트릭의 종류에 대한 간략한 설명은 다음과 같습니다:

  1. 시스템 메트릭: CPU 사용량, 메모리 사용량, 디스크 사용량, 네트워크 통계 등과 같은 기본적인 시스템 수준의 메트릭을 수집합니다.
  2. 하드웨어 정보: CPU 모델, 메모리 크기, 디스크 및 네트워크 장치 정보와 같은 하드웨어 관련 정보를 수집합니다.
  3. 파일 시스템 메트릭: 각 파일 시스템의 사용 용량, 가용 용량, I/O 등과 같은 메트릭을 수집합니다.
  4. 네트워크 메트릭: 네트워크 인터페이스의 사용량, 오류, 패킷 손실 등과 같은 메트릭을 수집합니다.
  5. 프로세스 메트릭: 시스템에서 실행 중인 각 프로세스의 CPU 사용량, 메모리 사용량 등과 같은 메트릭을 수집합니다.

노드 익스포터는 이러한 메트릭을 /metrics 엔드포인트를 통해 제공하며, Prometheus 서버는 이 엔드포인트를 주기적으로 스크랩(scrape)하여 수집된 메트릭을 저장합니다. 수집된 데이터는 Prometheus에서 쿼리할 수 있고, Grafana와 함께 사용하여 대시보드를 생성하거나 경고를 설정하는 데 사용됩니다.

이는 Prometheus 모니터링 시스템을 사용하여 시스템 리소스 및 성능을 지속적으로 모니터링하고 분석하는 데 중요한 역할을 하는 기본적인 도구 중 하나입니다.

Node Exporter를 다운로드하려면 여기를 클릭하세요. 가장 최신 버전은 1.7.0이며, 해당 URL을 사용하여 다운로드할 수 있습니다. 다운로드한 후, 압축을 해제하고 실행하여 노드 익스포터를 시스템에 설치하세요. 자세한 내용은 위의 문서를 참조하세요.


다운로드

https://prometheus.io/download


가장 최신 버전이 1.7.0입니다. .tar.gz URL을 복사하고 해당 URL을 서버의 어딘가에 wget이나 cURL을 사용하여 다운로드하세요.

wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz


Node Exporter의 최신 버전을 다운로드한 후에, 다음 명령어를 사용하여 다운로드한 tar 파일의 내용물을 추출하십시오.

tar xvf node_exporter-1.7.0.linux-amd64.tar.gz

zip 파일의 내용물은 현재 디렉토리에 추출됩니다. 추출된 디렉토리에는 3개의 파일이 포함됩니다:

LICENSE (라이선스 텍스트 파일)

node_exporter (바이너리 파일)

NOTICE (라이선스 텍스트 파일)


바이너리 파일인 node_exporter를 시스템의 /usr/local/bin 디렉토리로 이동하면 됩니다. node_exporter 디렉토리로 전환하세요:

cd node_exporter-1.7.0.linux-amd64


그런 다음 다음 명령을 사용하여 바이너리 파일을 복사합니다:

sudo cp node_exporter /usr/local/bin


다운받은 파일을 삭제합니다.

# Exit current directory
cd ..

# Remove the extracted directory
rm -rf ./node_exporter-1.7.0.linux-amd64


시스템에 node_exporter를 위한 사용자를 생성합니다.

sudo useradd --no-create-home --shell /bin/false node_exporter


그리고 바이너리 파일인 node_exporter의 소유자를 방금 만든 사용자로 설정합니다.

sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter


서버 부팅 시 항상 node_exporter 서비스가 시작되어 정보를 수집할 수 있도록 설정해야 합니다. nano를 사용하여 node_exporter.service 파일을 생성합니다.

sudo nano /etc/systemd/system/node_exporter.service


그리고 파일에 다음 내용을 붙여넣으세요

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target


nano를 닫고 파일에 대한 변경 사항을 저장하세요. 그런 다음 다음 명령으로 데몬을 다시 로드하세요

sudo systemctl daemon-reload


다음 명령을 사용하여 node_exporter 서비스를 활성화하세요

sudo systemctl enable node_exporter


서비스를 시작하세요

sudo systemctl start node_exporter


기본적으로 node_exporter 서비스는 서버의 포트 9100에서 실행됩니다. 서비스를 시작한 후에 서비스에 접근할 수 없는 경우, Ubuntu 서버에서 포트 9100을 열지 않았는지 확인하세요. UFW (Uncomplicated Firewall)를 사용하는 경우 다음 지침을 사용하여 이 포트를 쉽게 열 수 있습니다:

sudo iptables -I INPUT -p tcp -m tcp --dport 9100 -j ACCEPT


실행확인

sudo systemctl status node_exporter
● node_exporter.service - Node Exporter
Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2023-11-25 15:21:28 UTC; 20h ago
Main PID: 2634582 (node_exporter)
Tasks: 4 (limit: 1033)
Memory: 16.0M
CPU: 33.416s
CGroup: /system.slice/node_exporter.service
└─2634582 /usr/local/bin/node_exporter


웹사이트에서 실행확인


Metrics 클릭 데이터 확인


1. CPU 메트릭

  1. CPU 사용률: 각 CPU 코어별 사용률.
  2. 시스템 로드: 시스템의 평균 로드.
  3. 컨텍스트 스위치: 프로세스간 컨텍스트 스위치 횟수.

2. 메모리 메트릭

  1. 전체 메모리 사용량: 사용 중인 메모리 양.
  2. 가용 메모리: 시스템에 사용 가능한 메모리 양.
  3. 스왑 사용량: 스왑 공간 사용량.

3. 디스크 메트릭

  1. 디스크 I/O: 읽기/쓰기 작업에 대한 디스크 I/O 통계.
  2. 디스크 사용량: 마운트된 파일 시스템별 사용량.
  3. 디스크 상태: 디스크의 상태 및 성능 지표.

4. 네트워크 메트릭

  1. 네트워크 트래픽: 전송 및 수신 데이터량.
  2. 네트워크 상태: 네트워크 인터페이스 상태.
  3. 네트워크 오류: 네트워크 오류 통계.

5. 파일 시스템 메트릭

  1. 파일 시스템 사용량: 각 파일 시스템의 사용률.
  2. 인플레이스 I/O 통계: 파일 시스템별 I/O 작업 통계.

6. 기타 시스템 메트릭

  1. 프로세스 수: 시스템에서 실행 중인 프로세스 수.
  2. 시스템 업타임: 시스템이 시작된 이후의 시간.
  3. 로그인 사용자 수: 시스템에 로그인한 사용자 수.