Prometheus 는 시스템 모니터링 도구로, 서버나 애플리케이션의 성능 데이터를 수집하고 경고를 설정해 문제 발생 시 알림을 주는 역할을 합니다. Grafana 는 Prometheus 가 수집한 데이터를 시각화해 대시보드로 보여주는 도구로, 다양한 차트와 그래프로 데이터를 쉽게 분석할 수 있게 도와줍니다. 두 도구는 주로 함께 사용되어 실시간 모니터링과 시각화를 제공합니다. Ubuntu 24.04 서버에 두개의 도구를 설치하고 사용하는 방법에 대해 설명합니다.
1. 프로메테우스 설치 및 설정
프로메테우스 사용자 계정을 생성합니다.
# useradd –no-create-home –shell /bin/false prometheus
구성 파일과 라이브러리를 저장할 디렉토리를 생성합니다.
# mkdir /etc/prometheus
# mkdir /var/lib/prometheus
# chown prometheus:prometheus /var/lib/prometheus
프로메테우스 바이너리 파일을 다운로드 합니다.
# wget https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz
# tar xvzf prometheus-2.54.1.linux-amd64.tar.gz
# cd prometheus-2.54.1.linux-amd64
# mv console* /etc/prometheus
# mv prometheus.yml /etc/prometheus
# chown -R prometheus:prometheus /etc/prometheus
# mv prometheus /usr/local/bin/
# chown prometheus:prometheus /usr/local/bin/prometheus
프로메테우스 시스템 파일을 생성합니다.
# vi /etc/systemd/system/prometheus.service
[Unit] Description=Prometheus Wants=network-online.target After=network-online.target [Service] [Install] |
변경 사항을 적용합니다.
# systemctl daemon-reload
프로메테우스 부팅 가동 설정과 데몬을 실행합니다.
# systemctl enable –now prometheus
다음 주소와 같이 웹브라우저에서 접속이 되는지 확인합니다.
http://grafana.testdomain.kr:9090
2. Node Exporter 설치
# wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
# tar xvzf node_exporter-1.8.2.linux-amd64.tar.gz
# mv node_exporter-1.8.2.linux-amd64/node_exporter /usr/local/bin/
Node Exporter 계정을 생성합니다.
# useradd -rs /bin/false node_exporter
Node Exporter 시스템 파일을 생성합니다.
# vi /etc/systemd/system/node_exporter.service
[Unit] Description=Node Exporter After=network.target [Service] [Install] |
변경 사항을 적용합니다.
# systemctl daemon-reload
Node Exporter 부팅 가동 설정과 데몬을 실행합니다.
# systemctl enable –now node_exporter
3. 프로메테우스 설정
프로메테우스에 Node Exporter 설정을 합니다.
# vi /etc/prometheus/prometheus.yml
…
scrape_configs: |
데몬을 재시작하여 설정을 적용합니다.
# systemctl restart prometheus
4. Grafana 설치
다음 명령어로 Grafana GPG 키를 추가합니다.
# wget -q -O – https://packages.grafana.com/gpg.key | sudo apt-key add –
그라파나 저장소를 추가하고 설치를 진행합니다.
# add-apt-repository “deb https://packages.grafana.com/oss/deb stable main”
# apt -y update
# apt -y install grafana
부팅 실행 설정과 동시에 가동해줍니다.
# systemctl enable –now grafana-server
이제 웹브라우저에서 그라파나 대시보드에 접속할 수 있습니다.
주소는 아래와 같고, 기본 관리자 계정은 admin / admin 입니다.
로그인시 비밀번호 변경을 권장하고 있으므로, 바로 변경하여 보안을 강화하세요.
http://grafana.testdomain.kr:3000
5. 프로메테우스와 그라파나 연결
다음은 프로메테우스 데이터 소스를 가져와 대시보드로 출력하는 과정입니다.
그라파나 대시보드에 로그인하여 아래 메뉴를 따라 이동합니다.
– Home > Connections > Data sources
열린 페이지에서 계속 진행
[ Add data source ] 클릭 > [ Prometheus ] 클릭
– Prometheus server URL : http://grafana.testdomain.kr:9090
– Authentication methods : Basic authentication (선택), User, Password 입력 (prometheus.yml 에서 입력한 promadmin / 12345678)
– TLS settings : Skip TLS certificate validation (체크)
페이지 맨 하단의 [Save & test] 버튼을 눌러 이상이 없어야 합니다.
아래 메뉴를 따라 이동하여 대시보드 모니터링 스타일을 설정합니다.
– Dashboard > 열린 페이지에서 우측 상단 [New] 를 누르면 Import 가 보입니다. 이를 클릭합니다.
가운데 Grafana.com 의 대시보드 ID 를 넣을 수 있습니다. ‘15172’ 를 입력하고 로드 합니다.
맨 아래 메뉴 ‘Select a Prometheus data source’ 에서 ‘Prometheus’ 선택 후 [Import] 를 누릅니다.
마지막으로, 아래 메뉴를 따라 선택하면 선택한 스타일의 대시보드에 데이터 소스값이 출력됩니다.
– Dashboards > (리스트에서) Node Exporter for Prometheus Dashboard based on 11074 > ‘Resource Details: [grafana.testdomain.kr]’ 을 눌러 아래로 펼칩니다.
* 대시보드 레이아웃 제공 : https://grafana.com/grafana/dashboards/
※ GPU 서버 메트릭 수집
NVIDIA GPU 서버를 모니터링 할 경우 아래와 같이 셋팅 합니다.
1) NVIDIA 드라이버 및 CUDA 설치
현재 시스템에서 사용 가능한 NVIDIA 드라이버 버전을 확인합니다.
# apt -y update
# apt -y install ubuntu-drivers-common alsa-utils
# ubuntu-drivers devices
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
== /sys/devices/pci0000:64/0000:64:00.0/0000:65:00.0 ==
modalias : pci:v000010DEd00001E82sv000010DEsd000012B0bc03sc00i00
vendor : NVIDIA Corporation
model : TU104 [GeForce RTX 2080]
driver : nvidia-driver-470 – distro non-free
driver : nvidia-driver-550 – distro non-free recommended
driver : nvidia-driver-535 – distro non-free
driver : nvidia-driver-470-server – distro non-free
driver : nvidia-driver-535-open – distro non-free
driver : nvidia-driver-535-server – distro non-free
driver : nvidia-driver-535-server-open – distro non-free
driver : nvidia-driver-550-open – distro non-free
driver : xserver-xorg-video-nouveau – distro free builtin
여기에서는 출력된 목록에서 추천 표시된 버전으로 설치해 보겠습니다.
# apt -y install nvidia-driver-550
설치가 되었으면 리부팅을 합니다.
# reboot
설치를 확인합니다.
(우측 상단 CUDA 버전 확인 필요)
# nvidia-smi
이어서 CUDA 를 설치합니다.
아래 URL 에서 미리 체크한 CUDA 버전을 선택하면 설치 방법이 안내 됩니다.
참고로, 마지막 선택 (Install Type) 에서 runfile 을 선택하면 설치가 간단해 집니다.
https://developer.nvidia.com/cuda-toolkit-archive
설치 방법을 따라 설치를 하면 됩니다. (Install Type 을 runfile 로 선택하면 설치가 간단해 집니다)
Ubuntu 24.04 버전은 최근에 출시되어 그런지 버전이 나와있지않아 22.04 버전으로 선택하여 설치하였습니다.
# wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run
# sh cuda_12.4.1_550.54.15_linux.run
처음 설치 화면이 뜨기까지 시간이 걸릴 수 있으며, 설치 과정은 Continue 선택 > accept 입력 > (미리 설치했으므로) ‘Driver’ 제외 및 나머지 기본값으로 Install 입니다.
파일 사이즈가 크기 때문에 여기에서도 시간이 다소 소요됩니다.
CUDA 설치가 완료되면, ~/.bashrc 파일에 경로를 추가하여 CUDA 바이너리에 접근할 수 있도록 합니다.
# echo ‘export PATH=/usr/local/cuda-12.4/bin:$PATH’ >> ~/.bashrc
# echo ‘export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH’ >> ~/.bashrc
# source ~/.bashrc
설치된 CUDA 버전을 확인합니다.
# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Mar_28_02:18:24_PDT_2024
Cuda compilation tools, release 12.4, V12.4.131
Build cuda_12.4.r12.4/compiler.34097967_0
2) NVIDIA GPU Exporter 설치
# wget https://github.com/utkuozdemir/nvidia_gpu_exporter/releases/download/v1.2.1/nvidia-gpu-exporter_1.2.1_linux_amd64.deb
# dpkg -i nvidia-gpu-exporter_1.2.1_linux_amd64.deb
OS 가 다른 경우, 또는 다른 버전의 패키지를 설치할 경우 배포 사이트를 방문해 보세요.
https://github.com/utkuozdemir/nvidia_gpu_exporter/releases
설치된 명령어가 확인됩니다.
# ll /usr/bin/nvidia_gpu_exporter
-rwxr-xr-x 1 root root 10367128 Jun 28 21:45 /usr/bin/nvidia_gpu_exporter*
서비스 파일을 아래와 같이 생성합니다.
NVIDIA GPU Exporter 서비스의 기본 포트는 9835 입니다.
# vi /etc/systemd/system/nvidia_gpu_exporter.service
[Unit] Description=Nvidia GPU Exporter After=network-online.target [Service] User=nvidia_gpu_exporter ExecStart=/usr/bin/nvidia_gpu_exporter SyslogIdentifier=nvidia_gpu_exporter Restart=always [Install] |
변경 사항을 적용, 부팅 가동 설정 및 데몬 시작을 합니다.
# systemctl daemon-reload
# systemctl enable –now nvidia_gpu_exporter.service
웹브라우저를 통해 서비스가 잘 동작하는지 확인합니다.
http://grafana.testdomain.kr:9835/metrics
3) 프로메테우스 설정
Nvidia GPU 매트릭을 출력할 준비가 되었습니다.
그라파나 대시보드에서 메트릭을 수집할 수 있도록 프로메테우스 설정을 변경 합니다.
# vi /etc/prometheus/prometheus.yml
…
scrape_configs: |
변경된 설정을 적용하기 위해 데몬을 재시작 합니다.
# systemctl restart prometheus
4) 그라파나 대시보드 설정
그라파나에서 소스데이터와 대시보드를 추가합니다.
그라파나 대시보드에 로그인하여 아래 메뉴를 따라 이동합니다.
– Home > Connections > Data sources
열린 페이지에서 계속 진행
[ Add data source ] 클릭 > [ Prometheus ] 클릭
– Prometheus server URL : http://grafana.testdomain.kr:9090
– Authentication methods : Basic authentication (선택), User, Password 입력 (prometheus.yml 에서 입력한 promadmin / 12345678)
– TLS settings : Skip TLS certificate validation (체크)
페이지 맨 하단의 [Save & test] 버튼을 눌러 이상이 없어야 합니다.
아래 메뉴를 따라 이동하여 대시보드 모니터링 스타일을 설정합니다.
– Dashboard > 열린 페이지에서 우측 상단 [New] 를 누르면 Import 가 보입니다. 이를 클릭합니다.
가운데 Grafana.com 의 대시보드 ID 를 넣을 수 있습니다. ‘14574’ 를 입력하고 로드 합니다.
맨 아래 메뉴 ‘Select a Prometheus data source’ 에서 ‘Prometheus’ 선택 후 [Import] 를 누릅니다.
마지막으로, 아래 메뉴를 따라 선택하면 선택한 스타일의 대시보드에 데이터 소스값이 출력됩니다.
– Dashboards > (리스트에서) Nvidia GPU Metrics 를 누르면 대시보드가 출력됩니다.
* NVIDIA 를 기준으로 하였지만, Tesla 도 되는듯 합니다.