· 17 мин чтения

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

Семёнов Евгений Сергеевич, директор АйТи Фреш. Из всех систем мониторинга, которые я эксплуатировал за 15 лет — от Cacti и Nagios до Prometheus и Zabbix — Checkmk стоит отдельной строкой по соотношению «результат к трудозатратам». Его сильные стороны — автоматический discovery сервисов и 2000+ готовых плагинов, которые начинают собирать метрики без единой настройки. У нас на практике внедрение Checkmk на офис в 100 хостов занимает полтора дня до полной боевой эксплуатации.

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

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

Для офиса на 50-500 хостов хватает Raw. За 15 лет я ставил CEE только на 3 проектах, где нужен был бизнес-алертинг или мониторинг кластеризованных приложений.

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

Минимальный сервер: Debian 12 или Ubuntu 22.04, 4 vCPU, 8 ГБ RAM, 100 ГБ SSD. На 500+ хостах — 8 vCPU, 16 ГБ RAM, 200 ГБ NVMe (много случайных IOPS для RRD-файлов).

# 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. Monitoring agents: 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 health-чеки.

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

Сильная сторона Checkmk — массовая настройка через rule-set-ы. Setup → Services → Service monitoring rules. Пример: хотим игнорировать определённые сервисы systemd на всех хостах:

# Правило: 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, без которой новые настройки не применяются.

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

Для 100+ хостов вручную кликать не вариант. Два способа:

# 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 — полностью автоматически.

Dashboards и Business Intelligence

Готовые дашборды есть из коробки: Main Overview, Host Overview, Service Problems, Network Topology. Кастомные делаются в Customize → Dashboards. Запускаю туда графики CPU load, свободное место по критичным файловым системам, количество active alerts по 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 сетевыми устройствами (свитчи, межсетевые экраны, UPS). Старый мониторинг на Zabbix был унаследованный, с полуторадтысячью настроенных триггеров, неразобранной базой и уставшим админом, который хотел «перейти на что-то попроще».

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

  1. Установка Checkmk Raw на отдельной виртуалке в дата-центре банка.
  2. Bulk import 280 Linux/Windows-хостов через CSV.
  3. Раскатка агента через Ansible (Linux) и GPO (Windows).
  4. SNMP-интеграция 70 сетевых устройств через autoconfig snmp community.
  5. Локальные check-плагины для 1С-серверов, мониторинга лицензий Tinkoff, Diasoft.
  6. Telegram- и email-уведомления с эскалацией.
  7. 15 кастомных дашбордов для разных ролей (DevOps, сетевики, руководство).

Стоимость — 245 000 руб. На второй день после запуска поймали деградирующий UPS, на шестой — забитый диск на почтовом архиве, которого бывший 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 подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.