Scrutiny мониторинг SMART в Proxmox

Scrutiny мониторинг SMART в Proxmox

В данной статье будет предоставлена информация как установить Scrutiny для мониторинга SMART дисков в Proxmox

Proxmox это отличный гипервизор виртуальных машин и со своей задачей он справляется на отлично. Проблема только в том, что нет средств для мониторинга показателей SMART на дисках. Сами показатели посмотреть можно в дисках

Хочется не просто их смотреть, а видеть динамику, наблюдать за изменением температуры в течении суток или даже иметь возможность сравнить ее с годом ранее. Для этих целей есть прекрасный open sourse проект Scrutiny. Вот я и расскажу как установить Scrutiny в Proxmox в контейнер LXC.

Для установки Scrutiny в Proxmox с контейнером LXC понадобится шаблон Ubuntu 22.04. К сожаления в Proxmox 8 и LXC контейнере Ubuntu 24.04 запустить Scrutiny не получилось, т.к. docker-compose не работал. В общем в Ubuntu видимо как обычно что-то накрутили, благо 22.04 все еще актуальна и будет такой еще очень долго.

Для начала скачайте шаблон LXC контейнера Ubuntu 22.04 в ваш Proxmox

При создании LCX контейнера не нужно давать ему много ресурсов. Вполне достаточно 1 ядра, 512МБ ОЗУ и диска 8ГБ. Ну конечно если, что-то можно и больше. Сеть нужно указать статический адрес, т.к. он не должен изменяться в будущем.

После запуска контейнера рекомендую включить доступ оп SSH. Нужно отредактировать файл nano /etc/ssh/sshd_config добавив в него строчку:

PermitRootLogin yes

Затем нужно рестартануть службу ssh командой service ssh restart. Теперь можно подключаться к контейнеру по ssh с логином root и вашим придуманным паролем.

После подключения первым делом нужно обновить все пакеты и рестартануть контейнер:

Напоминаю, что это надо делать в контейнере LXC а не на самом Proxmox

apt update 
apt upgrade 
reboot

После перезагрузки контейнера нужно установить docker такой командой:

apt install docker.io docker-compose

Затем в папке /opt создадим каталог scrutiny и в нем нужные папки для работы scrutiny, а так же docker-compose.yml файл

cd /opt/
mkdir scrutiny
cd scrutiny/
mkdir influxdb
mkdir config
nano docker-compose.yml

Файл docker-compose.yml наполняем таким содержанием:

Установите свой часовой пояс

version: '2.4'

services:
  scrutiny-influxdb:
    image: influxdb:2.2
    container_name: scrutiny-influxdb
    ports:
      - 8086:8086
    restart: unless-stopped
    volumes:
      - ./influxdb:/var/lib/influxdb2
    environment:
      TZ: Asia/Omsk
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8086/health"]
      interval: 5s
      timeout: 10s
      retries: 20


  scrutiny-web:
    image: 'ghcr.io/analogj/scrutiny:master-web'
    container_name: scrutiny-web
    ports:
      - 8080:8080
    restart: unless-stopped
    volumes:
      - ./config:/opt/scrutiny/config
    environment:
      SCRUTINY_WEB_INFLUXDB_HOST: scrutiny-influxdb
      TZ: Asia/Omsk
    depends_on:
      scrutiny-influxdb:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"]
      interval: 5s
      timeout: 10s
      retries: 20
      start_period: 10s

Для запуска scrutiny вводим такую команду

docker-compose up -d

После скачивания, распаковки и запуска docker с scrutiny можно открыть браузер и ввести http://IP:8080. Должно открыть пустое окно scrutiny

Если до этого момента все получилось, то переходим к настройке Proxmox.

До этого мы настраивали web интерфейс и базу данных для хранения статистике scrutiny. Теперь на Proxmox нужно установить коллектор и настроить отправку данных в scrutiny.

Подключаемся уже к нему по ssh и в папке /opt/scrutiny создаем файл scrutiny-collector-install.sh

mkdir
cd /opt/scrutiny
ls -l
nano scrutiny-collector-install.sh

Файл scrutiny-collector-install.sh следующего содержимого:

#!/bin/bash

# change as needed
API_ENDPOINT="http://192.168.144:8080"


####################################
# Install Scrutiny Collector

# Installing dependencies
apt install smartmontools -y 

# Define variables
INSTALL_DIR="/opt/scrutiny"
BIN_DIR="$INSTALL_DIR/bin"
LATEST_RELEASE_URL=$(curl -s https://api.github.com/repos/AnalogJ/scrutiny/releases/latest | grep "browser_download_url.*scrutiny-collector-metrics-linux-amd64" | cut -d '"' -f 4)

# Create the installation directory if it doesn't exist
mkdir -p $BIN_DIR

# Download the latest release
curl -L $LATEST_RELEASE_URL -o $BIN_DIR/scrutiny-collector-metrics-linux-amd64

# Make the binary executable
chmod +x $BIN_DIR/scrutiny-collector-metrics-linux-amd64


#####################################
# Install Scrutiny Service

# Create the directory if it doesn't exist
mkdir -p /root/scrutiny

# Write the script to /root/scrutiny/scrutiny.sh
cat << EOF > /root/scrutiny/scrutiny.sh
#!/bin/bash

/opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run --api-endpoint "$API_ENDPOINT" 2>&1 | tee /var/log/scrutiny.log
EOF

# Make the script executable
chmod +x /root/scrutiny/scrutiny.sh

# Write the service file to /etc/systemd/system/scrutiny.service
cat << 'EOF' > /etc/systemd/system/scrutiny.service
[Unit]
Description="Scrutiny Collector"
Requires=scrutiny.timer

[Service]
Type=simple
ExecStart=/root/scrutiny/scrutiny.sh
User=root
EOF

# Write the timer file to /etc/systemd/system/scrutiny.timer
cat << 'EOF' > /etc/systemd/system/scrutiny.timer
[Unit]
Description="Timer for the scrutiny.service"

[Timer]
Unit=scrutiny.service
OnBootSec=5min
OnUnitActiveSec=60min

[Install]
WantedBy=timers.target
EOF

# Reload the systemd manager configuration
systemctl enable scrutiny.timer
systemctl start scrutiny.timer

# show status to prove it's running
systemctl status scrutiny.timer

Что подправить:

  • API_ENDPOINT – замените на IP адрес вашего контейнера LXC с scrutiny
  • OnUnitActiveSec – это значение как часто будут запрашиваться SMART данные. Я выставил 60 минут, если температура не важна то можно выставить сутки или минут 15, что бы видеть детально динамику по температуре.

Делаем файл исполняемым

chmod +x scrutiny-collector-install.sh

И запускаем установку коллектора

./scrutiny-collector-install.sh

Скрипт скачает коллектор, создаст для него службу и запустит ее. Минут через 5 появятся первые данные в web интерфейса scrutiny и будут пополниться по таймеру, который выше настраивали.

Если нужно установить Scrutiny для другого Proxmox, например в кластере, то придется повторять всю установку на другом сервере. Если накидать диски в один web интерфейс Scrutiny, то получится каша и нельзя будет отличить где и на каком сервере работает тот или иной диск.

Для настройки уведомления нужно создать файл scrutiny.yaml и указать там желаемый метод отправки уведомлений.

Теперь вы знаете как установить Scrutiny мониторинг SMART в Proxmox