Checkmk
Checkmk — программное обеспечение, разработанное на Python и C++ для мониторинга инфраструктуры IT. Используется для наблюдения за серверами, программными приложениями, сетями, облачными инфраструктурами (публичными, частными и гибридными), контейнерами, системами хранения данных, базами данных и датчиками.
Общие сведения
| Checkmk | |
|---|---|
| Тип | мониторинг IT-инфраструктуры |
| Разработчик | tribe29 GmbH (ранее Mathias Kettner GmbH) |
| Написана на | Python, C++ |
| Операционная система | Linux |
| Первый выпуск | 2008 |
| Последняя версия | 1.5.0p21 (31 июля 2019) |
| Репозиторий | github.com/checkmk/check… |
| Лицензия | GNU GPLv2 и другие лицензии открытого программного обеспечения, а также лицензия Checkmk Enterprise |
| Сайт | checkmk.com |
История
Checkmk появился в 2008 году как агент, заменяющий shell-скрипт для inetd, и был опубликован в апреле 2009 года под лицензией GNU GPL[1]. Изначально система основывалась на Nagios, которую расширяла новыми компонентами.[2] Открытая редакция (Checkmk Raw Edition) до сих пор использует ядро Nagios, объединяя его с дополнительными компонентами с открытым кодом в полноценную систему[3].
Со временем коммерческие версии Checkmk стали самостоятельной системой мониторинга. Все основные компоненты Nagios были заменены на собственные, включая собственное мониторинговое ядро[4]. Большинство доработок для коммерческих редакций, включая все дополнения, также доступны в редакции Checkmk Raw.
Если раньше Checkmk проектировалась для мониторинга крупных и разнородных локальных сред, то с версии 1.5+ (1.5p12) появилась поддержка мониторинга сервисов AWS, Azure, Docker и Kubernetes[5].
Разработка Checkmk ведётся компанией tribe29 GmbH в Мюнхене (Германия), которая до 16 апреля 2019 года называлась Mathias Kettner GmbH. Одновременно с переименованием компании продукт «Check_MK» также был переименован в «Checkmk».
tribe29 GmbH поддерживает модель открытого ядра. Открытая редакция доступна по различным лицензиям, в основном по GPLv2, а основные возможности коммерческих редакций регулируются лицензией Checkmk Enterprise.
Возможности
Checkmk распространяется в трёх редакциях: открытая редакция («Checkmk Raw Edition — CRE»), коммерческая корпоративная редакция («Checkmk Enterprise Edition — CEE») и коммерческая редакция для провайдеров управляемых сервисов («Checkmk Managed Services Edition — CME»). Все редакции доступны на различных платформах, в частности для нескольких версий Debian, Ubuntu, SLES и RedHat/CentOS, а также в виде Docker-образа. Помимо этого, предлагаются физические устройства разного размера и виртуальные устройства для упрощения управления базовой операционной системой с помощью графического интерфейса, в том числе для обеспечения высокой доступности. Агенты Checkmk для сбора данных доступны для 11 платформ, включая Windows.
Checkmk сочетает три метода мониторинга IT:
- Статусный мониторинг, фиксирующий «здоровье» устройств или приложений с пороговыми значениями.
- Мониторинг на основе метрик, позволяющий регистрировать и графически анализировать временные ряды. В CEE реализована графическая система на HTML5 с интеграцией в Grafana[6].
- Мониторинг на основе логов и событий, при котором можно фильтровать ключевые события и выполнять автоматические действия на их основе.
Для обеспечения широкого охвата мониторируемых объектов во всех редакциях Checkmk присутствует более 1700 дополнений, распространяемых по лицензии GPLv2. Они входят в состав продукта и регулярно пополняются и обновляются. Также поддерживается подключение стандартных дополнений Nagios.
В целях упрощения настройки и эксплуатации все компоненты Checkmk поставляются в полностью интегрированном виде. Система конфигурируется по принципу 1: n на основе правил и высокой степени автоматизации, что ускоряет рабочие процессы. В частности:
- Автоматическое обнаружение хостов (если применимо).
- Автоматическое обнаружение сервисов.
- Автоматизированная настройка дополнений с помощью предустановленных порогов и правил.
- Автоматизированное обновление агентов (функция CEE).
- Динамическая и автоматическая настройка позволяет контролировать временные сервисы (например, микросервисы в Kubernetes, начиная с CEE v1.6).
- Автоматическое обнаружение меток и тегов из систем Kubernetes, AWS и Azure (с CEE v1.6).
Дополнительно существуют шаблоны для интеграции с системами управления и развертывания, такими как Ansible[7] и Salt[8].
Checkmk часто применяется в крупных распределённых инфраструктурах, когда требуется мониторинг большого количества площадок (например, 300 филиалов Faurecia) и/или свыше 100 000 устройств (например, Edeka[9]). Это возможно, в том числе, благодаря тому, что micro core Checkmk потребляет гораздо меньше ресурсов CPU, чем Nagios, и за счёт этого достигает высокой производительности на том же оборудовании. Кроме того, непостоянные данные хранятся в RAM, что значительно ускоряет доступ к ним.
Компоненты
Коммерческие редакции Checkmk используют собственное мониторинговое ядро, написанное на C++. Оно существенно производительнее, чем ядро Nagios. С версии 1.6 ядро поддерживает динамическую регистрацию объектов с коротким временем жизни, например, контейнеров. Это возможно, так как, в отличие от ядра Nagios, Checkmk Microcore не требует перезапуска системы при изменении настроек. Открытая редакция — Checkmk Raw Edition — по-прежнему использует ядро Nagios.
Checkmk предлагает самостоятельное обнаружение сервисов и автоматическую генерацию конфигураций. При проверках Checkmk использует собственный метод: в каждом цикле опроса каждый хост контактируется один раз, а результаты передаются ядру как «пассивные проверки». Благодаря такому подходу существенно повышается производительность как на сервере наблюдения, так и на самих хостах.
Checkmk использует различные методы доступа к данным целевых систем: установленные агенты, «специальные агенты» (работают на сервере мониторинга и взаимодействуют с API систем), SNMP (для сетевых устройств и принтеров), а также HTTP/TCP для работы с веб-сервисами и интернет-ресурсами. По умолчанию Checkmk использует «pull»-принцип: система мониторинга сама опрашивает данные, чтобы своевременно обнаруживать выход системы из строя. Альтернативно возможно настроить режим «push», при котором система сама передаёт данные Checkmk или промежуточному хосту.
Основной интерфейс Checkmk — Livestatus — обеспечивает прямой доступ ко всем данным о хостах и сервисах в режиме реального времени. Все данные извлекаются непосредственно из оперативной памяти, минуя диск, что ускоряет работу и снижает нагрузку на систему. Доступ осуществляется по простому протоколу, не требующему специальных библиотек и поддерживаемому на любых языках программирования.
Multisite — это веб-интерфейс Checkmk. Он отличается быстрым отображением страниц, поддерживает пользовательские виды и дашборды, распределённый мониторинг с интеграцией нескольких инстансов через Livestatus, интеграцию с NagVis, встроенное подключение LDAP, доступ к статусным данным через веб-сервисы и многое другое. Дашборды и виды могут быть настроены индивидуально для разных пользователей и групп, например, отдельные виды для VMware через vSphere[10]. Веб-интерфейс поддерживает немецкий и английский языки.
Веб-интерфейс WATO позволяет полностью управлять системой Checkmk из веб-браузера: управлять пользователями, ролями, группами, временными интервалами и пр. Полномочия настраиваются детально с помощью ролевой модели; возможно использование существующих систем контроля доступа (LDAP, Active Directory). WATO основан на правилах, поэтому администрирование остаётся интуитивным даже в сложных конфигурациях, а затраты времени минимальны. Автоматическое обнаружение и настройка, автоматизированное обновление агентов ещё больше ускоряют работу. Также предусмотрено HTTP API для интеграции с CMDB и быстрой настройки.
Для пользователей могут быть настроены разные каналы оповещения с разными правилами. Например, уведомления по электронной почте отправляются в любое время, а по SMS — только при серьёзных инцидентах в рабочее время. Оповещения могут быть адресованы всем или отдельным командам (например, только администраторам хранилищ при сбое диска). Повторные уведомления по одному и тому же каналу группируются. Пользователи также могут настраивать свои собственные фильтры. В распределённых инфраструктурах оповещения централизуются, а автоматизация действий возможна с помощью скриптов (автоматизация тревог). Checkmk поддерживает интеграции с почтовыми и SMS-шлюзами, а также с решениями для коммуникаций и ITSM (например, Slack, Jira, PagerDuty, OpsGenie, VictorOps, ServiceNow).
BI-модуль интегрирован в графический интерфейс: он агрегирует статус бизнес-процессов и их зависимость от приложений и IT-инфраструктуры по множеству объектов и сервисов согласно заданным правилам. Используется, в частности, для представления микросервисных приложений и систем на базе Kubernetes. Также поддерживается моделирование сценариев аварий и анализ исторических данных для поиска причин деградации производительности.
Консоль событий Checkmk позволяет обрабатывать сообщения системных журналов, «ловушки» SNMP и формировать гибкие правила фильтрации и реагирования. Можно группировать события (например, многократные неудачные входы), отслеживать корреляции, задерживать, переписывать сообщения и др. Встроенный syslog-демон принимает сообщения на порт 514, а SNMP-приёмник — «ловушки» на порт 162.
Коммерческие редакции Checkmk используют собственную систему сбора и визуализации метрик, позволяя строить интерактивные HTML5-графики с разрешением до одной секунды. Данные могут импортироваться в различных форматах (JSON, XML, SNMP и др.) и долго храниться на устройстве.
Альтернативно возможна интеграция с Graphite или InfluxDB. С версии 1.5p16 CEE доступен модуль для прямой интеграции данных в Grafana. В Checkmk Raw Edition используется система графиков PNP4Nagios.
Checkmk поддерживает генерацию отчётов в PDF-формате вручную и автоматически, включая анализ доступности за любой период. Возможна настройка исключения периодов недоступности, коррекция разрешения, игнорирование коротких интервалов. Помимо статистики доступности поддерживаются отчёты об SLA. Отчёты доступны только в коммерческих версиях Checkmk.
Модуль инвентаризации анализирует всё установленное на устройстве аппаратное и программное обеспечение, что позволяет отслеживать изменения, наличие обновлений безопасности, а также связывать статические и динамические параметры мониторинга (например, актуализировать данные о загрузке дисков по данным мониторинга). Интеграция с CMDB (например, i-doit CMDB)[11] обеспечивает обмен данными между учётом IT-активов и мониторингом.
Инциденты
В истории Checkmk было несколько замеченных инцидентов, из которых наиболее значимыми были:
- В составе Red Hat Gluster Storage (июль 2015) были обнаружены следующие уязвимости: CVE-2014-5338, CVE-2014-5339, CVE-2014-5340. Уязвимости позволяли через XSS внедрять собственные скрипты в файлы .mk для последующего исполнения кода.