Архитектура Shinken направлена на обеспечение более легкой балансировки нагрузки и высокой доступности . Администратор управляет одной конфигурацией, система автоматически «разрезает» ее на части и отправляет рабочим узлам. Название происходит от этой функциональности: Shinken — японский меч.
Shinken был написан Жаном Габесом как доказательство концепции новой архитектуры Nagios. Полагая, что новая реализация будет быстрее и гибче старого кода C , он предложил ее в качестве новой ветви разработки Nagios 4. [3] Это предложение было отклонено авторами Nagios, поэтому Shinken стал независимым программным приложением для мониторинга сети, совместимым с Nagios . [4]
This section is in list format but may read better as prose. You can help by converting this section, if appropriate. Editing help is available.(February 2013)
Дизайн
Система мониторинга, написанная на Python
Распределенная архитектура с использованием удаленных объектов Pyro
Использование таких агентов, как NSClient++, send_nsca, Check MK , Thrift TSCA
Использование агентов, позволяющих удаленно запускать скрипты через Nagios Remote Plugin Executor (встроенная реализация на чистом Python включена в Shinken)
Использование безагентных методов, таких как SNMP, WMI , скриптовый SSH или HTTP(SSL)
Отправлять результаты проверки напрямую из программ с помощью Apache Thrift (Java, Python, Ruby)
Мониторинг систем, которые имеют возможность отправлять собранные данные по сети в специально написанные плагины (например, VMWare ESX3/4/5, Collectd)
Простая конструкция плагина, которая позволяет пользователям легко разрабатывать собственные проверки служб в зависимости от потребностей, используя инструменты по выбору ( скрипты оболочки , C++ , Perl , Ruby , Python , PHP , C# и т. д.)
Возможность расчета ключевых показателей эффективности на основе данных о состоянии и производительности в ядре Shinken для создания новых услуг и данных о производительности
Внешние интерфейсы системы
API, совместимый с Livestatus, который предоставляет информацию о состоянии, конфигурации и производительности
Экспортирует данные в графические модули (доступны PNP4Nagios, Graphite и другие)
Поддержка собственного API обмена сообщениями Android
Экспорт данных событий в системы регистрации с помощью syslog и RabbitMQ
Модули можно присоединять к любому процессу Shinken, чтобы максимально эффективно расширить его возможности.
Производительность
Доступны параллельные проверки служб и хостов
Возможность распределения процессов опроса на нескольких серверах
Поддержка внедрения легко избыточных и сбалансированных по нагрузке хостов мониторинга
Поддержка нескольких избыточных внешних интерфейсов
Возможность перенаправлять проверки выделенным поллерам (процессам, специализирующимся на выполнении плагинов)
Корреляция и бизнес-аналитика
Отношения между родителями и детьми
Возможность определения иерархии сетевых хостов с использованием «родительских» хостов, что позволяет обнаруживать и различать неработающие и недоступные хосты.
1 к 1, 1 к N
Свободные деревья зависимостей между любым сервисом и хостом
1 к 1, 1 к N
Поддержка интегрированных бизнес-правил
Расчетные хосты или службы, представляющие состояние бизнес-службы
Поддержка назначения бизнес-влияния каждой услуге, хосту или бизнес-процессу
Возможность показывать только основные проблемы
Автоматически изменяет состояние дочернего элемента на «неизвестно», когда родительский элемент недоступен
Другие особенности
Уведомления о контактах при возникновении проблем с обслуживанием или хостом и их решении (по электронной почте , пейджеру , SMS или любым другим определяемым пользователем способом через систему плагинов)
Возможность определения обработчиков событий, которые будут запускаться во время обслуживания или хост-событий для упреждающего решения проблем
Возможность переопределения серьезности оповещения на основе правил регулярных выражений
Поддержка имен объектов UTF-8
Поддержка мониторинга нескольких клиентов с помощью одной точки администрирования
Поддержка повторяющихся простоев с помощью атрибута maintenance_period
Расширенная система шаблонов с наследованием и перегрузкой
Архитектура
This section is in list format but may read better as prose. You can help by converting this section, if appropriate. Editing help is available.(February 2013)
Установка Shinken состоит из нескольких процессов, каждый из которых оптимизирован для определенной задачи.
Арбитр
Загружает файлы конфигурации и отправляет объекты хоста и службы планировщику(ам)
Сторожевой таймер для всех остальных процессов, отвечающий за инициирование отказоустойчивости в случае обнаружения ошибки.
Может направлять события результатов проверки от приемника к связанному с ним планировщику.
Модули арбитра
Существует множество модулей для управления данными конфигурации.
Планировщик
Планирует следующий запуск проверок хоста и сервиса
Отправляет чеки избирателям
Вычисляет состояние и зависимости
Применяет триггеры KPI
Создает уведомления и отправляет их реагирующим лицам.
Обновляет файл хранения (или другие бэкэнды хранения)
Отправляет брокерам (внутренние события любого рода)
Поллер
Получает проверки от планировщика, выполняет плагины или интегрированные модули опроса и отправляет результаты планировщику
Модули опроса
NRPE — выполняет активный сбор данных для агентов Nagios Remote Plugin Executor
SNMP — выполняет активный сбор данных для агентов с поддержкой SNMP (находится в стадии бета-тестирования с использованием PySNMP)
CommandPipe — получает данные о пассивном состоянии и производительности из скрипта check_mk, не обрабатывает команды.
Реакционер
Получает уведомления и обработчики событий от планировщика, выполняет плагины/скрипты и отправляет результаты планировщику.
Маклер
Имеет несколько модулей (обычно работающих в собственных процессах)
Получает брокеры от планировщика и пересылает их в модули брокера.
Модули решают, обрабатывать ли им брок, в зависимости от типа брок (журнал, начальное состояние сервиса/хоста, результат проверки, начало/конец простоя, ...)
Модули обрабатывают broks разными способами. Вот некоторые из модулей:
webui — обновляет объекты в памяти и предоставляет веб-сервер для собственного графического интерфейса Shinken
livestatus — обновляет объекты в памяти, которые можно запросить с помощью API с помощью графических интерфейсов, таких как Thruk или Check_MK Multisite
graphite — экспортирует данные в базу данных Graphite
ndodb - обновляет базу данных ndo (MySQL или Oracle)
simple_log - централизовать журналы всех процессов Shinken
status_dat — записывает в файл status.dat, который может быть прочитан классическим графическим интерфейсом на основе cgi
Приемник (опционально)
Пассивно получает данные из локальных или удаленных протоколов.
Пассивный прием данных, который буферизуется перед отправкой соответствующему Планировщику (или Арбитру для глобальных команд)
Позволяет настроить «ферму» приемников для обработки большого количества входящих событий.
Модули для приемников
NSCA - приемник протокола NSCA
Collectd — получение данных о производительности от collectd через сеть
CommandPipe — получение команд, обновлений статуса и данных о производительности
TSCA — интерфейс Apache Thrift для отправки результатов проверки с использованием высокоскоростного буферизированного TCP-соединения непосредственно из программ
Веб-сервис — веб-сервис, принимающий http-сообщения с результатами проверки (бета-версия)
Для каждого типа процесса может быть несколько экземпляров, как на одном хосте, так и распределенных по многим хостам. Добавление большего количества процессов автоматически распределяет нагрузку.
Shinken WebUI — это встроенный веб-интерфейс, который предоставляет информацию о состоянии, конфигурации и взаимодействии практически в режиме реального времени, а также панель инструментов для визуализации данных о тенденциях из баз данных Graphite и визуализацию графиков деревьев зависимостей.
Shinken skonfUI — это независимый веб-интерфейс, используемый для управления процессом обнаружения и задачами настройки.
Скрипт CLI shinken-admin используется для управления аспектами уровня процесса системы во время выполнения, такими как изменение уровней ведения журнала и получение отчетов о работоспособности.
Скрипт CLI install.sh — это основной скрипт управления для установки, удаления или обновления Shinken и связанного с ним программного обеспечения.
Разработка
Shinken имеет открытый и основанный на тестировании подход к разработке, при котором участники проекта предоставляют новые функции, занимаются рефакторингом кода, улучшают его качество и исправляют ошибки. [5]
Исходный код размещен на GitHub . [6] Интеграционный сервер запускает тесты при каждом коммите и углубленные тесты через регулярные промежутки времени.
↑ Официальный релиз в списке рассылки Nagios по адресу http://sourceforge.net/p/nagios/mailman/message/24087464/
^ "Выпуск 2.4.2 / Некоторые ребята из службы мониторинга".
^ Габес, Жан (2009-12-01). "Shinken: новое предложение по реализации". GitHub . Получено 2014-03-04 . Я хотел бы получить ваши отзывы о (незаконченной) повторной реализации Nagios под названием "Shinken", которую я написал на Python, которая быстрее и более модульная, чем текущая реализация Nagios на C.
^ Габес, Жан (2010-06-01). "Shinken: смешение с Nagios невозможно". Команда Shinken. Архивировано из оригинала 2014-01-23 . Получено 2010-06-01 . Мы так и не получили ответа на первоначальное предложение Shinken, потому что нас считают ренегатским проектом. Фактически, теперь мы можем сказать, что мы являемся форком.