OpenSearch вместо Elasticsearch для офисных логов: почему мы всем клиентам ставим форк
Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. Внутри компании с 2022 года у нас действует правило — новым клиентам не ставим Elasticsearch, только OpenSearch. Разница функциональная минимальна, но юридически, лицензионно и финансово это другой мир. В статье расскажу, почему мы так решили, как собрали стек у клиента — транспортной компании с 45 РМ — и что реально ловит система.
История «лицензионной драмы» Elasticsearch
Если коротко. До января 2021 года Elasticsearch был под полностью свободной лицензией Apache 2.0. Amazon в своём AWS Elasticsearch Service зарабатывал на этом большие деньги, ничего не платя Elastic. Elastic решил, что это несправедливо, и сменил лицензию на SSPL (Server Side Public License) + Elastic License 2.0. Эти лицензии несовместимы с Open Source Definition и запрещают использовать ES как managed-сервис конкурентам Elastic.
Amazon в ответ взял последнюю Apache-версию (7.10) и форкнул её под именем OpenSearch. С тех пор OpenSearch и Elasticsearch развиваются параллельно: разные разработчики, но общий API-фундамент. OpenSearch — open source под Apache 2.0 навсегда.
Для SMB это важно потому, что:
- Многие функции, которые в ES требуют платной подписки X-Pack (SIEM, алерты, reporting), в OpenSearch бесплатные.
- В РФ после 2022 года купить Elastic-подписку почти невозможно — OpenSearch снимает этот вопрос полностью.
- OpenSearch переведён на русский (Dashboards), стабильно живёт на железе российских провайдеров, беспроблемно устанавливается.
Что собирается в OpenSearch у типичного SMB-клиента
Когда мы разворачиваем стек, собираем:
| Источник | Что даёт |
|---|---|
| Windows Event Logs | События входа, изменения AD, запуск служб |
| Sysmon | Детальный аудит запуска процессов, сетевых соединений |
| Linux syslog + journald | Системные события на серверах |
| Nginx/Apache access/error | Трафик на внутренних веб-сервисах |
| Логи 1С (technological journal) | Ошибки, медленные запросы, блокировки |
| Postfix/Dovecot | Почтовый трафик, спам, деливерабельность |
| Firewall (pfSense, Mikrotik) | Сетевые потоки, заблокированные соединения |
| PostgreSQL/MSSQL | Медленные запросы, dead tuples, ошибки |
| Audit Docker/Kubernetes | Запуски контейнеров, изменения deployments |
Архитектура, которую мы поставили клиенту
Клиент — транспортная компания, 45 сотрудников, 8 серверов (3 Windows для AD, 1С, файлов + 5 Linux для веба, мониторинга, 1С-базы). Собрали однонодовый кластер (для 45 РМ бессмысленно делать multi-node, hardware overhead слишком большой):
- VPS 1 — OpenSearch Node: 8 vCPU, 24 ГБ RAM, 500 ГБ NVMe, хранит индексы последних 90 дней.
- VPS 2 — Cold Storage: 2 vCPU, 4 ГБ RAM, 2 ТБ HDD. Сюда уходят индексы старше 90 дней через Index State Management (ISM).
- Fluent Bit на каждом сервере — агент сбора логов, гораздо легче, чем Logstash. На Windows — через WinLogBeat (ES-совместимый) с редиректом в OpenSearch.
- OpenSearch Dashboards — веб-интерфейс на той же VPS 1, доступ через nginx с Basic Auth и VPN.
Месячная стоимость инфраструктуры — 8 400 ₽. Никаких лицензий. Никаких годовых подписок. Только аренда железа.
Что мы сразу нашли в логах
Первая пользовательская история: через 48 часов после запуска клиент увидел в логах то, о чём не подозревал 2 года. На контроллере домена обнаружили регулярные попытки подбора паролей (events 4625) с одного из рабочих мест бухгалтерии — оказалось, у сотрудницы на ноутбуке сидел подсоединённый принтер с устаревшей прошивкой, который пытался авторизоваться сохранённым 4 года назад паролем.
Второе открытие: логи 1С показали, что один конкретный отчёт «Остатки склада на дату» выполняется по 40 секунд из-за отсутствия индекса — об этом никто не задумывался, пока логи не показали 38 таких запросов в час от одного сотрудника. Починили SQL-индекс за 15 минут, отчёт начал открываться за 0,8 секунды.
Третье — nginx на внутреннем портале компании показывал ежедневно 3–4 тысячи попыток обратиться к несуществующим путям /.env, /admin.php, /wp-login.php. Это были сканы ботов из интернета. Хотя этот портал был для своих, он торчал в интернет и его никто не защищал. Поставили ограничение по IP через nginx + fail2ban.
Дашборды, которые получил директор
Через неделю мы собрали в Dashboards три ключевых панели для руководства:
- Безопасность. Количество неудачных логинов по часам, топ-10 пользователей по ошибкам, карта географии IP, новые пользователи в AD, привилегированные операции.
- Здоровье 1С. Медленные запросы >5 сек, блокировки, ошибки ошибок пользователей с расшифровкой «почему так плохо работает».
- Инфраструктура. Загрузка CPU/RAM/диск по серверам, очередь принтеров, состояние бэкапов (Veeam пишет логи — они тоже в OpenSearch), последние перезагрузки.
Теперь директор каждый понедельник утром смотрит эту страницу и задаёт нам вопросы по недельным аномалиям. В 80% случаев аномалии — это реальные проблемы, которые без OpenSearch остались бы незамеченными.
Оповещения и алерты
OpenSearch Alerting — отдельный плагин в комплекте. Настроили правила:
- 5+ неудачных логинов одной учётки за 2 минуты → Telegram.
- Новый запуск PowerShell с -EncodedCommand → Telegram + SMS.
- Ошибки базы 1С >10 в минуту → Telegram.
- Место на диске осталось <10% → Telegram.
- Файрвол заблокировал 500+ попыток с одного IP → Telegram.
- Bandwidth входящий >80% от канала офиса → Telegram.
В среднем в Telegram падает 2–4 алерта в сутки. Это много для автоматизации (часть можно автодопустить или автоподавить), но они почти все содержат реальную полезную информацию.
Что делает OpenSearch, а что не делает
OpenSearch — это не мониторинг в классическом смысле (Zabbix/Prometheus), а хранилище для поиска и аналитики по логам. Ключевое отличие:
- Zabbix/Prometheus собирают метрики (CPU, память, задержка) и алёртит по пороговым значениям.
- OpenSearch собирает сырые события (логи, аудит) и даёт по ним поиск, аналитику, ретроспективный разбор.
Обычно оба нужны. В нашем кейсе Zabbix уже стоял, OpenSearch добавили сверху. Они не конкурируют — они дополняют друг друга.
Стоимость и сроки
| Этап | Срок | Стоимость |
|---|---|---|
| Проектирование и подбор серверов | 0.5 дня | 8 000 ₽ |
| Установка OpenSearch + Dashboards | 0.5 дня | 10 000 ₽ |
| Настройка Fluent Bit/WinLogBeat на всех хостах | 1 день | 22 000 ₽ |
| Парсеры логов 1С, Nginx, файрвола | 1 день | 22 000 ₽ |
| Дашборды для директора + 3 для админа | 1 день | 20 000 ₽ |
| Настройка алертов в Telegram | 0.5 дня | 10 000 ₽ |
| Обучение и документация | 0.5 дня | 3 000 ₽ |
| Итого | 5 дней | 95 000 ₽ |
Грабли, на которые наступили
- WinLogBeat с Defender. На трёх рабочих станциях Windows 11 Defender блокировал сам процесс beats — пришлось добавить в исключения через GPO.
- Heap size. По умолчанию Java-heap OpenSearch поднимается как 1 ГБ — это мало. Выставили 12 ГБ (половину RAM VPS), тормоза ушли.
- Cold storage и retention. Первая версия ISM-policy выкидывала индексы на 30 дней — потом юрист сказал, что логи нужно хранить 180 дней. Переделали.
- Обрушение в момент переезда. Из-за того что поставили один узел без реплики, при первом же VPS-перезагрузе мы потеряли 12 часов индексации логов. Решение — регулярные снапшоты в S3 каждые 6 часов.
Что мы ведём на абонентке
- Обновление OpenSearch и Dashboards раз в квартал.
- Разбор алертов ежедневно, эскалация директору еженедельно.
- Настройка новых источников логов по мере появления (новое железо, новые сервисы).
- Мониторинг места на дисках, ротация индексов.
- Снапшоты в S3 для восстановления в случае краха.
Хотите посмотреть, что происходит в ваших логах?
Поставлю бесплатный тестовый OpenSearch на 7 дней к вам — посмотрим, что реально творится в инфраструктуре. Часто в первые 2–3 дня находится 3–5 серьёзных проблем. Аудит — по Москве и МО.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ
- Чем OpenSearch отличается от Elasticsearch?
- OpenSearch — форк Elasticsearch 7.10, поддерживаемый Amazon и сообществом. Функционально идентичен ES 7.10, плюс Security, Alerting, Anomaly Detection бесплатно.
- Почему не ставить свежий Elasticsearch?
- С 7.11 Elasticsearch под SSPL/Elastic License. Платная подписка от $16 за узел в час. Для SMB — бессмысленно.
- Сколько места нужно под логи офиса на 45 человек?
- Около 4 ГБ/день в индексе с репликой. За 90 дней — ~360 ГБ. Укладывается в 500 ГБ NVMe.
- Сколько стоит проект в АйТи Фреш?
- Базовое внедрение на 45 РМ и 8 серверов — 95 000 ₽, срок 4–5 дней. Сопровождение на абонентке.