47. Proxmox + Home Assistant. Мониторинг ресурсов сервера.
Одним из главных моментов поддержки сервера (да и вообще всей инфраструктуры в целом), кроме безопасности и резервного копирования является мониторинг ресурсов. Грамотный мониторинг позволяет избежать проблем не только с программной, но и с аппаратной частью. А использование его вместе с системой автоматизации, позволит выполнять и проактивные действия, направленные на упреждение возникающих проблем.
Итак, у нас имеется в наличии мини-пк с установленной и работающей на нём операционной системой семейства Linux Debian. Эта система так же является гипервизором, а значит в ней могут быть запущены другие виртуальные машины и контейнеры типа LXC. Говоря проще, у нас есть железка с Proxmox'ом, в котором крутится Home Assistant, в котором мы и будем мониторить состояние железки и ресурсов проксмокса.
Итак, у нас имеется в наличии мини-пк с установленной и работающей на нём операционной системой семейства Linux Debian. Эта система так же является гипервизором, а значит в ней могут быть запущены другие виртуальные машины и контейнеры типа LXC. Говоря проще, у нас есть железка с Proxmox'ом, в котором крутится Home Assistant, в котором мы и будем мониторить состояние железки и ресурсов проксмокса.
Для начала стоит задаться вопросом: "А что именно я хочу мониторить?".
Имея ответ на этот вопрос можно определиться с набором инструментов и способов, которые будут использованы.
Так же важно понимать каким образом можно мониторить необходимые параметры. Например, гораздо легче получить данные об использовании процессора/памяти от виртуальной машины, чем те же данные о ней, но от самого проксмокса. Да, это Линукс, и при наличии должного опыта и знаний можно делать потрясающе гибкие, глубокие и удобные вещи. Но для новичков это неоправданно сложный путь.
Приступим.
Мониторинг Home Assistant изнутри.
В нём есть много сенсоров, и они уже были перечислены здесь ранее.
В самом начале файла configuration.yaml есть блок с директориями и файлами шаблонов сенсоров и платформ. Добавим туда строку: .
sensor: !include_dir_merge_list includes/sensors
Теперь остаётся создать указанные директории (если они не были созданы ранее).
С помощью файлового редактора создадим в домашней папке config подпапку includes в которой создадим поддиректорию sensors. В ней создадим файл с названием, например, systemmonitor.yaml
и укажем содержимое этого файла:
- platform: systemmonitor
resources:
- type: disk_use_percent
arg: /config
- type: disk_use
- type: disk_free
- type: memory_use_percent
- type: memory_use
- type: memory_free
- type: swap_use_percent
- type: swap_use
- type: swap_free
- type: processor_use
- type: last_boot
После проверки конфигурации и перезагрузки эти сенсоры станут доступны.
Сенсор, указывающий время прошедшее с последней перезагрузки системы добавляется с помощью соответствующей интеграции:
Для полноты картины можно создать так же сенсор отслеживающий размер файла базы данных. Однако, архитектура саго ХА такова, что для того чтобы сенсор получил доступ к файлу внутри системы, надо для этого открыть доступ к системным директориям. Поэтому в файле configuration.yaml указываем:
# Allow external dirs for DB size sensor
homeassistant:
allowlist_external_dirs:
- /config
и не забываем перезапустить систему.
Теперь можно воспользоваться встроенной интеграцией "Размер файла"
в которой нужно указать путь к файлу базы данных: /config/home-assistant_v2.db.
Так же можно воспользоваться переносом базы данных на полноценный и самостоятельный движок, например MariaDB. Установка и настройка которой рассматривалась в отдельной статье ранее.
После всех манипуляций можно выстроить отдельную панель (дашборд) с мониторингом системы. Один из вариантов в качестве примера:
Мониторинг Proxmox'а.
Встроенная интеграция.
Самым простым и очевидным шагом будет использование уже имеющихся инструментов. А именно использовать в Home Assistant интеграцию Proxmox VE. Подробная информация об её использовании и настройке есть на страничке на официальном сайте ХА -> здесь.
Важно отметить, что данный способ позволяет видеть статус виртуалки или контейнера (вкл или выкл), но не более того. При том, что если была поднята новая система (машина/контейнер), то её номер необходимо добавить вручную в файл конфигурации. Так что этот способ применим для мониторинга статуса жив/не жив других систем работающих в том же(или другом) гипервизоре.
Сторонняя интеграция.
Теоретическая часть.
Операционная Система Proxmox позволяет пользователю как получать информацию о хосте, его ресурсах, и виртуалках с контейнерами, так и управлять этим.Пользователь, с которым большинство новичков работают это root@pam. В чём его особенности?
- Во первых это корневой (а значит главный) системный юзер.
- Во вторых он способен подключаться в систему как на уровне интерфейса, так и через консоль.
- В третьих, как результат всего вышесказанного, такой пользователь должен быть максимально защищён: иметь сложный пароль, двухфакторную аутентификацию, и уж само собой не должен никому передаваться.
Поэтому для задач мониторинга будет использоваться отдельный пользователь, обладающий правами "только для чтения" на всю систему, но при этом без возможности подключаться через консоль (@pve).
С одной стороны конечно не желательно раздавать его пароль налево и направо. С другой, возможности этого юзера ограничены системой, и навредить из под него физически невозможно.
Т.е. создание такого пользователя и назначение ему прав это единственная настройка, которая делается со стороны проксмокса.
Со стороны Home Assistant же ставится репозиторий интеграции через HACS, сама интеграция настраивается и на этом всё.
Со стороны Home Assistant же ставится репозиторий интеграции через HACS, сама интеграция настраивается и на этом всё.
Практика.
Добавляем нового пользователя. При желании можно сделать эту процедуру и через терминал.
Назначаем новому пользователю права доступа - аудитор на уровне всего хоста.
Что такое HACS и как его ставить уже было рассказано ранее. Открываем его, переходим в интеграции, справа вверху три точки - добавить репозиторий.
Добавляем https://github.com/dougiteixeira/proxmoxve и устанавливаем его же через поиск интеграций здесь же, не выходя из HACS.
По завершении установки рекомендуется проверить конфигурацию и перезагрузить систему.
После загрузки системы переходим в обычные настройки и интеграции, и в поиске выбираем Proxmox VE.
Добавляем https://github.com/dougiteixeira/proxmoxve и устанавливаем его же через поиск интеграций здесь же, не выходя из HACS.
По завершении установки рекомендуется проверить конфигурацию и перезагрузить систему.
После загрузки системы переходим в обычные настройки и интеграции, и в поиске выбираем Proxmox VE.
Осталось указать адрес нужного хоста, имя нового пользователя с паролем и сохранить настройки.
На данный момент интеграция пока что не умеет показывать ёмкость других дисков, кроме системного. Да и то, только обычного локального ЛВМ.
И не умеет показывать температуру процессора.
Есть надежды что это временные трудности, которые в дальнейшем будут решены автором интеграции.
На данный момент интеграция пока что не умеет показывать ёмкость других дисков, кроме системного. Да и то, только обычного локального ЛВМ.
И не умеет показывать температуру процессора.
Есть надежды что это временные трудности, которые в дальнейшем будут решены автором интеграции.
В итоге, после установки нас ожидает вот такой набор сенсоров для самого хоста (возможность управления отключена изначально):
И вот такой набор сенсоров на каждую виртуалку (новые будут появляться сами):
Вот так, достаточно просто можно мониторить физический сервер без использования стороннего софта.
Glances - веб сервер и API.
Это программа, у которой есть одноимённая интеграция для Home Assistant.
Страничка проекта на GitHUB -> https://github.com/nicolargo/glances
По сути это очень лёгкий веб-сервер с одной стороны, и система сбора данных об оборудовании с другой.
Вот так выглядит оригинальная веб страничка монитора Glances
А вот такой набор сенсоров можно получить сразу "из коробки" используя соответствующую интеграцию в ХА.
Понятно что все эти сущности тоже можно оформить в красивый дашборд, по аналогии с предыдущим примером.
Перейдём к установке.
В консоли проксмокса запускаем скрипт установки Glances:
curl -L https://bit.ly/glances | /bin/bash.
После установки убедимся что всё работает как надо запустив сам сервер и его веб интерфейс:
glances -w
Теперь можно зайти в браузере на следующий адрес: http://proxmox_ip:61208 и полюбоваться на страницу похожую на приведённую выше. Здесь же можно с ней и попрощаться, т.к. она будет отключена, для экономии ресурсов. А данные сервер всё равно продолжит передавать.
Теперь в редакторе nano создадим конфигурационный файл для сервиса Glances, чтобы настроить его автозапуск во время включения проксмокса.
nano /etc/systemd/system/glances.service
Содержимое файла:
[Unit]
Description=Glances
After=network.target
[Service]
ExecStart=/usr/local/bin/glances -w --disable-webui
Restart=on-abort
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
systemctl enable --now glances.service
Нажимаем CTRL+X для выхода и Y для подтверждения сохранения изменений в файле.
Создадим связь сервиса с конфигурационным файлом, выполнив команду
systemctl enable glances.service
В ответ система должна сообщить об успешном создании связи, выведя на экран:
Created symlink /etc/systemd/system/multi-user.target.wants/glances.service → /etc/systemd/system/glances.service
.Осталось только запустить свежесозданный сервис, с помощью команды:
systemctl start glances.service
И на этом настройка серверной части будет завершена.
Настройка со стороны Home Assistant делается до неприличия просто.
Добавляем интеграцию Glances вручную, или с помощью соответствующей кнопки прямо отсюда:
- IP адрес проксмокса в домашней сети
- имя пользователя к нему
- его пароль
- порт самой службы
- версия API
- и отмечаем проверку и использование сертификатов, если таковые были установлены
После сохранения и применения настроек, будет создано новое устройство с его дополнительными объектами, которые были показаны чуть выше.
Внимательный читатель мог заметить что эта интеграция не создаёт сенсора времени работы сервера (uptime). Эта проблема решается максимально просто.
Открываем документацию Glances и видим что такой параметр как аптайм всё же есть. Можно даже проверить что сервер проксмокса его выдаёт, зайдя браузером по адресу: http://proxmox_ip:61208/api/3/uptime (да, api работает при отключенном веб интерфейсе).
Для создания сенсора в Home Assistant, можно обратиться к его официальной документации.
По аналогии указанной выше, создадим ещё один файл в папке /includes/sensors и назовём его произвольным образом, например pveuptime.yaml.
Содержимое файла:
- platform: rest
resource: http://proxmox_ip:61208/api/3/uptime
name: Proxmox uptime
value_template: "{{ value_json }}"
Сохраняем, проверяем конфигурацию, перезапускаем систему.
После загрузки проверяем наличие нового объекта и его состояние.
Комментарии
Отправить комментарий