· 17 мин чтения

Checkmk: корпоративный мониторинг, который собирается за два дня

Checkmk: корпоративный мониторинг, который собирается за два дня

Привет! Я Евгений Семёнов, директор ITFresh. За мои 15 лет в IT я чего только не видел: от Cacti с Nagios до Prometheus и Zabbix. Но если спросите, какая система мониторинга реально выигрывает по соотношению «результат к трудозатратам»? Однозначно Checkmk! Что в нём особенно цепляет? Во-первых, автоматический discovery сервисов – просто магия! Во-вторых, больше двух тысяч готовых плагинов, которые сразу же начинают собирать метрики. И главное, никаких мучений с настройками. Мы на нашей практике убедились: если вам нужно внедрить Checkmk в офис на сотню хостов, то уже через полтора дня всё будет работать как часы.

Редакции и выбор

РедакцияЛицензияКогда выбирать
Raw (CRE)GPL, бесплатнаяДо 1000-1500 хостов, простая схема
Enterprise (CEE)Платная (от €95/хост/год)Крупные сети, аналитика, cluster HA
Cloud (CCE)SaaS от tribe29Если не хотите держать сервер
MSPДля провайдеров услугВыставление счетов клиентам

Для офисов с 50 до 500 хостов версии Raw обычно хватает с головой. Представьте, за все 15 лет мне понадобилось ставить CEE (Enterprise Edition) всего на трёх проектах. И то это были специфические случаи, где требовался сложный бизнес-алертинг или детальный мониторинг кластерных приложений.

Подготовка сервера

Какой сервер понадобится? Для начала вполне достаточно Debian 12 или Ubuntu 22.04, 4 vCPU, 8 ГБ RAM и 100 ГБ SSD. Если же у вас больше 500 хостов, тогда лучше сразу брать 8 vCPU, 16 ГБ RAM и обязательно 200 ГБ NVMe. Почему NVMe? Да потому что RRD-файлам нужно очень много случайных IOPS, и обычный SSD просто не вытянет.

# Debian 12
wget https://download.checkmk.com/checkmk/2.3.0p20/check-mk-raw-2.3.0p20_0.bookworm_amd64.deb
apt install -y ./check-mk-raw-2.3.0p20_0.bookworm_amd64.deb

# Создание сайта (instance)
omd create prod
omd start prod

# В выводе - URL админки и сгенерированный пароль cmkadmin
# https://checkmk.corp.example.ru/prod/check_mk/

Первый вход и подключение хостов

WATO, или Web Administration Tool, — это ваше главное рабочее место, такой центр управления всем. Куда идти, чтобы добавить нового «питомца»? Проще простого: Setup → Hosts → Add host. Давайте прямо сейчас добавим наш первый Linux-сервер!

  1. Hostname: file01.corp.example.ru
  2. IP address: автоопределение по DNS
  3. Для мониторинга? Мы предпочитаем использовать Checkmk agent. Он взаимодействует через CMK agent API, что очень удобно.
  4. Сохраняем → Save and go to services

На клиентской машине ставим агент:

# Debian/Ubuntu — берём .deb из админки
wget https://checkmk.corp.example.ru/prod/check_mk/agents/check-mk-agent_2.3.0p20-1_all.deb
apt install -y ./check-mk-agent_2.3.0p20-1_all.deb

# systemd-socket поднят сам, слушает 6556
ss -lntup | grep 6556

Вернувшись в WATO, просто нажимаем «Full service scan». И что происходит? Checkmk сам, без вашего участия, найдёт абсолютно всё: диски, процессы, сетевые интерфейсы, загрузку CPU, память, все сервисы systemd! Это же фантастика, правда? За каких-то 15 секунд он обычно добавляет 40-60 сервисов, да ещё и с уже настроенными порогами.

Windows-агент

# На Windows (PowerShell от администратора)
Invoke-WebRequest `
  -Uri https://checkmk.corp.example.ru/prod/check_mk/agents/windows/check_mk_agent.msi `
  -OutFile check_mk_agent.msi

msiexec /i check_mk_agent.msi /qn

# Проверка
Get-Service CheckmkService
Test-NetConnection -Port 6556 localhost

А что насчёт Windows? Тут тоже полный автомат! Агент обнаружит IIS, MSSQL, все службы и роли сервера, диски, даже записи в Event Log. И что особенно удобно: если сервер находится в домене, то автоматически подключаются ещё и чеки здоровья AD DS. Никаких лишних телодвижений!

Правила discovery и тюнинг

Но что я действительно обожаю в Checkmk, так это возможность массовой настройки! Забудьте про рутину с каждым сервером по отдельности. Здесь всё делается через так называемые rule-set-ы. Куда идём? Setup → Services → Service monitoring rules. Вот вам реальный пример из нашей практики: предположим, мы хотим, чтобы Checkmk игнорировал определённые сервисы systemd сразу на всех наших хостах. С помощью rule-set-ов это решается в два счёта.

# Правило: Disabled services
# Services to ignore: systemd-resolve-monitor, packagekit
# Applies to: All hosts

# Или правило порога для дисков:
# Filesystem thresholds
# Warning: 80%, Critical: 90%
# Applies to: tag:production

Все эти правила «накатываются» одной-единственной кнопкой — «Activate changes». Это, можно сказать, главная кнопка в Checkmk! Запомните её, потому что без неё никакие новые настройки просто не вступят в силу.

Массовое добавление хостов

Конечно, если у вас больше сотни хостов, сидеть и кликать всё вручную — это просто нереально. Согласитесь? К счастью, есть два отличных способа автоматизировать процесс:

# 1) Bulk host import через CSV
# Setup -> Hosts -> Bulk host import
# Колонки: hostname;alias;ipaddress;agent_type;tags

# 2) REST API
curl -X POST \
  -H "Authorization: Bearer cmkadmin ВАШ_АВТОМАТИЗИРОВАННЫЙ_ПАРОЛЬ" \
  -H "Content-Type: application/json" \
  -d '{"folder":"/production","host_name":"web02","attributes":{"ipaddress":"10.0.0.12"}}' \
  https://checkmk.corp.example.ru/prod/check_mk/api/1.0/domain-types/host_config/collections/all

Например, у нас на практике прекрасно работает собственный Ansible-плейбук. Он не просто ставит агент, но и сам регистрирует новую ноду в Checkmk через REST API. Всё это происходит полностью автоматически, без вашего участия! Разве это не здорово?

Dashboards и Business Intelligence

Кстати, о красивом! В Checkmk уже есть готовые, очень информативные дашборды «прямо из коробки». Там и Main Overview, и Host Overview, и Service Problems, и даже Network Topology — всё, чтобы начать работу сразу. А если вам захочется чего-то своего, совсем кастомного? Без проблем! Заходите в Customize → Dashboards, и за пару кликов можно настроить всё под себя. Я, например, обычно вывожу туда графики загрузки CPU, слежу за свободным местом на критичных файловых системах и, конечно, за количеством активных алертов по каждому Site.

В версии Enterprise появляется ещё и BI, или Business Intelligence. Это просто незаменимый инструмент, который позволяет агрегировать кучу технических чеков в понятные бизнесу сервисы. Представьте: ваш «Финансовый портал» — это не просто один сервер, а сумма его доступности, работы MSSQL, ответа 1С-API и, конечно же, успешного DNS-резолва. Сразу видно, что не так с критичным бизнес-процессом!

Уведомления в Telegram

Checkmk Raw не имеет встроенного Telegram, но добавляется за 5 минут. Пишем скрипт в ~/local/share/check_mk/notifications/telegram.sh:

#!/bin/bash
TOKEN="1234567:AAA..."
CHAT_ID="-1001234567890"
TEXT="🚨 [$NOTIFY_HOSTNAME] $NOTIFY_SERVICEDESC $NOTIFY_SERVICESTATE
$NOTIFY_SERVICEOUTPUT
$(date)"
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
  -d chat_id="$CHAT_ID" \
  --data-urlencode text="$TEXT"
chmod +x ~/local/share/check_mk/notifications/telegram.sh
# В WATO: Users -> cmkadmin -> Notifications
# Notification method: Telegram (появится в списке после Activate changes)

Собственные плагины

Когда нужно мониторить что-то нестандартное, пишется локальный check. Любой shell-скрипт в /usr/lib/check_mk_agent/local/ на клиенте:

#!/bin/bash
# /usr/lib/check_mk_agent/local/60/1c_licences.sh
USED=$(/opt/1C/tools/licenses-used.sh)
TOTAL=100
PERC=$((USED * 100 / TOTAL))
if [ $PERC -ge 90 ]; then STATUS=2; MSG="CRITICAL";
elif [ $PERC -ge 75 ]; then STATUS=1; MSG="WARNING";
else STATUS=0; MSG="OK"; fi
echo "$STATUS \"1C Licenses\" used=$USED;75;90;0;$TOTAL $MSG: $USED из $TOTAL"

Буквально через минуту Checkmk сам подхватит сервис «1C Licenses», покажет его актуальный статус и даже построит график использования. Удобно, не правда ли?

Реальный кейс: 280 хостов для банка

Вспомнил тут один показательный случай из нашей практики. В январе 2025-го к нам обратился небольшой банк. У них было 280 серверов и ещё 70 сетевых устройств: свитчи, межсетевые экраны, бесперебойники. Их система мониторинга, построенная на Zabbix, была, мягко говоря, «унаследованной». Можете себе представить? Полторы тысячи триггеров, база данных, в которой сам чёрт ногу сломит, и администратор, который уже просто мечтал перевести всё это на что-то гораздо более простое и прозрачное.

Перенос за 6 рабочих дней:

  1. Устанавливаем Checkmk Raw? Обычная практика — разворачиваем его на отдельной виртуалке. И да, часто это происходит прямо в дата-центре какого-нибудь крупного банка.
  2. Как добавить сотни хостов разом? Мы легко импортируем 280 Linux- и Windows-хостов, используя простой CSV-файл. Это экономит массу времени.
  3. Раскатка агентов? Для Linux-систем мы используем Ansible, а для Windows — GPO. Так удается автоматизировать процесс и забыть про рутину.
  4. Нужно интегрировать 70 сетевых устройств по SNMP? Нет проблем! Мы используем autoconfig snmp community — это очень удобно и быстро.
  5. Есть ли у вас что-то уникальное? Мы разрабатываем кастомные check-плагины: для 1С-серверов, чтобы отслеживать все, что важно. Или, например, для мониторинга лицензий Tinkoff и Diasoft — любые ваши специфические задачи.
  6. Как мы узнаем о проблемах? Конечно, через Telegram и email-уведомления. Причем с обязательной эскалацией, чтобы важные инциденты не остались без внимания, а дошли до того, кто должен их решить.
  7. Кому нужны дашборды? Мы создаем до 15 кастомных панелей, специально под разные роли. DevOps, сетевики, руководство — каждый получает свою уникальную картинку, только с нужными метриками.

Что получилось по цене? Вся эта работа обошлась банку в 245 000 рублей. Но самое интересное началось уже потом. Представьте: буквально на второй день после запуска Checkmk мы обнаружили деградирующий ИБП. А к шестому дню всплыл забитый диск на почтовом архиве — тот самый, который старый Zabbix почему-то упрямо не замечал. В итоге клиент остался не просто доволен, а очень доволен! И теперь у нас с ними годовой контракт на сопровождение, по 50 000 рублей в месяц. Кажется, это отличный показатель, правда?

Эксплуатационные правила

Развернём Checkmk у вас под ключ

Мы берём на себя всё: от установки и подбора нужной редакции до тонкой настройки всех дашбордов, уведомлений и даже кастомных чеков. Наша собственная инфраструктура в АйТи Фреш, это 8 серверов Dell Xeon Platinum 8280, размещённых в дата-центре МТС Москва, позволяет нам предложить вам гибкое решение: вы можете разместить свой Checkmk прямо у нас на железе или работать со своим, если так удобнее. Как правило, типовой проект занимает у нас от 3 до 7 рабочих дней, а стоимость начинается от 85 000 руб.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — частые вопросы о Checkmk

Чем Checkmk лучше Zabbix/Nagios?
Автоматический discovery сервисов, 2000+ встроенных плагинов, WATO-интерфейс управления, умные уведомления. Настройка в 2-3 раза быстрее Zabbix.
Какая разница между Raw, Enterprise и Cloud?
Raw — бесплатная GPL. Enterprise — платная с быстрым Core и кластером. Cloud — SaaS от tribe29.
Сколько хостов тянет Checkmk Raw?
До 1500 хостов на одном сервере при стандартных интервалах. При больших нагрузках — CEE с собственным Core.
Агент Checkmk безопасен?
Да, с включённым шифрованием (symmetric key) и ACL на порт 6556. Для повышенной безопасности — push-режим.
Можно ли слать уведомления в Telegram?
Да, через notification-скрипты. В Enterprise есть готовые плагины Slack, Teams, OpsGenie, PagerDuty.

Подпишитесь на рассылку ITfresh

Нужны свежие идеи для IT-руководителя или сисадмина? Мы еженедельно публикуем практические гайды. Вы найдете тут все: безопасность, тонкости 1С, миграции, резервные копии, а еще лайфхаки, проверенные нами на реальных проектах.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.