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 Microcore — CMC»)

Коммерческие редакции Checkmk используют собственное мониторинговое ядро, написанное на C++. Оно существенно производительнее, чем ядро Nagios. С версии 1.6 ядро поддерживает динамическую регистрацию объектов с коротким временем жизни, например, контейнеров. Это возможно, так как, в отличие от ядра Nagios, Checkmk Microcore не требует перезапуска системы при изменении настроек. Открытая редакция — Checkmk Raw Edition — по-прежнему использует ядро Nagios.

Конфигурация и движок проверки

Checkmk предлагает самостоятельное обнаружение сервисов и автоматическую генерацию конфигураций. При проверках Checkmk использует собственный метод: в каждом цикле опроса каждый хост контактируется один раз, а результаты передаются ядру как «пассивные проверки». Благодаря такому подходу существенно повышается производительность как на сервере наблюдения, так и на самих хостах.

Checkmk использует различные методы доступа к данным целевых систем: установленные агенты, «специальные агенты» (работают на сервере мониторинга и взаимодействуют с API систем), SNMP (для сетевых устройств и принтеров), а также HTTP/TCP для работы с веб-сервисами и интернет-ресурсами. По умолчанию Checkmk использует «pull»-принцип: система мониторинга сама опрашивает данные, чтобы своевременно обнаруживать выход системы из строя. Альтернативно возможно настроить режим «push», при котором система сама передаёт данные Checkmk или промежуточному хосту.

Интерфейс данных («Livestatus»)

Основной интерфейс Checkmk — Livestatus — обеспечивает прямой доступ ко всем данным о хостах и сервисах в режиме реального времени. Все данные извлекаются непосредственно из оперативной памяти, минуя диск, что ускоряет работу и снижает нагрузку на систему. Доступ осуществляется по простому протоколу, не требующему специальных библиотек и поддерживаемому на любых языках программирования.

Веб-интерфейс («Multisite»)

Multisite — это веб-интерфейс Checkmk. Он отличается быстрым отображением страниц, поддерживает пользовательские виды и дашборды, распределённый мониторинг с интеграцией нескольких инстансов через Livestatus, интеграцию с NagVis, встроенное подключение LDAP, доступ к статусным данным через веб-сервисы и многое другое. Дашборды и виды могут быть настроены индивидуально для разных пользователей и групп, например, отдельные виды для VMware через vSphere[10]. Веб-интерфейс поддерживает немецкий и английский языки.

Веб-администрирование («WATO»)

Веб-интерфейс WATO позволяет полностью управлять системой Checkmk из веб-браузера: управлять пользователями, ролями, группами, временными интервалами и пр. Полномочия настраиваются детально с помощью ролевой модели; возможно использование существующих систем контроля доступа (LDAP, Active Directory). WATO основан на правилах, поэтому администрирование остаётся интуитивным даже в сложных конфигурациях, а затраты времени минимальны. Автоматическое обнаружение и настройка, автоматизированное обновление агентов ещё больше ускоряют работу. Также предусмотрено HTTP API для интеграции с CMDB и быстрой настройки.

Система оповещений

Для пользователей могут быть настроены разные каналы оповещения с разными правилами. Например, уведомления по электронной почте отправляются в любое время, а по SMS — только при серьёзных инцидентах в рабочее время. Оповещения могут быть адресованы всем или отдельным командам (например, только администраторам хранилищ при сбое диска). Повторные уведомления по одному и тому же каналу группируются. Пользователи также могут настраивать свои собственные фильтры. В распределённых инфраструктурах оповещения централизуются, а автоматизация действий возможна с помощью скриптов (автоматизация тревог). Checkmk поддерживает интеграции с почтовыми и SMS-шлюзами, а также с решениями для коммуникаций и ITSM (например, Slack, Jira, PagerDuty, OpsGenie, VictorOps, ServiceNow).

BI (бизнес-интеллект)

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 для последующего исполнения кода.

Примечания