1분만에 Libvirt Exporter 설치하기

이석환·2023년 12월 9일

Cloud Monitoring

목록 보기
5/5
post-thumbnail

Libvirt Exporter란 ?

Libvirt Exporter는 Prometheus에 대해 노출된 Host 및 VM의 Metric을 수집할 수 있도록 도와준다.

특징

  • Libvirt와 통합
    • Libvirt Exporter는 Libvirt 툴킷과 통합되어 가상 머신을 관리한다.
    • Libvirt는 다양한 하이퍼바이저(KVM, QEMU, Xen, VirtualBox 등)를 지원하므로, 이러한 환경에서 실행 중인 가상 머신의 메트릭을 효과적으로 수집할 수 있다.

  • 가상 머신의 상태 및 리소스 모니터링:
    • Exporter는 가상 머신의 기본 상태(가동 중, 일시 중지, 종료 등)와 리소스 사용량(CPU, 메모리, 디스크, 네트워크 등)을 모니터링한다.
    • 이를 통해 시스템 운영자는 각 가상 머신의 성능과 상태를 실시간으로 파악할 수 있다.

  • Prometheus와 통합:
    • Libvirt Exporter는 Prometheus 수집기로 작동하여 Prometheus 서버에 메트릭을 노출한다.
    • 이로써 Prometheus의 강력한 쿼리 언어와 시각화 도구를 사용하여 가상 머신 환경의 모니터링을 수행할 수 있다.

  • 가상 머신의 이벤트 감지
    • Exporter는 Libvirt에서 발생하는 이벤트를 감지하고 해당 이벤트에 대한 메트릭을 생성한다.
    • 이는 예기치 않은 이벤트나 장애에 대한 조기 경고나 디버깅에 도움을 준다.

  • 커스텀 메트릭 정의:
    • 사용자는 필요에 따라 커스텀 메트릭을 정의하여 수집할 수 있다.
    • 이는 특정 가상 머신이나 리소스에 대한 사용자 지정 모니터링 요구 사항을 지원한다.

Install

https://github.com/zhangjianweibj/prometheus-libvirt-exporter
github에 많은 Livirt-exporter가 있지만 필자는 해당 프로젝트를 선택했다.
Go언어로 이루어져 있다.

깃허브 README를 그대로 하면 설치 및 실행이 안 된다.
그래서 나름대로 찾은 설치 방법과 실행 방법을 소개하고자 한다.

Go언어 설치

sudo apt install golang-go
go install github.com/goreleaser/goreleaser@latest
go install github.com/go-task/task/v3/cmd/task@latest

다운받기

git clone https://github.com/zhangjianweibj/prometheus-libvirt-exporter

cd prometheus-libvirt-exporter/

실행

여기서 바로 build 시키려고 하면 다음과 같은 에러가 나온다.

Go언어는 처음이라 조금 찾아보니, 모듈의 vendor 디렉토리에 일관성이 없어서 생긴 문제다.

go mod vendor

위의 명령어를 실행하여 모듈의 vendor 디렉토리를 현재의 모듈에 맞게 갱신해야 한다.

그 후, 다음과 같은 명령어를 쳐서 빌드한다.

go build prometheus-libvirt-exporter.go
./prometheus-libvirt-exporter

실행을 하면, 다음과 같은 화면을 볼 수 있다.

Background 실행

Background로 실행하려면 시스템에 service를 등록해야 한다.
다음과 같이 명령어를 치면 된다.

sudo vi /etc/systemd/system/libvirt-exporter.service
[Unit]
Description=Libvirt Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/home/ubuntu/prometheus-libvirt-exporter/prometheus-libvirt-exporter

[Install]
WantedBy=multi-user.target                           

여기서 ExecStart에는 본인의 설치한 libvirt-exporter의 위치를 기재해야 한다.

sudo systemctl daemon-reload
sudo systemctl enable libvirt-exporter.service
sudo systemctl start libvirt-exporter.service

profile
반갑습니다.

1개의 댓글

comment-user-thumbnail
2023년 12월 10일

석환님 글 보고 따라했더니, 3시간 34분 정도 걸렸네요^^
하지만 노력의 흔적은 보이네요.
고생 많았습니다.
해피 뉴이어

답글 달기