Database

[VictoriaMetrics] 설치

흥부가귀막혀 2022. 3. 14. 14:13

스펙

Server

  • CentOS 7.4 64bit
  • CPU: 2core
  • Mem: 2GB
  • Disk: 100GB
  • User: irteam(home: /home1/irteam/)

VictoriaMetrics

  • version: 1.62.0

Go

  • version: 1.16.5

HA 구성

  • HA 구성 방법에는 단일 노드와 cluster 구성 방법이 있다.
  • 단일 노드로 구성할 경우 vmagent 를 통해 단일 노드로 구축한 여러대의 victoria-metrics 에 write 를 할 수 있다. 만약 vmagent 를 사용하지 않을 경우 client 가 직접 이런 처리를 해야한다.
  • cluster 로 구성할 경우 vminsert 가 단일 노드시 사용하는 vmagent 역할을 하는거로 보인다.(이때 replica 도 정의할 수 있다.) 자세한 사항은 cluster guide 참고
  • metric 데이터량이 크지 않을 경우 단일 노드로 구성하는걸 추천

설치 가이드

공통 사항

dir 생성

# apps 및 victoria metrics bin 폴더 생성
mkdir -p /home1/irteam/apps/victoria-metrics/
# data 를 저장할 경로 생성 
mkdir -p /home1/irteam/data/victoria-metrics
mkdir -p /home1/irteam/data/vmagent
# log 폴더 생성
mkdir -p /home1/irteam/logs/victoria-metrics/
# 필요한 내용을 설치할 INSTALL 폴더 생성
mkdir -p /home1/irteam/INSTALL

1안. source compile

go 설치

다운로드

cd /home1/irteam/INSTALL
wget 'https://dl.google.com/go/go1.16.5.linux-amd64.tar.gz'
tar -zxvf go1.16.5.linux-amd64.tar.gz
# apps 로 이동
mv go ~/apps

환경 변수 설정

export GO_HOME=${APP_HOME}/apps/go
export PATH=${GO_HOME}/bin:$PATH

make 수행시 compile 에러 방지를 위해 GCC upgrade

sudo yum install centos-release-scl -y
sudo yum install devtoolset-7 -y
scl enable devtoolset-7 bash

Victoria Metrics

cd /home1/irteam/INSTALL
git clone -b v1.62.0 https://github.com/VictoriaMetrics/VictoriaMetrics.git
cd VictoriaMetrics
# 1.62.0 이 맞는지 확인을 위하 한번더 checkout
git checkout -b v1.62.0
# fatal: A branch named 'v1.62.0' already exists. 라 뜨면 정상적으로 1.62.0 을 clone 받은 것.
make victoria-metrics
# 생성된 binary 를 apps 폴더로 이동
mv bin/victoria-metrics ~/apps/victoria-metrics/

vmagent

# Victoria Metrics 설치 이후에 진행.
make vmagent
# 생성된 binary 를 apps 폴더로 이동
mv bin/vmagent ~/apps/victoria-metrics/

vmalert

# Victoria Metrics 설치 이후에 진행.
make vmalert
# 생성된 binary 를 apps 폴더로 이동
mv bin/vmalert ~/apps/victoria-metrics/

2안. victoria metrics 에서 제공해준 product download

Victoria Metrics

다운로드

cd /home1/irteam/INSTALL
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.62.0/victoria-metrics-amd64-v1.62.0.tar.gz
tar -zxvf victoria-metrics-amd64-v1.62.0.tar.gz
mv victoria-metrics-prod ~/apps/victoria-metrics/victoria-metrics

vmagent

다운로드

cd /home1/irteam/INSTALL
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.62.0/vmutils-amd64-v1.62.0.tar.gz
tar -zxvf vmutils-amd64-v1.62.0.tar.gz
mv vmagent-prod ~/apps/victoria-metrics/vmagent

vmalert

다운로드

# vmagent 설치로 vmutils-amd64-v1.62.0.tar.gz 을 download 받고 압축을 해제했을 경우
mv vmalert-prod ~/apps/victoria-metrics/vmalert

실행

victoria metrics

  • bin 폴더 접근하여 아래와 같은 arg 로 실행
cd /home1/irteam/apps/victoria-metrics/
./victoria-metrics \ 
     -storageDataPath=/home1/irteam/data/victoria-metrics \
     1> /home1/irteam/logs/victoria-metrics/vm.log 2>&1 &
  • 실행시 줄수 있는 옵션은 link 참고
  • systemd 를 사용하여 실행하는 방법은 link 참고

vmagent

  • bin 폴더 접근하여 아래와 같은 arg 로 실행
cd /home1/irteam/apps/victoria-metrics/
./vmagent \
    -remoteWrite.tmpDataPath=/home1/irteam/data/vmagent \
    -remoteWrite.maxDiskUsagePerURL=1GB \
    -remoteWrite.url=http://<victoriametrics-host-1>:8428/api/v1/write \
    -remoteWrite.url=http://<victoriametrics-host-2>:8428/api/v1/write \
    1> /home1/irteam/logs/victoria-metrics/vmagent.log 2>&1 &
  • 실행시 줄수 있는 옵션은 link 참고

vmalert

  • /home1/irteam/config/vmalert 폴더에 alert.rules 설정 파일 정의
  • bin 폴더 접근하여 아래와 같은 arg 로 실행
  • alert rule 은 prometheus 에서 정의한 alert rule 을 따른다
./vmalert -rule=/home1/irteam/config/vmalert/alert.rules \            # Path to the file with rules configuration. Supports wildcard
    -datasource.url=http://localhost:8428 \  # PromQL compatible datasource
    -notifier.url=http://<alertmanager addr>:9093 \    # AlertManager URL
    -remoteWrite.url=http://localhost:8428 \ # Remote write compatible storage to persist rules
    -remoteRead.url=http://localhost:8428  \ # MetricsQL compatible datasource to restore alerts state from
    -evaluationInterval=30s \
    1> /home1/irteam/logs/victoria-metrics/vmalert.log 2>&1 &