Shinken (программное обеспечение)

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

Общие сведения
Shinken
Тип Мониторинг сети
Автор Жан Габес
Написана на Python
Операционные системы Unix-подобные, Windows
Первый выпуск 1 декабря 2009
Последняя версия 2.4.3 (10 марта 2016)
Репозиторий github.com/naparuba/shin…
Лицензия GNU Affero General Public License
Сайт shinken-monitoring.org

Функционал

Архитектура Shinken направлена на упрощение балансировки нагрузки и обеспечение высокой доступности. Администратор управляет одной конфигурацией, которую система автоматически делит на части и распределяет между рабочими узлами. Название связано с этой особенностью: «Shinken» — это японский меч.

Shinken был написан Жаном Габесом в качестве концепта новой архитектуры Nagios. Считая новый вариант более быстрым и гибким по сравнению со старой реализацией на C, автор предложил сделать Shinken основной веткой разработки Nagios 4[1]. Это предложение было отклонено авторами Nagios, и Shinken стал независимым программным обеспечением для мониторинга сетей, совместимым с Nagios[2].

Shinken работает под управлением всех операционных систем, поддерживающих Python. Основная разработка ведётся под Linux, однако программа также хорошо функционирует на других Unix-системах и Windows. Процесс reactionner (отвечающий за отправку уведомлений) может быть запущен и под Android. Программа распространяется по лицензии GNU Affero General Public License и является свободным программным обеспечением.

Обзор

  • Архитектура
    • Мониторинговая система, написанная на Python
    • Распределённая архитектура с использованием Pyro (удалённые объекты)
  • Активный и пассивный мониторинг
    • Мониторинг сетевых сервисов (SMTP, POP3, HTTP, NNTP, ICMP, SNMP, FTP, SSH)
    • Мониторинг ресурсов узлов (загрузка процессора, использование диска, системные журналы) на большинстве операционных систем для сети, включая Microsoft Windows
      • Использование агентов, таких как NSClient++, send_nsca, Check MK, Thrift TSCA
      • Использование агентов, позволяющих удалённо запускать скрипты через NRPE (встроенная реализация на Python входит в состав Shinken)
      • Агент-независимые методы: SNMP, WMI, сценарии SSH или HTTP(SSL)
      • Поддержка передачи результатов проверок напрямую через программы с использованием Apache Thrift (Java, Python, Ruby)
    • Мониторинг систем, отправляющих собранные данные по сети в специальные модули (например, VMWare ESX3/4/5, Collectd)
    • Поддержка удалённого мониторинга через SSH или SSL-туннели
    • Простой формат плагинов с возможностью создавать собственные проверки на любом языке (shell-скрипты, C++, Perl, Ruby, Python, PHP, C# и др.)
    • Расчёт KPI на основе статуса и производительных данных для формирования новых сервисов и метрик
  • Внешние интерфейсы
    • Совместимость с Livestatus API для получения статуса, конфигурации и производительной информации
    • Экспорт данных в модули визуализации (PNP4Nagios, Graphite и др.)
    • Поддержка нативной системы сообщений Android
    • Экспорт событий в системы логирования через syslog и RabbitMQ
    • Модули могут быть подключены к любому процессу Shinken для расширения функциональности
  • Производительность
    • Параллельное выполнение проверок сервисов и узлов
    • Возможность распределять процессы опроса по нескольким серверам
    • Поддержка резервирования и балансировки узлов мониторинга
    • Поддержка нескольких резервных внешних интерфейсов
    • Маршрутизация проверок на специальные процессы-опросчики
  • Корреляция и бизнес-логика
    • Иерархия «родитель—потомок»
      • Определение иерархии узлов для различения между недоступными и неработающими узлами
      • 1:1, 1:N
    • Произвольные деревья зависимостей между сервисами и узлами
      • 1:1, 1:N
    • Интеграция бизнес-правил
      • Автоматизированные сервисы и узлы, отражающие состояние бизнес-процессов
      • Возможность присвоения бизнес-важности каждому сервису, узлу или процессу
    • Вывод только корневых проблем
    • Автоматическое присваивание статуса unknown потомкам при недоступности родителя
  • Дополнительные возможности
    • Уведомления о проблемах и их решении (e-mail, пейджер, SMS, либо произвольные методы через плагины)
    • Определение обработчиков событий для автоматического реагирования
    • Переклассификация степеней оповещений на основе регулярных выражений
    • Поддержка имён объектов в UTF-8
    • Мониторинг нескольких клиентов с единой административной точкой
    • Рецидивная система простоев через параметр maintenance_period
    • Расширенная система шаблонов с наследованием и переопределением

Установка Shinken

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

  • Arbiter (арбитр)
    • Загружает конфигурационные файлы и распределяет объекты узлов и сервисов по планировщикам
    • Наблюдение за процессами и инициирование аварийного переключения при ошибках
    • Маршрутизация результатов проверок от Receiver к связанному Scheduler
    • Модули арбитра
      • Существуют различные модули для работы с конфигурацией
  • Scheduler (планировщик)
    • Планирует выполнение проверок сервисов и узлов
    • Передаёт задания для опроса процессам Poller
    • Вычисляет статусы и зависимости
    • Применяет KPI-триггеры
    • Формирует уведомления и передаёт их процессу Reactionner
    • Обновляет файл или базу хранения состояний
    • Отправляет внутренние события (broks) брокерам
  • Poller (опросчик)
    • Получает проверки от Scheduler, выполняет плагины или встроенные модули и отправляет результаты Scheduler
    • Модули Poller
      • NRPE — опрос данных через NRPE‑агенты
      • SNMP — активный опрос SNMP‑агентов (на основе PySNMP)
      • CommandPipe — получение пассивных данных от check_mk-скриптов, не обрабатывает команды
  • Reactionner (реакционер)
    • Получает уведомления и обработчики событий, выполняет плагины/скрипты и возвращает результаты Scheduler
  • Broker (брокер)
    • Содержит несколько модулей (обычно отдельные процессы)
    • Получает внутренние события (broks) от Scheduler и перенаправляет их в соответствующие модули
    • Модули определяют, обрабатывать ли событие по его типу (лог, статус, результаты проверок и т. д.)
    • Основные модули:
      • webui — обновляет внутренние объекты и предоставляет веб-сервер для нативного интерфейса Shinken
      • livestatus — обновляет внутренние объекты, доступные через API для Thruk или Check_MK Multisite
      • graphite — экспортирует данные в базу Graphite
      • ndodb — обновляет базу NDO (MySQL или Oracle)
      • simple_log — собирает логи процессов Shinken
      • status_dat — пишет статус в status.dat для классического CGI-интерфейса
  • Receiver (опционально)
    • Принимает данные через локальные или удалённые протоколы
    • Буферизует пассивные данные перед передачей Scheduler (или Arbiter для глобальных команд)
    • Возможна организация кластера Receiver для обработки большого числа событий
    • Модули Receiver
      • NSCA — получение данных по протоколу NSCA
      • Collectd — получение данных производительности от collectd по сети
      • CommandPipe — прием команд, обновлений статуса и метрик
      • TSCA — интерфейс Apache Thrift для передачи результатов проверок с помощью буферизованного TCP-подключения от программ
      • Web Service — веб-сервис для приема результатов через HTTP POST (бета)

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

Shinken WebUI — встроенный веб-интерфейс для показа в реальном времени состояния, конфигурации, взаимодействия, дашборда для визуализации трендов из базы Graphite, а также отображения графов зависимостей.

Shinken skonfUI — независимый веб-фронтенд для управления автоматическим обнаружением и настройкой системы.

Сценарий командной строки shinken-admin — для управления процессами во время работы (изменение уровня логирования, диагностика и др.).

Сценарий install.sh — основной инструмент для установки, удаления и обновления Shinken и сопутствующих компонентов.

Разработка

Shinken разрабатывается с открытым и тест-ориентированным подходом: участники проекта реализуют новые функции, рефакторинг, контроль качества и исправление ошибок[3].

Исходный код размещается на GitHub[4]. Также развёрнут интеграционный сервер, который выполняет автоматические тесты при каждом коммите и регулярные расширенные проверки.

Документация по Shinken размещена на wiki.

Примечания

  1. Gabès, Jean Shinken: a new implementation proposal (англ.). GitHub (1 декабря 2009). — «I would like to have your feed back about a (unfinished) reimplementation of Nagios named "Shinken" I wrote in Python that is faster and more modular than the current Nagios implementation in C». Дата обращения: 4 марта 2014. Архивировано 11 июля 2024 года.
  2. Gabès, Jean Shinken: a mix with Nagios is not possible (англ.). Shinken team (1 июня 2010). — «We never got an answer for the initial Shinken proposal because we are seen as a renegade project. In fact, now we can say that we are a fork.» Дата обращения: 1 июня 2010. Архивировано 23 января 2014 года.
  3. Shinken contributors на Ohloh (англ.). openhub.net. Дата обращения: 13 июня 2024. Архивировано 15 марта 2016 года.
  4. Исходный код на GitHub (англ.). github.com. Дата обращения: 13 июня 2024. Архивировано 25 февраля 2015 года.

Ссылки