Сообщество - Лига Сисадминов

Лига Сисадминов

2 732 поста 19 179 подписчиков

Популярные теги в сообществе:

Как мы добавили Global Orchestration в IncidentRelay: маршрутизация алертов до создания инцидента

Когда система мониторинга отправляет алерт, он редко выглядит так, как хотелось бы дежурному инженеру.

Один источник пишет critical, другой — disaster, третий передаёт severity: 5. В одном payload сервис называется checkout, в другом — payments-api, а в третьем его приходится угадывать по namespace.

Если все эти события приходят через общий Alertmanager или webhook, одной статической настройки маршрута быстро становится недостаточно.

Обычно проблему решают одним из трёх способов:

  1. Усложняют правила на стороне каждой системы мониторинга.

  2. Создают много почти одинаковых endpoint’ов и маршрутов.

  3. Добавляют промежуточный сервис, который преобразует payload перед отправкой в on-call-систему.

Все три варианта работают. А потом появляется ещё одна команда, меняется схема меток, кто-то копирует правило с ошибкой — и распределённая конфигурация начинает жить собственной жизнью.

В IncidentRelay 2.0 мы добавили Event Orchestration. В этой статье разберём одну из основных частей новой функции — Global Orchestration: зачем она нужна, где находится в потоке обработки, как устроены правила и почему мы не ограничились обычным rule engine с кнопкой «Включить».

IncidentRelay Global Orchestration explain trace

IncidentRelay Global Orchestration explain trace

Какую задачу решает Global Orchestration

Global Orchestration — это набор упорядоченных правил, принадлежащий группе IncidentRelay. Он обрабатывает нормализованное событие до того, как будет окончательно выбран сервис и запущен обычный жизненный цикл алерта.

Упрощённо поток выглядит так:

Payload интеграции ↓ Аутентификация и нормализация ↓ Global Orchestration группы ↓ Оркестрация выбранного сервиса, если он известен ↓ Обычный жизненный цикл IncidentRelay ↓ Группа алертов, дочерний алерт, эскалация и уведомления

IncidentRelay Global Orchestration

IncidentRelay Global Orchestration

На глобальном уровне можно:

  • выбрать команду, маршрут и сервис;

  • нормализовать severity, title и другие поля события;

  • назначить приоритет и политики;

  • добавить или удалить метки;

  • настроить group_key и dedup_key;

  • подавить уведомления;

  • отложить создание алерта;

  • полностью отбросить событие;

  • поставить безопасный асинхронный webhook в очередь.

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

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

Почему global и service — разные области

В IncidentRelay есть две области оркестрации:

Область

Когда запускать

Типичные задачи

global

Владелец события ещё неизвестен или правило относится к нескольким сервисам

Нормализация, выбор команды и сервиса, общие правила подавления

service

Сервис уже выбран

Политики конкретного сервиса, локальное обогащение, задержка известного сигнала, запуск диагностики

Разделение оказалось важным. Без него глобальное определение быстро превращается в огромный файл со знаниями обо всех особенностях всех сервисов.

Хорошая граница ответственности выглядит так:

Global Orchestration: Кому принадлежит событие? В какой общий формат его привести? Service Orchestration: Как именно этот сервис хочет его обработать?

Глобальное правило может выбрать сервис. После этого IncidentRelay запускает оркестрацию, прикреплённую к выбранному сервису.

Если service orchestration передаёт событие другому сервису, runtime защищает цепочку от циклов и чрезмерного количества переходов. Потому что бесконечная маршрутизация — это тоже вид мониторинга, только уже за состоянием CPU.

Так общие соглашения хранятся в одном месте, а знания о конкретном сервисе остаются рядом с самим сервисом.

Пример: один Alertmanager и несколько команд

Представим, что общий Alertmanager принимает алерты всей production-платформы.

В IncidentRelay приходит нормализованное событие:

{ "source": "alertmanager", "title": "High error rate", "message": "Error rate is above 20%", "severity": "fatal", "status": "firing", "dedup_key": "checkout-db-2:high-error-rate", "labels": { "environment": "production", "application": "checkout", "component": "database", "instance": "checkout-db-2", "customer_impacting": true } }

Из payload уже понятно почти всё необходимое. Но статический маршрут не знает, какую комбинацию решений следует принять.

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

  1. Преобразовать fatal в каноническое значение critical.

  2. По application=checkout выбрать команду Payments.

  3. По component=database выбрать сервис Checkout Database.

  4. Для критического события с customer_impacting=true задать приоритет P1.

  5. Построить стабильные ключи группировки и дедупликации.

  6. Остановить дальнейшие глобальные правила маршрутизации.

  7. Передать результат в оркестрацию сервиса и обычный lifecycle.

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

Мы рассматривали вариант, при котором все правила получают один неизменяемый исходный контекст, а затем результаты как-то объединяются.

На бумаге это выглядит функционально и аккуратно. На практике быстро возникает вопрос: что делать, если два правила выбрали разные сервисы или установили разные значения priority?

В текущей модели правила выполняются сверху вниз, а действия внутри совпавшего правила — в указанном порядке. Последующие правила видят изменения предыдущих.

Например:

Правило 1: IF event.severity equals disaster THEN set_severity critical AFTER continue Правило 2: IF event.severity equals critical AND labels.customer_impacting is_true THEN set_priority P1

Второе правило уже увидит critical.

Это позволяет строить определение как понятный конвейер:

Нормализовать значения разных интеграций Добавить общие метки Выбрать владельца Выбрать priority и policies Настроить grouping и deduplication Принять решение suppress / pause / drop Поставить автоматизацию в очередь

Минус у подхода тоже есть: порядок становится частью логики.

Поэтому в execution trace сохраняются совпавшие условия, выполненные действия и значения до и после каждого изменения.

Условия: безопасные пути вместо произвольного кода

В условиях используются dotted paths к разрешённым частям контекста:

event.severity event.status labels.environment labels.application raw.alerts.0.labels.namespace variables.service route.id service.id team.id integration.source result.disposition

Движок читает JSON-объекты и индексы массивов, но не выполняет методы или произвольные выражения.

Основные операторы:

equals not_equals contains not_contains starts_with ends_with regex not_regex in not_in exists not_exists greater_than less_than greater_or_equal less_or_equal is_true is_false

Для логики доступны вложенные группы:

  • ALL — AND;

  • ANY — OR;

  • NONE — NOT.

Пример:

ALL ├── labels.environment equals production └── ANY ├── event.severity equals critical └── labels.priority equals p1

То есть:

production AND (critical OR p1)

Шаблоны тоже ограничены

Текстовые действия используют подстановки вида:

{{ labels.service | upper }}: {{ event.title | trim }}

Поддерживается небольшой набор детерминированных фильтров:

lower upper trim default replace truncate

Например:

{{ labels.cluster | default("unknown") | trim | lower }}

Если необязательное поле может отсутствовать, это следует явно обработать через default.

В противном случае ошибка шаблона попадёт в трассировку и будет обработана согласно on_failure действия.

У каждого действия есть одна из трёх стратегий ошибки:

Значение

Поведение

continue

Записать ошибку и перейти к следующему действию

stop_rule

Остановить действия текущего правила

stop_orchestration

Остановить всю оркестрацию

Для необязательного обогащения подходит continue.

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

Валидация выбранных сущностей

Недостаточно просто получить из правила числовой service_id. Во время выполнения IncidentRelay проверяет согласованность выбранных объектов.

Например, будут отклонены случаи, когда:

  • маршрут принадлежит другой группе;

  • route source равен sentry, а источник события — alertmanager;

  • выбранный сервис принадлежит другой команде, чем маршрут;

  • escalation policy или notification policy принадлежит другой команде;

  • выбранный объект был отключён или удалён после публикации версии.

Поведение после такой ошибки зависит от compatibility mode.

Два переключателя режима — и это не одно и то же

У определения есть runtime mode и compatibility mode. Поначалу их легко перепутать.

Runtime mode

Он отвечает на вопрос: влияет ли опубликованная версия на реальные события?

Режим

Что происходит

disabled

Production-события не вычисляются; доступны редактирование, validation и simulation

shadow

Опубликованная версия вычисляется и записывается, но её решения не меняют production

active

Допустимые решения применяются к реальной обработке

Для shadow и active нужна опубликованная версия.

Compatibility mode

Он отвечает на другой вопрос: как оркестрация делит ответственность с существующим lifecycle?

Режим

Что происходит

legacy

Существующая логика остаётся главным источником решений

hybrid

Явные решения оркестрации сохраняются, а старый lifecycle заполняет оставшиеся значения

orchestration

Оркестрация становится главным источником маршрутизации; требуется валидный route

Например, в hybrid:

Оркестрация явно установила priority=P1 → priority policy не заменяет это значение Оркестрация не выбрала notification policy → обычный механизм выбора policy продолжает работать

Если комбинация выбранных сущностей оказалась невалидной, hybrid может отклонить кандидата и продолжить legacy-обработку.

В режиме orchestration аналогичная ошибка блокирует дальнейшую обработку вместо fallback.

Для первого production-внедрения мы рекомендуем hybrid.

Отдельный крайний случай: конфигурация active + legacy не применяет решения оркестрации к production. Слово active здесь относится к runtime mode, но compatibility mode всё ещё оставляет старый lifecycle главным.

Название немного обманчивое, зато конфигурация безопасная. Иногда программное обеспечение шутит само, даже если разработчики не просили.

Simulator: проверить не только счастливый payload

Simulator вычисляет текущий draft изолированно.

Он не:

  • создаёт алерты;

  • отправляет уведомления;

  • вызывает webhooks;

  • меняет режим выполнения;

  • публикует версию;

  • изменяет production-данные.

Можно передать уже нормализованное событие или сырой payload поддерживаемой интеграции.

Во втором случае payload проходит через тот же зарегистрированный normalizer, который используется при production ingestion.

Для каждого важного правила стоит проверить минимум такие события:

  1. Точное совпадение.

  2. Почти совпадающее событие, которое не должно пройти.

  3. Другое окружение.

  4. Другой source.

  5. Отсутствие необязательной метки.

  6. Статус resolved.

  7. Повторное событие, которое должно получить тот же dedup_key.

Результат симуляции содержит:

  • исходное нормализованное событие;

  • совпавшие правила;

  • condition trace;

  • значения до и после каждого действия;

  • итоговый контекст;

  • выбранные сущности;

  • disposition;

  • разницу между draft и active version.

Успешная симуляция доказывает, что движок смог выполнить определение. Она не доказывает, что бизнес-решение правильное.

Зелёный HTTP 200 вполне способен сообщить, что вы очень успешно направили все production-алерты команде стажёров.

Grouping и deduplication — тоже часть маршрутизации

Правильный владелец не спасает ситуацию, если каждый повтор создаёт новый алерт.

Для группы однотипных событий можно задать:

group_key: {{ labels.alertname }}: {{ labels.environment }} dedup_key: {{ labels.alertname }}: {{ labels.instance }} window_seconds: 900

Так события с одним alert name в одном окружении попадут в общую группу, а каждый instance сохранит собственный дочерний алерт. Повторный сигнал обновит нужный child alert.

Ключи должны быть стабильными.

Временная метка в dedup_key формально допустима, но фактически означает «создавай новый алерт при каждом запросе». Очень удобно, если ваша цель — нагрузочно протестировать дежурного инженера.

suppress, pause и drop — три разных решения

Эти действия легко объединить в голове как «не уведомлять», но последствия отличаются принципиально.

Действие

Результат

suppress

Алерт создаётся и остаётся видимым, но уведомления и эскалация подавляются

pause

Событие хранится как pending и активируется после задержки, если раньше не пришёл resolve

drop

Алерт и группа вообще не создаются

suppress подходит для событий, которые нужно сохранить для поиска или корреляции.

pause полезен для кратковременных сбоев. Например, можно подождать пять минут и отменить создание алерта, если за это время пришёл совпадающий resolve.

drop следует использовать только для сигналов без операционной ценности — например, точно определённого тестового heartbeat.

Пустое условие совпадает со всеми событиями. Поэтому catch-all вместе с drop, suppress, pause или обязательной маршрутизацией требует особенно осторожной проверки.

Catch-all с drop — очень эффективное средство против alert fatigue, примерно как демонтаж пожарной сигнализации против писка разряженной батарейки.

Асинхронные webhooks вместо произвольного кода

Если после совпадения правила нужно запросить диагностику, создать тикет или вызвать внутреннюю автоматизацию, используется переиспользуемое действие enqueue_webhook.

HTTP-запрос не выполняется внутри ingestion request. IncidentRelay ставит выполнение в очередь, а scheduler доставляет его асинхронно с timeout, retry и ограничениями безопасности.

Секретные заголовки хранятся зашифрованными и не возвращаются API. URL проверяются против SSRF, redirects повторно валидируются, а private network targets запрещаются или ограничиваются allowlist согласно конфигурации.

В simulation и shadow mode webhook не отправляется.

Иначе проверка нового правила могла бы создать несколько сотен вполне настоящих задач с заголовком TEST PLEASE IGNORE.

Что получилось в итоге

Global Orchestration дала нам единое место, где разнородные факты мониторинга превращаются в объяснимое операционное решение до начала paging:

  • интеграции могут сохранять собственные форматы payload;

  • общие правила нормализации не дублируются по сервисам;

  • ownership выбирается по содержимому события;

  • локальная логика остаётся в service orchestration;

  • каждое решение можно проверить в trace;

  • draft не влияет на production;

  • опубликованные версии неизменяемы;

  • simulation и shadow mode позволяют внедрять изменения без ставки на удачу.

IncidentRelay — open-source и self-hosted. Исходный код доступен на GitHub.

Подробное руководство по условиям, действиям, Simulator и shadow mode находится в документации Event Orchestration, а API — в отдельном руководстве.

Показать полностью 2
9

Фальшивые вакансии в США в LinkedIn

Серия Унылое графоманство: кадры

Генеральный прокурор Техаса Кен Пакстон начал расследование в отношении LinkedIn в связи с обвинениями в том, что платформа вводит потребителей в заблуждение и извлекает прибыль из фальшивых или неактивных вакансий — так называемых «вакансий-призраков».

Следователи проверяют, не нарушила ли компания законы штата о защите прав потребителей, взимая до 70 долларов в месяц за премиум-услуги, способствующие продвижению подобных фиктивных объявлений.

В настоящее время власти штата запрашивают у компании соответствующие документы и данные, однако судебный иск или официальные обвинения в правонарушениях пока не были предъявлены.

Оригинал

Texas Attorney General Ken Paxton has opened an investigation into LinkedIn over claims the platform misleads consumers and profits from fake or inactive "ghost jobs."

Investigators are probing whether LinkedIn violated state consumer protection laws by charging up to $70 a month for Premium services that promote these fake listings.

The state is currently demanding documents and data from the company, but no lawsuit or formal charges of wrongdoing have been filed yet.

Источник в СМИ. Извините , СМИ американское, номера не будет:

https://www.fox10phoenix.com/news/texas-launches-investigates-linkedin-over-claims-ghost-jobs

Та же новость на сайте прокуратуры штата Техас:
https://www.texasattorneygeneral.gov/news/releases/attorney-...

Показать полностью
13

Не забываем обновляться!

Серия Кудахтеры: безопасность и боль

Вчера (по времени США) вышли обновления, и для свежих Windows, и для не очень свежих.

Для свежих Windows:

Windows 11, version 26H1- KB5121000
Windows 11, version 25H2 - KB5121003
Windows server 2025 - KB5120233

Ставить обновления НУЖНО - исправления касаются активно используемых уязвимостей.
Исправления для более старых версий найдете сами.

Не забыты и любители старины - для Windows 8.1 и Windows Server 2012 R2 вышло обновление KB5120385 , для Windows Server 2012 вышло обновление KB5120386
Для любителей совсем поленился искать после новогодних патчей:
2026-01 Security Monthly Quality Rollup for Windows Server 2008 for x64-based Systems (KB5073697)
2026-01 Security Monthly Quality Rollup for Windows Server 2008 for x86-based Systems (KB5073697)
2026-01 Security Monthly Quality Rollup for Windows Server 2008 R2 for x64-based Systems (KB5073695)

Напоминаю, что "прочие продукты" тоже надо обновлять, в том числе sharepoint - в нем нашли, и активно используют, уязвимость CVE-2026-45659.

Показать полностью
5

Современное управление проектами в ИТ

Серия Унылое графоманство: кадры

Нет ничего прекраснее руководителя проекта «от бизнеса», если она феминистка и веганша.

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

Для РФ, наверное, это бы выглядело.. как те женщины из многочисленных историй, которым мужик сразу должен, любой и каждый. Но денег на вызов мужа на час нет.

Теперь я знаю, что пожелать людям, которых я не очень люблю,
Я пожелаю не знакомство напрямую, этого было бы слишком гуманно.

Людям, которых я не очень люблю, я пожелаю убеждать руководителя такой сильной и независимой феминистки (и не удивлюсь, если еще и запрещенной сами знаете чего) в том, что она прекрасный руководитель, отличный человек, инженер виноват.
Но всего за х2 денег будет вам еще лучше и толерантнее, так что согласуйте превышение бюджета.

26

Ярлык на сайт с привязкой к конкретному браузеру в Windows

Ярлык на сайт с привязкой к конкретному браузеру в Windows

В Windows браузер по умолчанию — один на всю систему, привязать его к отдельной ссылке штатными средствами можно, но геморно.
На практике это неудобно: корпоративный портал требует Edge с профилем AD, остальное удобнее держать в Chrome, банк-клиент — в отдельном браузере без расширений. Рабочий обходной путь известен: ярлык, где Target указывает не на сайт, а на exe браузера с URL вторым параметром: "C:\Program Files\Google\Chrome\Application\chrome.exe" "https://it-apteka.com/"

Способ рабочий, но требует знать точный путь к exe, который различается между машинами и версиями браузера, а у portable-сборок вообще произвольный.
Для одного человека — не проблема. Для раздачи ярлыков коллегам — уже неудобно.
Написал утилиту, которая автоматизирует создание таких ярлыков: Browser Shortcut Creator.

Что делает:

  1. сканирует реестр (`HKLM/HKCU\SOFTWARE\Clients\StartMenuInternet`, `App Paths`) и находит установленные браузеры без ручного ввода путей - отдельный режим для portable-браузеров, которые в реестре не регистрируются

  2. создаёт '.lnk' напрямую через `IShellLinkW`/`IPersistFile` — тот же API, что использует сам проводник, без WSH-обёрток

    Технически:
    C/.NET Framework, без сторонних библиотек и упаковщиков - exe ~50 КБ, portable, установка не требуется - не пишет конфигов, не обращается в сеть, не запрашивает прав администратора (манифест `asInvoker`) - в реестр только читает, ничего не изменяет

    Про антивирусы, чтобы не тратить время в комментариях:
    новый unsigned exe почти всегда даёт 1-3 срабатывания эвристики на VirusTotal (`Trojan:Win32/Wacatac.C!ml` и аналоги у других вендоров). Это не сигнатурный детект, а ML-оценка по общим признакам — маленький неподписанный exe, работает с реестром, создаёт `.lnk`.
    Исходный код открыт (кому интересно), ничего не уходит по сети — проверяется любым сетевым монитором за минуту наблюдения. При желании exe собирается локально через `csc.exe` из состава .NET Framework, без установки дополнительных инструментов.
    Системные требования:
    Windows 7 SP1+ / 8.1 / 10 / 11, .NET Framework 4.5-4.8.

Подробно читать тут

UPD:

Пример использования в AD.
Генерируешь ярлыки один раз через утилиту, сохраняешь в сетевую папку — например, "\\dc01\netlogon\shortcuts".
Дальше раздаёшь через Group Policy Preferences: User Configuration → Preferences → Windows Settings → Shortcuts → New → Shortcut. В качестве Target — путь к сгенерированному `.lnk` в сетевой папке, Action — Create/Replace, Location — Desktop.
Применяешь GPO на нужное OU, и при следующем логоне ярлык на корпоративный портал с привязкой к Edge+AD профилем появляется у всех пользователей группы автоматически, без ручной раздачи и без объяснения каждому, что и куда копировать.
Работает и точечно: разным OU — разные ярлыки, если у бухгалтерии и разработки разный набор сервисов с разными требованиями к браузеру.

Показать полностью 1
9

Кибероружие против Ирана: когда даже воздушный разрыв (air gap) не мешает

Серия Кудахтеры: безопасность и боль

Для ЛЛ: Stuxnet и Fast16

Я так смотрю, многие пропустили историю уязвимости в Linux - CVE-2017-7494, она же SambaCry. Смешно, что уязвимость существовала с 2010 по 2017 год, а точнее с того момента, как не только граждане пользователи массово проспали обновления от марта 2017 года, но до конца мая, уже после атаки на SMB, никто в опенсорсе даже и не подумал посмотреть, что там с реализацией SMB в Linux.
Вот и опять

Уязвимость типа use-after-free в сетевом стеке SCTP ядра Linux позволяет получить полные права суперпользователя (root) на хосте; исследователи из Tencent заявили, что использовали эту брешь для выхода из контейнера и получения доступа к основной системе.
18-Year-Old Linux SCTP Flaw Could Let Local Users Gain Root and Escape Containers
https://thehackernews.com/2026/08/18-year-old-linux-sctp-flaw-could-let.html

Но, сегодня я хотел написать не про это, а про две более интересные, и более успешные атаки.

Атака первая, Stuxnet

Идея крайне простая. Есть Иран, который активно использует промышленные центрифуги. Есть программы для работы реального оборудования - Siemens Step 7, предназначенное для программирования и управления платами управления Simatic (от Siemens + Automatic).

Значит, если написать специфичный вирус, который перехватит управление центрифугами, и их сломает, то можно затормозить производство урана.

Сказано – сделано. Но, поскольку сеть управления центрифугами была физически отключена от интернета, то вирус занесли, предположительно, на флешках.

Атака вторая, Fast16

Вирус, если его можно так назвать,

Механизм перехвата (hook engine) вредоносной программы Fast16 избирательно реагирует на моделирование процессов с использованием мощных взрывчатых веществ в программных комплексах LS-DYNA и AUTODYN.
Все указывает на то, что целью злоумышленников были именно модели ядерных взрывов.

Вредоносная программа проверяет плотность моделируемого материала и активируется лишь в том случае, если этот показатель превышает 30 г/см³ — пороговое значение, достигаемое ураном только в условиях ударного сжатия при имплозии.

Ansys Autodyn
Программный продукт для 2D- и 3D-анализа высокоскоростных нелинейных динамических процессов в твердых телах, жидкостях и газах
Ansys Autodyn позволяет анализировать сложные процессы механики сплошной среды: детонационные и дефлаграционные взрывы, поведение и отклик конструкций на интенсивное динамическое воздействие за пределами несущей способности, разрушение, фрагментация и пробитие материалов.
https://www.cadfem-cis.ru/products/ansys/structures/autodyn/

Заключение

Тут, конечно, кто-то спросит, почему я начал с SambaCry ? Где связь?

Связь простая

EternalBlue[5] — это компьютерный эксплойт, разработанный Агентством национальной безопасности (АНБ) США[6]. В его основе лежит уязвимость нулевого дня в программном обеспечении Microsoft Windows, позволявшая получить доступ к произвольному числу компьютеров, подключенных к сети. АНБ знало об этой уязвимости, но в течение нескольких лет не сообщало о ней компании Microsoft, поскольку планировало использовать эксплойт в своих наступательных кибероперациях. В 2017 году АНБ обнаружило, что этот инструмент был похищен хакерской группировкой Shadow Brokers. Компания Microsoft была уведомлена об этом и в марте 2017 года выпустила обновления безопасности, устраняющие уязвимость. Тем временем хакеры пытались продать программу на аукционе, но не смогли найти покупателя. В итоге 14 апреля 2017 года EternalBlue был опубликован в открытом доступе.

Литература

7-Year-Old Samba Flaw Lets Hackers Access Thousands of Linux PCs Remotely

https://thehackernews.com/2017/05/samba-rce-exploit.html

https://ru.wikipedia.org/wiki/Stuxnet

https://www.kaspersky.ru/resource-center/definitions/what-is-stuxnet

https://ru.wikipedia.org/wiki/Simatic

https://www.sentinelone.com/labs/fast16-mystery-shadowbrokers-reference-reveals-high-precision-software-sabotage-5-years-before-stuxnet/

https://thehackernews.com/2026/04/researchers-uncover-pre-stuxnet-fast16.html

https://www.security.com/threat-intelligence/fast16-nuclear-sabotage

https://ru.wikipedia.org/wiki/LS-DYNA

https://www.ansys.com/products/structures/ansys-autodyn

Ansys Autodyn

https://www.cadfem-cis.ru/products/ansys/structures/autodyn/

https://en.wikipedia.org/wiki/EternalBlue

Показать полностью

Инфраструктурное кроилово

Серия Кудахтеры

ДЛЯ МОДЕРАТОРОВ. Специально не знаю для кого, вместо одной ссылки в пост добавлено 10 страниц английского текста. Вопрос "зачем" висит в модераторской.
Что за новое веяние в модерации?

Слушал дальних знакомых, с очередной крайне простой историей.

Фирма скроила и купила не два сервера «попроще», а один. Все как у больших – два процессора, рейд контроллер, два блока питания.

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

Видимо, стоимость простоя ниже стоимости еще одного сервера и настройки режима высокой доступности. ХОТЯ БЫ в варианте «для бедных» - Proxmox + Linstor.

Литература для самообучения

Setting Up Highly Available Storage for Proxmox Using LINSTOR & the LINBIT GUI

PS
Я не понимаю, что за новые авто применения правил «не читая, » на Пикабу, но раз автомодерация пишет "При публикации нового поста проверьте, что весь контент доступен в посте без перехода по ссылке, а оформление ссылок соответствует правилам"

то

ДЛЯ МОДЕРАТОРОВ. Специально не знаю для кого, вместо одной ссылки в пост добавлено 10 страниц английского текста. Вопрос "зачем" висит в модераторской.
Что за новое веяние в модерации?

https://linbit.com/blog/setting-up-highly-available-storage-...

This article is a companion article to “How to Setup LINSTOR on Proxmox VE”. Instructions in this article will guide you through installing and integrating LINSTOR® with Proxmox VE. However, rather than using the LINSTOR client utility, within a CLI, to set up LINSTOR, you will use the open source LINBIT GUI.
Some of the benefits of integrating LINSTOR with Proxmox are:
Virtual disk replicas on two or more nodes
Live migrations of virtual machines (VMs) and containers
High availability (HA) for VMs and containers
Flexibility to configure the replica count in your cluster
Thin-provisioned volume snapshots and snapshot shipping for disaster recovery
Ability to use LINSTOR storage pools and resource groups to configure tiered-storage

The previously mentioned article goes into more detail and explanation about the steps to integrate LINSTOR with Proxmox. This article is really meant to get you up-and-running as quickly as possible, with just the bare amount of explanation or background information. If you find yourself wanting more information about the setup steps or the integration, refer to the earlier mentioned article or the Proxmox chapter of the LINSTOR User Guide.
Assumptions
The assumptions about your deployment environment are similar to the assumptions in the earlier mentioned “How to Setup LINSTOR on Proxmox VE” article. These are:
You have a working Proxmox Virtual Environment (PVE) 8.x cluster with three nodes, proxmox-0, proxmox-1, and proxmox-2. This tutorial uses PVE version 8.4.0 with kernel 6.8.12-10-pve.
Each node has an additional unused physical disk drive, /dev/vdb.
You will install LINSTOR alongside Proxmox in a hyperconverged cluster, that is, your Proxmox nodes will also be LINSTOR nodes.
All commands that you might need to run within a CLI, for example, installing packages or working with a logical volume manager, are run under the root user account or prefixed with sudo from a privileged user account.

Installing LINSTOR alongside Proxmox
You can get LINSTOR packages for Proxmox in a few different ways:
For LINBIT® customers, all required packages are available from the drbd-9 LINBIT repository for Proxmox.
The LINBIT public Proxmox package repository is the LINBIT equivalent offering to the Proxmox No-Subscription Repository.
As an alternative to installing from packages, you can compile LINSTOR and related components from their open source project repositories.
If you are not a current LINBIT customer but want to evaluate LINBIT software, you can contact the LINBIT team for an evaluation account.
For convenience, the instructions in this article show configuring the LINBIT public Proxmox package repository.
Adding the LINBIT public Proxmox package repository
You can add the LINBIT public Proxmox package repository by entering the following commands on all your nodes:
wget https://packages.linbit.com/public/linbit-keyring.deb
dpkg -i linbit-keyring.deb
PVERS=8 && echo "deb [signed-by=/etc/apt/trusted.gpg.d/linbit-keyring.gpg] \
http://packages.linbit.com/public/ proxmox-$PVERS drbd-9" \
> /etc/apt/sources.list.d/linbit.list
apt update
❗ IMPORTANT: Set the PVERS variable to your Proxmox VE major version number. In this example, the PVERS variable is set to 8 because Proxmox VE 8.4.0 is installed. If you need to determine what version of Proxmox VE you are running, enter a pveversion --verbose|grep proxmox-ve command.
⚠️ WARNING: Although the LINBIT public package repository can be a great option for a homelab, testing, or other non-production use, LINBIT does not offer any guarantees, support, or SLAs for the packages in LINBIT public repositories. For production or enterprise deployments, using the official LINBIT customer repositories is recommended.
Installing low-level components
First, install some of the necessary low-level components that you will need before you install LINSTOR and the LINSTOR Proxmox plugin.
On all nodes in your cluster, enter the following command:
apt install -y proxmox-default-headers drbd-dkms drbd-utils
Installing LINSTOR components
Next, install LINSTOR components by entering the following command on all nodes:
apt install -y linstor-controller linstor-satellite linstor-client
📝 NOTE: The instructions in this article only require the LINSTOR controller service to be installed and running on one node, proxmox-0. However, by installing the linstor-controller package on all nodes, you can later make the LINSTOR controller service highly available in your cluster, as a next step.
Start the LINSTOR satellite service on all nodes.
systemctl enable linstor-satellite --now
Start the LINSTOR controller service on one node only, proxmox-0.
systemctl enable linstor-controller --now
Disable the LINSTOR controller service on all other nodes:
systemctl disable linstor-controller --now
Installing the LINBIT GUI
You can install the LINBIT GUI from a DEB package available on both the LINBIT customer and public Proxmox repositories. To install the LINBIT GUI, enter the following command on all nodes:
apt install -y linstor-gui
Setting up LINSTOR by using the GUI
You can reach the GUI by opening the following URL in a web browser on the same network as your LINSTOR controller node: http://<LINSTOR_controller_node_hostname_or_IP_address>:3370.
In this article, proxmox-0 is the LINSTOR controller node hostname and its IP address is 192.168.222.130.
Adding nodes by using the GUI
Before you can configure LINSTOR storage, you need to set up your LINSTOR cluster by defining the cluster nodes. Go to the “Node List” screen by expanding the “Inventory” menu item on the left side of the screen, then clicking on “Nodes”.
At first, your LINSTOR deployment will have no defined nodes. On the “Node List” screen, click the “Add” button to add a node to your cluster. This will take you to the “Create Node” screen.
On the “Create Node” screen, you enter information about the node you want to add. For example, proxmox-0 for the name and 192.168.222.130 for its IP address. For the “Type” field, choose “Satellite”, “Controller”, or “Combined”, depending on the node’s role. In this article’s example deployment, proxmox-0 runs LINSTOR satellite and controller services, so it has a “Combined” role in the cluster.
After creating a LINSTOR combined node, create the other two nodes as LINSTOR satellite nodes.
When you finish defining nodes in your cluster, the “Node List” screen will show summary information for them.
Adding storage pools
After defining the nodes in your LINSTOR cluster, you can configure LINSTOR-managed storage. The GUI allows you to create storage pools with some extra convenience. Unlike the LINSTOR CLI client, for example, you can create the same storage pool on multiple nodes using a single input form, rather than executing multiple CLI commands.
Navigate to the “Storage Pool List” screen by clicking the “Storage Pools” item from within the “Inventory” menu item on the left side of the GUI. In a new LINSTOR deployment, the screen will list only the default “diskless” storage pool on all your LINSTOR satellite nodes.
Next, click the “Add” button on the “Storage Pool List” screen. This will bring you to a screen where you can define and create a new storage pool.
On the “Add Storage Pool” screen, you might complete the fields as follows, for example:
Storage Pool Name: pve-storage
Multiple Nodes: toggle on
Node: proxmox-0 proxmox-1 proxmox-2
Type: LVM_THIN
Device path: /dev/vdb

However, for the Proxmox use case in this guide, you need some free space head room with your storage pool. For this reason, you need to create an LVM volume group on all your storage cluster nodes by using the CLI, and then create a thin-provisioned logical volume that only uses 80% of your physical disk to leave some headroom. To do that, enter the following command on all the storage nodes in your cluster:
vgcreate linstor_vg /dev/vdb && \
lvcreate -l 80%FREE -T linstor_vg/thinpool
Output from the command will show that the volume group and the logical volume were created.
Physical volume "/dev/vdb" successfully created.
Volume group "linstor_vg" successfully created
Thin pool volume with chunk size 64.00 KiB can address at most <15.88 TiB of data
Logical volume "thinpool" created.
After creating an LVM volume group and thin pool logical volume on all your storage nodes, you can add a LINSTOR storage pool backed by this logical volume on all your nodes. If you are not on it already, return to the “Add Storage Pool” screen by expanding the “Inventory” menu item and clicking on “Storage Pools”. Click the “Add” button in the upper right corner. On the “Add Storage Pool” screen, click the “Existing Device” tab and complete the fields, for example:
Storage pool name: pve-storage
Node: proxmox-0, proxmox-1, proxmox-2
Type: LVM_THIN
Volume group: linstor_vg/thinpool

Click the “Submit” button after entering values into the fields.
After defining and creating the pve-storage storage pool on your LINSTOR satellite nodes, the “Storage Pool List” screen will show the new storage pool on these nodes.
Creating a LINSTOR resource group
After creating the same storage pool, pve-storage, on all your satellite nodes, you need to create a LINSTOR resource group. In this case, you will create a resource group that is backed by the storage pool that you just created. Later you will link this resource group to Proxmox when you configure the LINSTOR Proxmox integration plugin. This way, when you specify that Proxmox uses LINSTOR storage, for example, when you create a new VM, LINSTOR will create a new resource from the resource group, and deploy replicas of the resource in your cluster, all automatically and behind-the-scenes. Proxmox will then use this storage resource to store the VM disk image.
To create a LINSTOR resource group, expand the “Storage Configuration” menu item and click “Resource Groups”. From the “Resource Group List” screen, click the “Add” button.
On the “Create Resource Group” screen, enter the following values in these fields:
Name: pve-rg
Description: Proxmox VE storage
Storage Pool: pve-storage
Place Count: 3

After entering the values, click the “Submit” button.
LINSTOR will create the resource group and the associated LINSTOR volume group. After creating the resource group, the GUI will return to the “Resource Group List” page. The resource group list will show the new pve-rg resource group. You are now ready to install and configure the LINSTOR Proxmox integration plugin.
Installing the LINSTOR Proxmox VE plugin
After defining and creating the necessary LINSTOR objects that you need for integrating LINSTOR with Proxmox, the next steps are to install and configure the LINSTOR Proxmox integration plugin. To install the LINSTOR Proxmox plugin, enter the following command on all your Proxmox nodes:
apt install -y linstor-proxmox
Configuring the LINSTOR Proxmox VE plugin
After installing the LINSTOR Proxmox plugin, you need to configure it. Proxmox stores its storage configuration in the /etc/pve/storage.cfg file. Use the following command, or a text editor, to create the LINSTOR configuration:
On proxmox-0:
cat << EOF | sudo tee -a /etc/pve/storage.cfg
drbd: linstor_storage
content images, rootdir
controller 192.168.222.130
resourcegroup pve-rg
EOF
❗ IMPORTANT: Storage entries within the Proxmox storage configuration file must be separated by an empty new line.
💡 TIP: You only need to edit the configuration file on one node. Proxmox will propagate the changes to the other Proxmox nodes in your cluster.
Within the configuration, you specify the Proxmox content type that you can use with LINSTOR storage, in this example VM images (images) and LXC container data (rootdir). You also specify the LINSTOR resource group and the LINSTOR controller node’s IP address. If you later configure a highly available LINSTOR controller, you would need to edit the configuration file and specify the virtual IP address for the LINSTOR controller.
After editing the Proxmox storage configuration, restart Proxmox services in your cluster by entering the following command on all nodes:
systemctl restart pve-cluster pvedaemon pvestatd pveproxy pve-ha-lrm
Using LINSTOR storage in Proxmox
That’s it. After creating a LINSTOR resource group for Proxmox storage and configuring the LINSTOR Proxmox plugin, you can use this HA storage just as you would any other compatible storage in Proxmox, for example, to store VM images or containers.
You can log in to the PVE web interface to investigate the LINSTOR integration.
Logging in to the Proxmox web interface
Log in to the PVE web interface by opening up the following URL, adjusted for your PVE host’s IP or DNS address, in a web browser: https://192.168.222.130:8006. Then enter your username and password.
Showing LINSTOR storage in the Proxmox web interface
After logging in to the Proxmox web interface, if you click the expansion arrow symbols before each Proxmox node shown within the “Server View” pane, you will find linstor_storage listed as available storage for each node.
You can use your LINSTOR storage to store your virtual machine images, just as you would any other storage in Proxmox. To do this, when you create a new VM, select linstor_storage in the “Storage” field on the “Disks” tab of the “Create: Virtual Machine” pop-up.
After you create a VM in Proxmox that uses LINSTOR storage, as mentioned earlier, LINSTOR will automatically create a storage resource associated with the VM and replicate the resource on all the nodes in your cluster. In this case, this is because you specified a placement count of 3 for the resource group you associated with Proxmox and because there are three storage nodes in your cluster. You can use the GUI to confirm this, by navigating to the “Resource List” screen.
Migrating virtual machines in Proxmox
If your VM does not have an attached virtual CD or DVD disc drive with an active ISO image, you can migrate your VM backed by LINSTOR storage from node to node, if you needed to. This might be something you would want to do when performing system maintenance tasks on a node. For added flexibility, and to minimize downtime for your VM users, you can also configure Proxmox high availability for your VM. To do this, with your VM selected, click the “More” button in the upper-right part of the screen and select “Manage HA” from the drop-down menu.
After adding a VM to Proxmox HA management, your VM will be automatically recovered on a healthy node in the PVE cluster if the node currently hosting the VM fails. Because LINSTOR-managed storage facilitates perfect, in real-time (synchronous) data replication through DRBD®, all nodes in this example setup will have an up-to-date copy of the VM’s virtual disk. This makes recovery and failover fast.
Next steps and other resources
Hopefully this article has demonstrated some of the convenience and utility of using the LINBIT GUI to configure LINSTOR storage. LINBIT Solutions Architect, Ryan Ronnander, created an excellent video about integrating LINSTOR with Proxmox: “How to Set Up LINSTOR on Proxmox VE”. Watching the video starting at the “Creating a VM with LINSTOR Storage” chapter, would be great companion learning piece to this article. In the video, Ryan shows how to create an example VM in Proxmox, make the VM highly available, and demonstrates VM migration and failover. For simplicity, instructions in this article only showed running the LINSTOR controller service on one node. Another next step you might investigate is how to make the LINSTOR controller service highly available in your cluster.
If you have any questions or issues integrating LINSTOR with Proxmox VE, the LINBIT Community Forums is a great place to ask for help from the community of LINBIT software users. You can also reach out to the LINBIT team if you might have questions about deploying LINSTOR with Proxmox in a production or enterprise environment, or if you want to evaluate LINBIT software for your use case using LINBIT prebuilt customer packages.
Speaking of production and enterprise environments, you can also check out the LINBIT how-to guide, Getting Started With LINSTOR in Proxmox VE. The LINBIT team created this getting started guide with production and enterprise deployments specifically in mind.

Показать полностью
3

Теоретико-практический вопрос

Дано

Железо:

  • Проц - i7-9850HE

  • Память - 16Г (для задач хватает)

  • Корпус - промышленное исполнение из алюминиевого сплава с реберными радиаторами, пассивное охлаждение (похоже на китайскую залипуху)

ОС:

  • Linux x64

Вопрос:

Один из прикладных процессов грузит одно из ядер на 100% перманентно. Остальные ядра задействованы на 1 - 5 %. Есть опыт на тему, как быстро ляжет железо в такой ситуации?

з.ы. Греется до 60 на внешнем радиаторе

Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества