본문 바로가기

Monitoring Tools/Zabbix

[zabbix] smart template PVE(proxmox)에 적용하기

반응형

zabbix 에서 제공하는 smart template은 smartctl(smartmontools)에서 표출하는 지표를 수집한다.

HDD, SSD, NVMe 등의 디스크 지표를 수집 할 수 있어 디스크 모니터링에 유용하게 쓰일수 있다.

참조 : https://www.zabbix.com/integrations/smart

 

 

설치 조건 및 환경


조건

zabbix 5.0 이상

zabbix agent2

smartmontools 7.1 이상

 

설치 환경

Proxmox-VE 7.4

zabbix 5.4

 

 

 

설치


 

zabbix agent2 설치

pve(7.4) repository 는 zabbix agent 를 기본 제공하지만 zabbix agent2를 제공하지는 않는다.

따라서 zabbix agent2를 설치하여야 한다.

 

기존 zabbix agent 삭제

apt remove zabbix-agent

 

 

zabbix 5.4 repository 설치

pve 7.4 는 debian 11(Bullseye) 가 기반이므로 여기를 참조하여 설치한다.

repository 다운로드

wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1%2Bdebian11_all.deb

 

 

repository 설치

dpkg -i zabbix-release_5.4-1+debian11_all.deb
apt update

 

zabbix agent 설치

apt install zabbix-agent2

 

 

smartmontools 설치

pve 7.4는 기본적으로 smartmontools 7.2버전을 기본 제공한다.

smartctl -V
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.15.104-1-pve] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

 

 

 

 

설정


 

zabbix agent2 root 설정

zabbix agent2는 기본적으로 zabbix/zabbix 의 UID/GID 를 사용하지만 편의를 위해 root로 띄운다.

User, Group을 zabbix -> root 로 수정한다.

vim /lib/systemd/system/zabbix-agent2.service
[Service]
...
User=root
Group=root

 

systemctl reload 한다.

systemctl daemon-reload

 

 

 

zabbix config 설정

zabbix agent 설정 파일은 /etc/zabbix/zabbix_agent2.conf 에 있으며 기본적인 설정 후 Smart Plugin 에 대한 추가 설정을 한다.

smartctl의 경로를 찾지 못하는 경우를 대비하여 위치를 지정한다.

Plugins.Smart.Path="/usr/sbin/smartctl"

 

서버 디스크 상태에 따라 수집에 오래 걸릴수 있으므로 timeout 값을 늘려준다.

Timeout=30
Plugins.Smart.Timeout=30

 

zabbix agent2를 재시작한다.

systemctl restart zabbix-agent2

 

 

 

 

 

수집 테스트


smart.disk.get 값을 agent 서버에서 테스트 해본다.

zabbix_agent2 -v -t smart.disk.get
...
2023/11/20 16:13:23.202716 starting manager
2023/11/20 16:13:24.000545 [2] processing update request (1 requests)
2023/11/20 16:13:24.000575 [2] registering new client
2023/11/20 16:13:24.000618 [2] adding new request for key: 'smart.disk.get'
2023/11/20 16:13:24.000710 [2] created direct exporter task for plugin 'Smart' itemid:0 key 'smart.disk.get'
2023/11/20 16:13:24.000724 [2] created configurator task for plugin Smart
2023/11/20 16:13:24.000766 plugin Smart: executing configurator task
2023/11/20 16:13:24.000964 executing direct exporter task for key 'smart.disk.get'
2023/11/20 16:13:24.003096 failed to execute direct exporter task for key 'smart.disk.get' error: 'Failed to execute smartctl: Command execution failed: exit status 127.'
smart.disk.get                                [m|ZBX_NOTSUPPORTED] [Failed to execute smartctl: Command execution failed: exit status 127.]

 

 

"[m|ZBX_NOTSUPPORTED] [Failed to execute smartctl: Command execution failed: exit status 127.]" 와 같은 에러 메세지를 볼수 있는데 exit 127 인걸로 보아 smartctl 경로를 못찾기 보다는 권한 문제일 확률이 있다.

 

smartctl 의 zabbix 권한을 위해 sudo 를 설치한다.

apt install sudo

 

 

sudoers 를 수정하여 zabbix 에 smartctl 권한을 부여한다.

sudoers는 꼭 root에서 작업해야하며 vim 저정시 강제 저장해야한다.(wq!)

vim /etc/sudoers
...
zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl

 

 

다시 수집 테스트 해보면 아래와 같이 정상 출력 됨을 확인할 수 있다.

 

zabbix_agent2 -t smart.disk.get
smart.disk.get                                [s|[{"device":{"info_name":"/dev/nvme0","name":"/dev/nvme0","protocol":"NVMe","type":"nvme"},"disk_name":"nvme0","disk_type":"nvme","firmware_version":"....
반응형