전 글에서 모니터링을 위해 프로메테우스를 설치하고 실행해보았다.
프로메테우스에서는 다양한 exporter가 있는데, 상황에 맞게 설치하여 애플리케이션 또는 서버를 모니터링할 수 있다.
그 중 많이 쓰이는 것은 node exporter로, 하드웨어 커널과 관련된 메트릭 정보를 수집하는 exporter이다. 주로 CPU, Memory, Netwok 모니터링 시 사용한다.
이 글에서는 node exporter를 설치하여 prometheus가 수집할 수 있도록 할 것이다.
목차는 다음과 같다.
1. node exporter 설치
2. Configuration (prometheus.yml)
3. Prometheus 재실행
4. node exporter 확인
공식 홈페이지로 들어가서 node exporter의 다운로드 링크를 복사한다.
서버에 들어가 설치 후 실행해준다.
# 복사한 링크 붙여넣어 tar 파일 가져오기
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
# 압축 해제
tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz
cd node_exporter-1.7.0.linux-amd64/
# node exporter 실행
./node_exporter
이제 localhost:9100/metrics
엔드포인트를 통해 지표를 수집하고 있는 것을 볼 수 있다.
아래 명령어를 서버에 입력하면 다음과 같이 뜰 것이다.
curl http://localhost:9100/metrics
위 사진은 node exporter가 메트릭을 정상적으로 수집하고 있으며, 어떤 메트릭을 수집하고 있는지 볼 수 있다.
이 중 하나로 예시를 들어보겠다.
# HELP node_memory_MemTotal_bytes Memory information field MemTotal_bytes.
# TYPE node_memory_MemTotal_bytes gauge
node_memory_MemTotal_bytes 1.004036096e+09
"node_memory_MemTotal_bytes"라는 메트릭은 메모리 총 용량을 나타내며, 총 용량은 1.004036096 × 10^9 바이트 즉, 약 1GB라는 것이다.
추가 - node exporter service 만들기
node exporter를 좀 더 쉽게 관리해주기 위해서 service로 만들 것이다.
1. 심볼릭 링크 생성ln -s ./node_exporter-1.7.0.linux-amd64/ node_exporter
- service 파일 생성
cd /etc/systemd/system vim node_exporter.service
[Unit] Description=Prometheus Node Exporter Documentation=https://prometheus.io/docs/guides/node-exporter/ Wants=network-online.target After=network-online.target [Service] User=root Restart=on-failure ExecStart=/usr/local/monitoring/node_exporter/node_exporter [Install] WantedBy=multi-user.target
위의 설정에서 ExecStart의 경로는 node_exporter가 있는 경로로 수정해주면 된다.
- 실행
chmod 755 node_exporter.service systemctl daemon-reload systemctl start node_exporter.service
prometheus.yml
파일에 들어가 아래 내용을 추가한다.
scrape_configs:
- job_name: node-exporter
metrics_path: /metrics
static_configs:
- targets:
- localhost:9100
labels:
group: test
job_name
: 수집 그룹 지정metrics_path
: 수집할 endpoint의 pathtargets
: 수집할 대상 지정 (IP, hostname)labels
: 라벨 지정, 이후 promql에서 필터링 할 때 사용프로메테우스에서 수집되는 endpoint는 targets+metric
이다.
위의 설정에서는 target
은 localhost:9100이고, metrics_path
가 /metrics이므로 수집 endpoint는 localhost:9100/metric이라는 뜻이다.
위에서 node exporter 설치 후 메트릭 수집 확인을 위해 curl로 입력한 주소와 동일한 것을 알 수 있다.
curl http://localhost:9100/metrics
prometeus를 재시작해준다.
ps -ef | grep prometheus
kill -9 <prometheus_PID>
./prometheus --config.file=./prometheus.yml
만약 프로세스 죽이지않고 재시작 하고 싶다면 아래와 같이 입력하면 된다.
kill -s SIGHUP <PID>
이후 localhost:9090/targets 으로 들어가 확인하면 아래와 같이 타겟이 추가된 것을 볼 수 있다.
prometheus.yml
에서 지정한 job-name이다.prometheus.yml
에서 target+metric_path이다. 위에서는 localhost:9100/metric이다.curl http://localhost:9100/metrics
이제 node exporter가 수집하는 메트릭에 대해서 prometheus 페이지에서 promql 통해 확인할 수 있다. 메모리 총 용량을 보기 위해 아래와 같이 입력하면 된다.
명령어 옆에 중괄호로 key, value 형태로 묶어 필터링할 수 있다. 여기에서는 직접 추가한 라벨로 필터링을 하였다.
이렇게 모니터링을 위해 prometehus 서버에 node exporter를 설치해보았다.
다음에는 다른 서버 모니터링을 구성하고 설정해보겠다.
참고