LLM 모델(Ollama)을 돌리고 모니터링은 Prometheus/Grafana로 구성

Ubuntu - Ubuntu 24.04.3 LTS로 진행하였습니다.

# apt update
# apt -y upgrade

를 입력해 패키지 저장소에서 최신 패키지 목록을 받아오고, 설치되어 있는 패키지들을 최신 버전으로 업그레이드 진행

# lspci | grep -i nvidia

를 입력하여 GPU가 인식되는지 확인

-결과값

00:06.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)

# apt install ubuntu-drivers-common

Ubuntu에서 하드웨어 드라이버를 자동으로 감지, 추천 및 설치를 할 수 있게 도와주는 도구 패키지 설치

# ubuntu-drivers devices

설치한 도구의 명령어를 입력하여 Ubuntu에서 추천하는 드라이버 확인

-결과값

vendor : NVIDIA Corporation

model : TU104GL [Tesla T4]

driver : nvidia-driver-580-server-open - distro non-free

driver : nvidia-driver-580-server - distro non-free

driver : nvidia-driver-580 - distro non-free

driver : nvidia-driver-470-server - distro non-free

driver : nvidia-driver-470 - distro non-free

driver : nvidia-driver-535 - distro non-free

driver : nvidia-driver-570-server - distro non-free

driver : nvidia-driver-535-server - distro non-free

driver : nvidia-driver-580-open - distro non-free recommended

driver : xserver-xorg-video-nouveau - distro free builtin

위와 같이 설치 가능한 드라이버 목록들이 뜨고 추천하는 드라이버 버전에 recommended 가 뜬 버전인

nvidia-driver-580버전 다운로드

# apt -y install nvidia-driver-580

https://ollama.com/download Download Ollama on macOS Download Ollama for macOS

ollama.com

# curl -fsSL https://ollama.com/install.sh | sh

Ollama 공식 사이트에서 제공하는 설치 스크립트를 crul 명령어를 통해 다운로드하고 즉시 실행

# ollama pull llama3.1:8b

현재 구성되어있는 GPU 서버가 NVIDIA Tesla T4 모델(16GB GDDR6)이기 때문에 16GB 메모리에 적합한

llama3.1:8b 버전을 선택하여 설치

# apt install -y docker.io

Open WebUI, Prometheus, Grafana를 컨테이너로 쓸 수 있도록 Doker를 설치

# docker run -d --name open-webui --network=host -v open-webui:/app/backend/data \

-e OLLAMA_BASE_URL= http://127.0.0.1:11434 --restart=always ghcr.io/open-webui/open-webui:main

Open WebUI를 Docker 컨테이너로 실행하는 명령어

-옵션 설명

-d: 백그라운드에서 실행

--name open-webui: 컨테이너 이름을 open-webui로 지정

--network=host: 호스트 네트워크를 별도 포트 매핑 필요 없이 그대로 사용할 수 있도록 설정(8080포트)

-v open-webui:/app/backend/data: Open WebUI 설정·데이터를 로컬 볼륨에 저장

-e OLLAMA_BASE_URL=http://127.0.0.1:11434: Open WebUI가 Ollama 서버로 요청을 보내는 주소 설정

(11434포트는 Ollama가 기본으로 사용하는 API포트)

--restart=always: 서버가 재부팅되거나 컨테이너가 죽어도 자동 재시작

ghcr.io/open-webui/open-webui:main: 최신 Open WebUI 이미지를 가져옴

이후 http://서버IP:8080 로 접속

관리자 ID 생성 후 우측 상단 프로필 클릭 -> 관리자 패널 -> 설정 -> 모델 -> 톱니바퀴 옆 모델관리(다운로드 표시)

-> Ollama.com에서 모델 가져오기(pull) 옆 버튼 클릭

Ollama 모델이 가져와지면서

Ollama 모델이 정상 연결된 상태의 대화 UI

# apt install -y prometheus prometheus-node-exporter

GPU 서버의 상태 모니터링을 위해 Prometheus 설치

Prometheus는 모니터링 데이터를 저장·조회하는 역할을 하고,

Node Exporter는 시스템 정보를 Prometheus에 보내는 역할

# systemctl restart prometheus prometheus-node-exporter
# systemctl enable prometheus prometheus-node-exporter

설치한 서비스들을 즉시 재시작 및 활성화로 설치한 설정을 반영하고 서버가 재부팅 되더라도

자동으로 시작되도록 설정

http://서버IP:9090로 접속해 Prometheus 화면이 정상적으로 뜨는지 확인

# apt-get install -y adduser libfontconfig1 musl

Grafana.deb 패키지를 설치하기 전에 필요한 의존성 패키지 설치

Grafana 서비스용 계정 생성과 폰트 랜더링, 실행 바이너리가 의존하는 C 라이브러리(musl)를 제공

# wget https://dl.grafana.com/grafana-enterprise/release/12.3.0/grafana-enterprise_12.3.0_19497075765_linux_amd64.deb

wget을 통해 Grafana Enterprise 12.3.0 버전의 Debian/Ubuntu용 설치 패키지를 다운

# dpkg -l | grep grafana

-결과값

ii grafana-enterprise 12.3.0 amd64 "Grafana Enterprise"

# grafana-server -v

-결과값

Version 12.3.0

두 명령어를 통해 설치한 Grafana가 정상적인 설치 유무와 버전 확인

# systemctl daemon-reload
# systemctl enable grafana-server
# systemctl start grafana-server

Grafana 설치 후 systemd에 서비스 정보를 새로 반영, 부팅 시 자동 시작을 등록, 서비스를 즉시 실행

http://서버IP:3000으로 접속

초기 ID/비밀번호는 admin/admin 로그인 후 비밀번호 재설정

로그인 후 좌측 상단 그라파나 로고 클릭 -> connections -> Data Sources -> add datasource

prometheus 검색 후 커넥션 탭에서 http://localhost:9090으로 설정

그라파나에서 우측 상단 +버튼 옆 화살표 클릭 후 Import dashboard로 진입

ID 넣는 칸에 1860 입력 후 Load 버튼 클릭 import 버튼 클릭

대쉬보드에 해당 상태 정보들이 뜨는지 확인

GPU 상태 정보를 확인하기 위해 NVIDIA Container toolkit 설치

# apt-get install -y --no-install-recommends gnupg2

GPG 키(저장소 서명 키)를 처리하기 위한 패키지

NVIDIA Container Toolkit 레포지토리 추가

# curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

-GPG 키를 키링에 저장

# curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list > /dev/null

-APT 레포지토리를 추가

# apt-get update
# apt-get install -y nvidia-container-toolkit

패키지 목록 최신화 후 NVIDIA Container Toolkit 설치

# nvidia-ctk runtime configure --runtime=docker --config=/etc/docker/daemon.json

Docker가 GPU를 사용할 수 있도록 NVIDA 런타임을 자동으로 설정

# systemctl restart docker

설정 적용

# docker run --rm --gpus all nvidia/cuda:12.6.0-base-ubuntu22.04 nvidia-smi

도커 내부에서 GPU가 인식되는지 확인

# docker run -d --name dcgm-exporter --gpus all --restart unless-stopped \

-p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:latest

NVIDIA DCGM Exporter를 Docker 컨테이너로 실행해서, GPU 상태 정보를 Prometheus가 수집할 수 있도록 메트릭을 제공

# curl http://localhost:9400/metrics | head

메트릭이 나오는지 확인

# vim /etc/prometheus/prometheus.yml

파일 최하단에

- job_name: gpu

static_configs:

- targets: ['localhost:9400']

추가

Prometheus가 기본 설정 파일이 아닌, 수정한 prometheus.yml을 읽어오도록하기 위해 ARGS 값을 지정

# vim /etc/default/prometheus

ARGS="--config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/console_libraries"

내용 수정

http://서버IP:9090 에 접속해 Targets에서 상태가 up 되었는지 확인

Grafana에 접속하여

대쉬보드를 추가하고 12239 입력 후 확인

대화 UI에 질의를 하고 Grafana에서 서버 상태 값의 변화가 있는지 확인

질의를 했을 때 그래픽카드의 온도 변화와 파워 사용량에 차이가 발생하는 것을 확인