Заметки айтишникаhttps://it-stories.ru/блог про ITMon, 22 Dec 2025 13:25:36 +0000ru-RUhourly1https://wordpress.org/?v=6.9.1https://it-stories.ru/wp-content/uploads/2021/03/cropped-560216-32x32.pngЗаметки айтишникаhttps://it-stories.ru/3232 Роли Meshtastic нодыhttps://it-stories.ru/blog/meshtastic/roli-meshtastic-nody/https://it-stories.ru/blog/meshtastic/roli-meshtastic-nody/#respondMon, 22 Dec 2025 13:25:36 +0000https://it-stories.ru/?p=2113Каждое устройство в сети Meshtastic может выполнять определённую роль (Device Role), которая определяет его поведение в сети: Роль — это ключевая настройка при развертывании сети. От правильного выбора зависит стабильность связи, эффективность передачи сообщений и нагрузка на эфир. Выбирайте роль для вашей

Сообщение Роли Meshtastic ноды появились сначала на Заметки айтишника.

]]>
Каждое устройство в сети Meshtastic может выполнять определённую роль (Device Role), которая определяет его поведение в сети:

  • будет ли оно ретранслировать пакеты,
  • как часто передавать данные,
  • как работать с энергопотреблением,
  • и как взаимодействовать с другими узлами.

Роль — это ключевая настройка при развертывании сети. От правильного выбора зависит стабильность связи, эффективность передачи сообщений и нагрузка на эфир.

Выбирайте роль для вашей ноды соответственно сценарию ее использования

РольОписаниеОсновное назначение / сценарий
CLIENTКлассический клиент. Подключается к приложению или работает автономно. При отсутствии других ретрансляторов пересылает пакеты.Обычные узлы сети, используемые пользователями для обмена сообщениями (статичная, домашняя нода)
CLIENT_MUTEКлиент, который не ретранслирует пакеты от других устройств.Используется, когда нужно участвовать в сети, но не создавать нагрузку за счёт ретрансляции. (портативная, носимая нода, автомобиль)
CLIENT_HIDDENКлиент, который ретранслирует минимально: по необходимости, скрытно.Применяется в “скрытых” установках с экономией энергии или минимальным эфирным трафиком.
CLIENT_BASE“Базовая” клиентская нода: всегда ретранслирует пакеты от/до избранных узлов; остальные ведёт как CLIENT.Подходит для узлов, размещённых на крыше, на чердаке, или в более выгодных местах, чтобы усиливать связь “внутренних” узлов.
TRACKERПриоритетно передаёт GPS-позицию.Носимые устройства, трекеры, где важна оперативная передача координат
LOST_AND_FOUNDРегулярно передаёт свое местоположение в дефолтный канал (для поиска потерянных устройств).Когда устройство утеряно, эта роль помогает его обнаружить.
SENSORПриоритетно передаёт телеметрию (данные с датчиков).Используется там, где важны данные сенсоров: температура, влажность, и т.п.
TAKОптимизирован для коммуникации с системами ATAK (тактический плагин).Для взаимодействия Meshtastic с платформой ATAK
TAK_TRACKERВерсия TRACKER с поддержкой автоматических PLI (Position Location Information) для ATAK.Используется как интеграция Meshtastic + ATAK
REPEATERИнфраструктурный узел, всегда ретранслирует один раз, с минимальными затратами. Не отображается в списке узлов.Используется для расширения покрытия сети в «тёмных зонах». Использовать ТОЛЬКО при установке в идеальных условиях (вышки, мачты, естественные возвышенности с хорошим покрытием во все стороны)
ROUTERИнфраструктурный узел, всегда ретранслирует один раз и отображается в списке узлов.Стратегически важные узлы, используемые для усиления сети. Использовать при установке в идеальных условиях (вышки, мачты, естественные возвышенности с хорошим покрытием во все стороны)
ROUTER_LATEРетранслирует пакеты только после попыток других режимов.Используется для надёжности локальных кластеров, покрывает «слепые» зоны (хорошее круговое покрытие, возвышенность)

Сообщение Роли Meshtastic ноды появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/meshtastic/roli-meshtastic-nody/feed/0
Автоответчик для Meshtastic нодыhttps://it-stories.ru/blog/nocategory/avtootvetchik-dlja-meshtastic-nody/https://it-stories.ru/blog/nocategory/avtootvetchik-dlja-meshtastic-nody/#respondMon, 22 Dec 2025 13:22:32 +0000https://it-stories.ru/?p=2102В данной статье приведена информация по модификации исходного кода прошивки Meshtastic для реализации функционала автоматического ответа на сообщения с информированием об уровнях принятого сигнала. Добавляем обработчик принятого сообщения В файл src\modules\ReplyModule.cpp добавляем метод обработки приема сообщения ProcessMessage ReplyModule::handleReceived(const meshtastic_MeshPacket &mp) { auto

Сообщение Автоответчик для Meshtastic ноды появились сначала на Заметки айтишника.

]]>
В данной статье приведена информация по модификации исходного кода прошивки Meshtastic для реализации функционала автоматического ответа на сообщения с информированием об уровнях принятого сигнала.

Добавляем обработчик принятого сообщения

В файл src\modules\ReplyModule.cpp добавляем метод обработки приема сообщения

ProcessMessage ReplyModule::handleReceived(const meshtastic_MeshPacket &mp)
{
    auto reply = allocDataPacket();
    float P = mp.rx_rssi + mp.rx_snr - 10*log10f(pow10f(mp.rx_snr/10)+1);
    sprintf(reinterpret_cast<char*>(reply->decoded.payload.bytes), "RSSI: %ddBm, SNR: %.2fdB, Signal: %.2fdBm", mp.rx_rssi, mp.rx_snr, P);
    reply->decoded.payload.size = strlen(reinterpret_cast<char*>(reply->decoded.payload.bytes));

    setReplyTo(reply, mp);
    service->sendToMesh(reply);

    return ProcessMessage::CONTINUE;
}

Также требуется добавить метод в заголовочный файл src\modules\ReplyModule.h

ProcessMessage handleReceived(const meshtastic_MeshPacket &mp) override;

В нем же правим конструктор на следующее

ReplyModule() : SinglePortModule("reply", meshtastic_PortNum_TEXT_MESSAGE_APP) {}

Подключаем модуль

В файл src\modules\Modules.cpp в начальной секции добавляем подключение файла модуля

#include "modules/ReplyModule.h"

Также в секции ниже создаем объект созданного модуля

new ReplyModule();

Обновление от 15.11.2025

В код автоответа требуется добавить проверку на факт того, что сообщение адресованно именно вашей ноде. Иначе она при получения сообщения в общий канал также отреагирует и ответит в директ отправителю.

...
ProcessMessage ReplyModule::handleReceived(const meshtastic_MeshPacket &mp)
{
    uint32_t nodeId = nodeDB->getNodeNum();
    
    // Проверяем, нам ли адресован этот пакет
    if (mp.to == nodeId) {
        auto reply = allocDataPacket();
        float P = mp.rx_rssi + mp.rx_snr - 10*log10f(pow10f(mp.rx_snr/10)+1);
....

Альтернативный вариант (более корректный):

...
ProcessMessage ReplyModule::handleReceived(const meshtastic_MeshPacket &mp)
{
    // Проверяем, что пакет не является броадкаст
    if (!isBroadcast(mp.to)) {
        auto reply = allocDataPacket();
        float P = mp.rx_rssi + mp.rx_snr - 10*log10f(pow10f(mp.rx_snr/10)+1);
....

Готовая сборка для Heltec V3

Отвечает на сообщения в директ.

  • S — уровень сигнала
  • P — ping

Из сборки вырезаны следующие модули:

  • PAXCOUNTER
  • ATAK
  • POWERSTRESS
  • REMOTEHARDWARE
  • AUDIO
  • EXTERNALNOTIFICATION

Также добавлена поддержка кириллицы

firmware.bin

firmware.factory.bin

Итог

Получили ноду, которая на принятые сообщения отвечает уровнем принятого сигнала и его характеристиками.

Сообщение Автоответчик для Meshtastic ноды появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/nocategory/avtootvetchik-dlja-meshtastic-nody/feed/ 0
Установка прошивки Meshtastic https://it-stories.ru/blog/meshtastic/ustanovka-proshivki-meshtastic/ https://it-stories.ru/blog/meshtastic/ustanovka-proshivki-meshtastic/#respond Mon, 22 Dec 2025 13:00:54 +0000 https://it-stories.ru/?p=2099 Инструкция основана на официальной документации Meshtastic и подходит для большинства популярных плат — TTGO T-Beam, Heltec WiFi LoRa 32 V3, LILYGO T-Echo, ThinkNode и других. Установка через веб-флэшер Если вы прошиваете первое ваше устройство — устанавливайте стабильную версию прошивки Перед прошивкой обязательно подключите антенну. Включение LoRa-модуля

Сообщение Установка прошивки Meshtastic появились сначала на Заметки айтишника.

]]>
Инструкция основана на официальной документации Meshtastic и подходит для большинства популярных плат — TTGO T-BeamHeltec WiFi LoRa 32 V3LILYGO T-EchoThinkNode и других.

Установка через веб-флэшер

  1. Подключите устройство к компьютеру через USB-кабель.
  2. Откройте сайт https://flasher.meshtastic.org в Chrome или Edge.
  3. Выберите модель своей платы из списка.
  4. Нажмите Connect, предоставьте доступ к USB-устройству.
  5. Выберите тип установки:
    • Update — обновление без удаления данных
    • Full Erase and Install — полная очистка и новая установка
  6. Нажмите Flash и дождитесь окончания процесса.
  7. После прошивки устройство перезапустится автоматически.

Если вы прошиваете первое ваше устройство — устанавливайте стабильную версию прошивки

Перед прошивкой обязательно подключите антенну. Включение LoRa-модуля без антенны может повредить устройство.

Также для поддержки вывода кириллицы на экран можно воспользоваться веб-прошивателем https://mrekin.duckdns.org/flasher/

Прошивка устройств на базе ESP32 на Windows 7

Если модуль криво определяется Windows 7 и не прошивается даже после установки драйвера от Silicon Labs, установите этот драйвер.

Сообщение Установка прошивки Meshtastic появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/meshtastic/ustanovka-proshivki-meshtastic/feed/ 0
Модуль Lora E22-900M30S https://it-stories.ru/blog/meshtastic/modul-lora-e22-900m30s/ https://it-stories.ru/blog/meshtastic/modul-lora-e22-900m30s/#respond Mon, 22 Dec 2025 12:56:21 +0000 https://it-stories.ru/?p=2089 Описание Серия E22 является беспроводным модулем, использующим RF-чип Semtech SX1262, который обеспечивает различные методы модуляции, такие как LoRa и традиционный GFSK. Свойство Значение Радиочип SX1262 Частота 850~930MHz Мощность 30dBm Дистанция до 12 км Интерфейс SPI Вес 4.9±0.1г Внутрянка модуля Описание

Сообщение Модуль Lora E22-900M30S появились сначала на Заметки айтишника.

]]>
Описание

Серия E22 является беспроводным модулем, использующим RF-чип Semtech SX1262, который обеспечивает различные методы модуляции, такие как LoRa и традиционный GFSK.

СвойствоЗначение
РадиочипSX1262
Частота850~930MHz
Мощность30dBm
Дистанциядо 12 км
ИнтерфейсSPI
Вес4.9±0.1г

Внутрянка модуля

Описание элементов

Сообщение Модуль Lora E22-900M30S появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/meshtastic/modul-lora-e22-900m30s/feed/ 0
Полное удаление метрик Prometheus https://it-stories.ru/blog/linux/polnoe-udalenie-metrik-prometheus/ https://it-stories.ru/blog/linux/polnoe-udalenie-metrik-prometheus/#respond Wed, 12 Mar 2025 13:10:44 +0000 https://it-stories.ru/?p=2062 В один прекрасный день на моем тестовом сервере поломался Prometheus. Произошло это досадное недоразумение по причине исчерпания дискового пространства. Причем демон был остановлен и стартовать отказывался. Итак, удалять метрики можно через API, но в моем случае демон остановлен и API

Сообщение Полное удаление метрик Prometheus появились сначала на Заметки айтишника.

]]>
В один прекрасный день на моем тестовом сервере поломался Prometheus. Произошло это досадное недоразумение по причине исчерпания дискового пространства. Причем демон был остановлен и стартовать отказывался.

Итак, удалять метрики можно через API, но в моем случае демон остановлен и API недоступна, поэтому пришлось применять радикальный способ.

Заключается он в удалении содержимого директории базы данных временных рядов /var/lib/prometheus/.

Расположение этой директории можно узнать с помощью команды:

sudo systemctl status prometheus

Выполнив команду, вы увидите —storage.tsdb.path /var/lib/prometheus/ — путь к базе данных временных рядов.

Собственно, после очистки можно запускать Promehheus и все должно заработать.

sudo systemctl start prometheus

После запуска данные начнут копиться, а старые пропадут.

Сообщение Полное удаление метрик Prometheus появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/linux/polnoe-udalenie-metrik-prometheus/feed/ 0
Упаковка и перенос Docker контейнера https://it-stories.ru/blog/linux/upakovka-i-perenos-docker-kontejnera/ https://it-stories.ru/blog/linux/upakovka-i-perenos-docker-kontejnera/#respond Wed, 12 Mar 2025 12:21:28 +0000 https://it-stories.ru/?p=2059 Концепция контейнеров Docker позволяет разработчикам и системным администраторам собирать приложения в легковесные, автономные и переносимые окружения. Это упрощает процесс разработки, тестирования и развертывания приложений, а также уменьшает время, затрачиваемое на настройку и конфигурацию окружений. Однако, иногда бывает необходимо перенести контейнер

Сообщение Упаковка и перенос Docker контейнера появились сначала на Заметки айтишника.

]]>
Концепция контейнеров Docker позволяет разработчикам и системным администраторам собирать приложения в легковесные, автономные и переносимые окружения. Это упрощает процесс разработки, тестирования и развертывания приложений, а также уменьшает время, затрачиваемое на настройку и конфигурацию окружений.

Однако, иногда бывает необходимо перенести контейнер с одного сервера на другой. Например, если вы разрабатываете приложение на своем локальном компьютере и хотите перенести его на сервер для тестирования или развертывания. В этой статье мы расскажем, как запаковать Docker контейнер и перенести его на другой сервер без потери данных.

Docker — это платформа для создания, развертывания и управления приложениями в контейнерах. Контейнеры Docker представляют собой легковесные, автономные и переносимые окружения, которые работают практически в любой среде. В этой статье мы рассмотрим, как запаковать Docker контейнер и перенести его на другой сервер без потери данных.

Шаг 1: Остановить контейнер

Перед запаковкой контейнера необходимо остановить его. Используйте команду docker stop для остановки контейнера:

$ docker stop <container_name>

Здесь <container_name> — это имя контейнера, который вы хотите остановить.

Шаг 2: Сохранить контейнер в образ

Чтобы запаковать контейнер, необходимо сохранить его в образ. Используйте команду docker commit для сохранения контейнера в образ:

$ docker commit <container_name> <image_name>

Здесь <container_name> — это имя остановленного контейнера, а <image_name> — это имя образа, в который будет сохранен контейнер.

Шаг 3: Экспортировать образ в файл

Чтобы перенести образ на другой сервер, необходимо экспортировать его в файл. Используйте команду docker save для экспортирования образа в файл:

$ docker save <image_name> > <file_name>.tar

Здесь <image_name> — это имя образа, который нужно экспортировать, а <file_name> — это имя файла, в который будет экспортирован образ.

Шаг 4: Перенести файл на другой сервер

Скопируйте файл <file_name>.tar на другой сервер. Для этого можете использовать команду scp:

$ scp <file_name>.tar <user>@<server_ip>:<path>

Здесь <user> — это имя пользователя на удаленном сервере, <server_ip> — это IP-адрес удаленного сервера, а <path> — это путь к месту, где нужно сохранить файл на удаленном сервере.

Шаг 5: Импортировать образ на другом сервере

Чтобы использовать образ на другом сервере, необходимо импортировать его из файла. Используйте команду docker load для импортирования образа из файла:

$ docker load < <file_name>.tar

Шаг 6: Запустить контейнер

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

$ docker run -d --name <container_name> <image_name>

Здесь <container_name> — это имя контейнера, который вы хотите запустить, а <image_name> — это имя образа, который вы хотите использовать для запуска контейнера.

Поздравляю, контейнер перенесен.

Сообщение Упаковка и перенос Docker контейнера появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/linux/upakovka-i-perenos-docker-kontejnera/feed/0
Установка Sentry в Docker контейнереhttps://it-stories.ru/blog/linux/ustanovka-sentry-v-docker-kontejnere/https://it-stories.ru/blog/linux/ustanovka-sentry-v-docker-kontejnere/#respondTue, 26 Nov 2024 12:24:33 +0000https://it-stories.ru/?p=2038Введение Необходимо поставить систему мониторинга ошибок сайта Sentry. Рекомендуемыйразработчиками способ установки — использование Docker контейнера. Так и будем делать. Для удобства миграции и распределения нагрузки буду ставить на отдельную VM.Параметры VM: Базовая система В качестве базовой системы я буду использовать Debian

Сообщение Установка Sentry в Docker контейнере появились сначала на Заметки айтишника.

]]>
Введение

Необходимо поставить систему мониторинга ошибок сайта Sentry. Рекомендуемый
разработчиками способ установки — использование Docker контейнера. Так и будем делать. Для удобства миграции и распределения нагрузки буду ставить на отдельную VM.
Параметры VM:

  • HDD 32G
  • Memmory 8G
  • CPU 2cores

Базовая система

В качестве базовой системы я буду использовать Debian 10. Установка ничем не примечательна, выбираю минимальную конфигурацию.

После установки ставлю mc и qemu-guest-agent.

apt install mc qemu-guest-agent

Установка Docker

Добавляем GPG ключ

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Добавляем репозиторий

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

Ставим Docker CE

sudo apt install docker-ce

Пробуем выполнить тестовый контейнер

sudo docker run hello-world

Если все нормально увидим следующий вывод:

Установка Sentry

Для всех контейнеров будем использовать официальные образы.
Поднимаем и запускаем redis контейнер

docker run -d --name sentry-redis redis

Проверяем результат

docker ps

Поднимаем и запускаем postgresql контейнер

docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres

Проверяем

Генерируем ключ, который будет использоваться всеми Sentry контейнерами

docker run --rm sentry config generate-secret-key

Полученный ключ необходимо вставлять вместо <secret-key> во время следующих шагов.
Для инициализации базы в контейнере Sentry выполняем

docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade

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

Завершается инициализация

Запускаем контейнер с Sentry

docker run -d -p 9000:9000 --name my-sentry -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry

Напоминаю, что вместо <secret-key> указываем сгенерированный ключ


Смотрим результат

docker ps

Теперь необходимо запустить Sentry cron и несколько worker контейнеров все с тем же ключом

docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron

Ну и пара-тройка воркеров с разными именами

docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker
docker run -d --name sentry-worker-2 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker
docker run -d --name sentry-worker-3 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker

Смотрим что вышло

docker ps

Подключаемся браузером по адресу IP_VM:9000

Входим пользователем, созданным на этапе инициализации базы данных, в качестве логина необходимо ввести указанную почту.

В случае необходимости, можно добавить нового пользователя в командной строке

docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry createuser

На этом установка Sentry завершена.

Сообщение Установка Sentry в Docker контейнере появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/linux/ustanovka-sentry-v-docker-kontejnere/feed/0
Как проверить, является ли система Linux физической или виртуальной машинойhttps://it-stories.ru/blog/linux/kak-proverit-javljaetsja-li-sistema-linux-fizicheskoj-ili-virtualnoj-mashinoj/https://it-stories.ru/blog/linux/kak-proverit-javljaetsja-li-sistema-linux-fizicheskoj-ili-virtualnoj-mashinoj/#respondTue, 26 Nov 2024 10:18:17 +0000https://it-stories.ru/?p=2032Иногда можно попасть в такую ситуацию, когда вы не знаете, работаете ли вы на физической или виртуальной машине. В большинстве случаев, вы будете работать на серверах и управлять ими удаленно. У вас не всегда может быть физический доступ к вашим

Сообщение Как проверить, является ли система Linux физической или виртуальной машиной появились сначала на Заметки айтишника.

]]>
Иногда можно попасть в такую ситуацию, когда вы не знаете, работаете ли вы на физической или виртуальной машине. В большинстве случаев, вы будете работать на серверах и управлять ими удаленно. У вас не всегда может быть физический доступ к вашим серверам, и вы даже можете не знать, где находится сервер. Однако можно проверить, является ли ваша система Linux физической или виртуальной машиной, используя несколько полезных утилит.

В этой статье собраны все возможные способы проверить, является ли система Linux, на которой вы работаете, физическим или виртуальным сервером.

Способ 1 — использование утилиты Dmidecode.

Самый простой способ узнать, работаем ли мы на виртуальной или физической машине, — использовать утилиту dmidecode. Dmidecode, декодер таблиц DMI, используется для поиска аппаратных компонентов вашей системы, а также другой полезной информации, такой как серийные номера и версия BIOS.

Dmidecode предустановлен в большинстве дистрибутивов Linux. Если же он у вас отсутствует, то можете установить его с помощью менеджера пакетов вашего дистрибутива. Скажем, например, следующая команда установит dmidecode в системах на базе DEB, таких как Ubuntu, Linux Mint.

$ sudo apt-get install dmidecode

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

$ sudo dmidecode -s system-manufacturer

Если это физическая система, вы получите примерно такой результат:

HP

Если это виртуальная система, созданная с помощью Virtualbox, вы получите следующий вывод:

innotek GmbH

Для тех, кому интересно, innotek — это немецкая компания-разработчик программного обеспечения, которая разрабатывает программное обеспечение для виртуализации ПК под названием VirtualBox.

Если это виртуальная система, созданная с помощью KVM/QEMU, результат будет следующим:

QEMU

Как вы видите в приведенном выше выводе, если это физическая система, dmidecode отобразит имя производителя (т. е. HP, Dell Inc., Intel и т. д. ). Если это виртуальная система, то будет показано программное обеспечение/технология виртуализации (например, VirtualBox или QEMU).

Кроме того, вы можете использовать следующую команду, чтобы проверить, физическая это или виртуальная система.

$ sudo dmidecode | grep Product
Product Name: HP 255 G7 Notebook PC
Version: Type1ProductConfigId
Product Name: 85EA

На физической машине или на виртуальной будет вывод примерно такой:

$ sudo dmidecode | grep Product
Product Name: VirtualBox
Product Name: VirtualBox

Еще одна команда dmidecode для определения типа удаленной системы:

$ sudo dmidecode | egrep -i 'manufacturer|product'

#### Для физической машины ####
egrep: warning: egrep is obsolescent; using grep -E
Manufacturer: HP
Product Name: HP 255 G7 Notebook PC
Version: Type1ProductConfigId
Manufacturer: HP
Product Name: 85EA
Manufacturer: HP
Manufacturer: Advanced Micro Devices, Inc.
Manufacturer: Hynix
Manufacturer: 333-27-33-A

#### Для виртуальной машины ####
Manufacturer: innotek GmbH
Product Name: VirtualBox
Manufacturer: Oracle Corporation
Product Name: VirtualBox
Manufacturer: Oracle Corporation

Способ 2 — использование утилиты Factor.

Facter — это утилита командной строки для сбора и отображения информации о системе. В отличие от Dmidecode, Facter обычно не предустановлен по умолчанию. Возможно, вам придется установить его, как показано ниже, в зависимости от используемого вами дистрибутива Linux.

#### для Arch ####
$ sudo pacman -S facter

#### для Fedora ####
$ sudo dnf install facter

#### для CentOS, RHEL ####
$ sudo yum install epel-release
$ sudo yum install facter

#### для openSUSE ####
$ sudo zypper install facter

После установки facter выполните следующую команду, чтобы проверить, является ли система физической или виртуальной машиной:

$ facter 2> /dev/null | grep virtual

#### Для физической машины ####
is_virtual => false
virtual => physical

#### Для виртуальной машины ####
is_virtual => true
virtual => kvm

Так же можно использовать следующую команду:

$ facter virtual

####Для физической машины####
physical

####Для виртуальной машины####
kvm

Если у вас не получится запустить команду от обычного, используйте sudo.

Способ 3. Использование утилиты lshw

Утилита lshw — это небольшая утилита командной строки, которая отображает подробную информацию об оборудовании Unix-подобной системы. Он отображает все сведения об оборудовании, включая конфигурацию памяти, версию прошивки, конфигурацию материнской платы, версию и скорость процессора, конфигурацию кэша, скорость шины и т. д.

В некоторых дистрибутивах Linux предустановлен lshw. Если он еще не установлен, вы можете установить его, используя следующие команды:

#### Для Arch ####
$ sudo pacman -S lshw

#### Для Fedora ####
$ sudo dnf install lshw

#### Для RHEL, CentOS и т.д. ####
$ sudo yum install epel-release
$ sudo yum install lshw

#### Для Debian, Ubuntu, Mint и т.д. ####
$ sudo apt-get install lshw

#### для SUSE/openSUSE ####
$ sudo zypper in lshw

После установки lshw выполните следующую команду, чтобы узнать, является ли ваша система физической или виртуальной:

$ sudo lshw -class system

#### Для физической машины ####
fedora
description: Notebook
product: HP 255 G7 Notebook PC (1Q3H0ES#ACB)
vendor: HP
version: Type1ProductConfigId
serial: CND0292NW5
width: 64 bits
capabilities: smbios-3.1.1 dmi-3.1.1 smp vsyscall32
configuration: boot=normal chassis=notebook family=103C_5336AN HP 200 sku=1Q3H0ES#ACB uuid=4f684abf-d5a6-ea11-8104-bce92fbb8b64

#### Для виртуальной машины ####
$ sudo lshw -class system

#### Для физической машины ####
fedora
description: Notebook
product: HP 255 G7 Notebook PC (1Q3H0ES#ACB)
vendor: HP
version: Type1ProductConfigId
serial: CND0292NW5
width: 64 bits
capabilities: smbios-3.1.1 dmi-3.1.1 smp vsyscall32
configuration: boot=normal chassis=notebook family=103C_5336AN HP 200 sku=1Q3H0ES#ACB uuid=4f684abf-d5a6-ea11-8104-bce92fbb8b64

#### Для виртуальной машины ####
centos-host1
description: Computer
product: VirtualBox
vendor: innotek GmbH
version: 1.2
serial: 0
width: 64 bits
capabilities: smbios-2.5 dmi-2.5 vsyscall32
configuration: family=Virtual Machine uuid=FF628DD1-8E85-FA4B-A285-292F7E423588

Способ 4. Использование утилиты dmesg.

Тип системы можно узнать с помощью утилиты dmesg.

Чтобы проверить, является ли ваша система Linux физической или виртуальной, используйте следующую команду:

$ sudo dmesg | grep "Hypervisor detected"
[ 0.000000] Hypervisor detected: KVM

Если ваша система является физической, то вывод будет пустым. В случае использования виртуальной машины, вы увидите результат, подобный приведенному выше.

Способ 5 — использование команды hostnamectl.

Мы можем узнать, является ли наша система виртуальной или физической, используя команду hostnamectl. Не сработает в системах, которые не используют systemd.

$ hostnamectl

или

$ hostnamectl status

Вывод будет следующим:

#### для физических машин ####
Static hostname: (unset)
Transient hostname: fedora
Icon name: computer-laptop
Chassis: laptop 💻
Machine ID: 5fb6e2cc1f714921a60fc2dedad786b5
Boot ID: e0fa3fcb337a4daca906c9ba1c6a01a8
Operating System: Fedora Linux 38 (Workstation Edition)
CPE OS Name: cpe:/o:fedoraproject:fedora:38
OS Support End: Tue 2024-05-14
OS Support Remaining: 4month 1w
Kernel: Linux 6.6.4-100.fc38.x86_64
Architecture: x86-64
Hardware Vendor: HP
Hardware Model: HP 255 G7 Notebook PC
Firmware Version: F.31
Firmware Date: Wed 2020-07-01

#### Для виртуальных машин ####
Static hostname: centos-host1
Icon name: computer-vm
Chassis: vm
Machine ID: ff628dd18e85fa4ba285292f7e423588
Boot ID: 9803652220ce49bb8dcb6949ad955a9d
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1127.el7.x86_64
Architecture: x86-64

Способ 6 — использование systemd-detect-virt.

Инструмент systemd-detect-virt обнаруживает технологию виртуализации и может отличить полную виртуализацию машины от аппаратной или контейнерной виртуализации.

$ systemd-detect-virt

#### Для физической машины ####
none

#### Для виртуальной машины ####
kvm

Способ 7 — Использование скрипта virt-what

Virt-what — это небольшой сценарий оболочки, разработанный в Red Hat, чтобы определить, работаем ли мы на виртуальной или физической машине. virt-what, присутствуют в большинстве репозиториев популярных дистрибутивов Linux, таких как RHEL, Fedora, CentOS, Debian, Ubuntu, Arch Linux (AUR).

Установить его можно следующими командами в зависимости от используемого дистрибутива.

#### Для Arch ####
$ sudo yay -S virt-what

#### Для RHEL, Fedora, CentOS ####
$ sudo yum install virt-what

#### Для Debian, Ubuntu, Mint и т.д. ####
$ sudo apt-get install virt-what

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

$ sudo virt-what
virtualbox
kvm

Если ничего не выводится и сценарий завершается с кодом 0 (нет ошибок), то это означает, что либо система является физической, либо представляет собой тип виртуальной машины, о которой приложение не знает или не может обнаружить.

Если ваша система виртуальная, вы увидите результат, как показано выше.

Способ 8 — Использование скрипта imvirt

Imvirt — это еще один небольшой Perl-скрипт, который поможет вам определить, работаем ли мы на виртуальной машине или нет.

Установить его можно следующими командами, в зависимости от вашего дистрибутива:

#### Arch Linux ####
$ yay -S imvirt

#### Debian, Ubuntu, Mint ####
$ sudo apt-get install imvirt

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

$ sudo imvirt

Если ваша система является физической, результат будет таким:

Physical

если система виртуальная, вы увидите:

KVM

Заключение.

И это все на данный момент. Если вы знаете какие-либо другие способы узнать, является ли Linux-компьютер физическим или виртуальным, сообщите об этом в комментариях

Сообщение Как проверить, является ли система Linux физической или виртуальной машиной появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/linux/kak-proverit-javljaetsja-li-sistema-linux-fizicheskoj-ili-virtualnoj-mashinoj/feed/0
Scrutiny мониторинг SMART в Proxmoxhttps://it-stories.ru/blog/linux/scrutiny-monitoring-smart-v-proxmox/https://it-stories.ru/blog/linux/scrutiny-monitoring-smart-v-proxmox/#respondTue, 26 Nov 2024 10:14:29 +0000https://it-stories.ru/?p=2023В данной статье будет предоставлена информация как установить Scrutiny для мониторинга SMART дисков в Proxmox Proxmox это отличный гипервизор виртуальных машин и со своей задачей он справляется на отлично. Проблема только в том, что нет средств для мониторинга показателей SMART

Сообщение 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

Сообщение Scrutiny мониторинг SMART в Proxmox появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/linux/scrutiny-monitoring-smart-v-proxmox/feed/0
Proxmox. Перемещение диска виртуальной машиныhttps://it-stories.ru/blog/linux/proxmox-peremeshhenie-diska-virtualnoj-mashiny/https://it-stories.ru/blog/linux/proxmox-peremeshhenie-diska-virtualnoj-mashiny/#respondTue, 26 Nov 2024 10:04:49 +0000https://it-stories.ru/?p=2012Иногда требуется переместить диск виртуальной машины с одного хранилища на другое. С версии Proxmox 7 эту функцию спрятали глубоко в настройки виртуальной машины. Немного подробностей ниже. Идем в настройки Машины -> Оборудование -> Жесткий диск -> Действия над диском -> Переместить хранилище Откроется окно

Сообщение Proxmox. Перемещение диска виртуальной машины появились сначала на Заметки айтишника.

]]>
Иногда требуется переместить диск виртуальной машины с одного хранилища на другое. С версии Proxmox 7 эту функцию спрятали глубоко в настройки виртуальной машины. Немного подробностей ниже.

Идем в настройки Машины -> Оборудование -> Жесткий диск -> Действия над диском -> Переместить хранилище

Откроется окно настройки переноса

Нажимаем кнопку Переместить диск и ждем пока выполнится перемещение

Данная процедура работает как на выключенной машине, так и на рабочей. Как видим перемещение диска ВМ очень легкая операция.

Сообщение Proxmox. Перемещение диска виртуальной машины появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/linux/proxmox-peremeshhenie-diska-virtualnoj-mashiny/feed/0