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-сервер:
- Hostname: file01.corp.example.ru
- IP address: автоопределение по DNS
- Monitoring agents: Checkmk agent (CMK agent API)
- Сохраняем → 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 рабочих дней:
- Установка Checkmk Raw на отдельной виртуалке в дата-центре банка.
- Bulk import 280 Linux/Windows-хостов через CSV.
- Раскатка агента через Ansible (Linux) и GPO (Windows).
- SNMP-интеграция 70 сетевых устройств через autoconfig snmp community.
- Локальные check-плагины для 1С-серверов, мониторинга лицензий Tinkoff, Diasoft.
- Telegram- и email-уведомления с эскалацией.
- 15 кастомных дашбордов для разных ролей (DevOps, сетевики, руководство).
Стоимость — 245 000 руб. На второй день после запуска поймали деградирующий UPS, на шестой — забитый диск на почтовом архиве, которого бывший Zabbix не видел. Клиент остался, годовой контракт на сопровождение — 50 000 руб./мес.
Эксплуатационные правила
- Activate changes — отдельная кнопка. Большой план изменений накатывайте в одно техокно, а не в живом проде.
- Ретеншен RRD — по умолчанию 400 дней для минут и 5 лет для часов. Диск на 50 ГБ — хватит на 300 хостов.
- Всегда включайте encryption на агенте (omd config, Encryption) — иначе в открытом виде улетают инвентарные данные.
- Бэкап сайта:
omd backup prod /backups/cmk-$(date +%F).tar.gz— раз в сутки. - Обновления: читайте werks перед апгрейдом минорных версий, тестируйте на staging.
- Не забывайте Notification timeperiod — чтобы ночные не-критичные алерты не будили дежурного.
Развернём 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.