Checkmk: мониторинг корпоративной инфраструктуры с нуля

Почему Checkmk для корпоративного мониторинга

Checkmk — система мониторинга, выросшая из Nagios, но лишённая его главных недостатков: ручного редактирования конфигурационных файлов и медленного обнаружения сервисов. В Checkmk всё управление ведётся через веб-интерфейс с концепцией WATO (Web Administration Tool), а обнаружение сервисов происходит автоматически после установки агента.

Для корпоративной среды ключевые преимущества: поддержка до 100 000 хостов на одном инстансе (Raw Edition), встроенный автодискавери более 2000 типов проверок, интеграция с LDAP/Active Directory и ролевая модель доступа. Бесплатная версия Checkmk Raw (на базе Nagios Core) покрывает потребности большинства компаний с инфраструктурой до нескольких тысяч серверов.

В этом руководстве мы развернём Checkmk Raw 2.3 на Ubuntu 22.04, подключим Windows- и Linux-хосты, настроим правила мониторинга, пороги и уведомления в Telegram. Весь процесс занимает около часа для базовой инсталляции и позволяет сразу начать контролировать состояние инфраструктуры.

Установка Checkmk Raw Edition на Ubuntu

Checkmk распространяется как единый пакет, включающий веб-сервер Apache, базу RRD для метрик и ядро мониторинга. Установка выполняется через OMD (Open Monitoring Distribution) — обёртку, управляющую экземплярами мониторинга:

# Скачиваем пакет для Ubuntu 22.04
wget https://download.checkmk.com/checkmk/2.3.0p2/check-mk-raw-2.3.0p2_0.jammy_amd64.deb

# Устанавливаем зависимости и пакет
sudo apt update
sudo apt install -y ./check-mk-raw-2.3.0p2_0.jammy_amd64.deb

# Создаём экземпляр мониторинга
sudo omd create monitoring

# Запускаем
sudo omd start monitoring

После создания экземпляра система выведет логин и пароль администратора. Веб-интерфейс доступен по адресу http://<server-ip>/monitoring/. Рекомендуется сразу сменить пароль через Setup → Users.

Настройка HTTPS и обратного прокси

Для продакшена обязательно закройте Checkmk за HTTPS. Пример конфигурации Nginx:

server {
    listen 443 ssl http2;
    server_name monitor.company.ru;

    ssl_certificate /etc/letsencrypt/live/monitor.company.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/monitor.company.ru/privkey.pem;

    location /monitoring/ {
        proxy_pass http://127.0.0.1:5000/monitoring/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
    }
}

В настройках OMD укажите, что Apache слушает только localhost:

sudo omd config monitoring set APACHE_TCP_ADDR 127.0.0.1
sudo omd config monitoring set APACHE_TCP_PORT 5000
sudo omd restart monitoring

Установка агентов на Linux и Windows

Checkmk использует агенты — лёгкие скрипты, собирающие данные о хосте. Агенты уже включены в дистрибутив и доступны через веб-интерфейс: Setup → Agents → Linux/Windows.

Linux-агент

Для Linux агент представляет собой shell-скрипт, работающий через xinetd или systemd-socket:

# На целевом хосте
wget http://monitor.company.ru/monitoring/check_mk/agents/check-mk-agent_2.3.0-1_all.deb
sudo dpkg -i check-mk-agent_2.3.0-1_all.deb

# Проверяем работу агента
sudo check_mk_agent | head -20

Агент слушает на порту 6556/tcp. Для безопасности ограничьте доступ только с сервера мониторинга:

# /etc/xinetd.d/check-mk-agent
service check_mk
{
    type           = UNLISTED
    port           = 6556
    socket_type    = stream
    protocol       = tcp
    wait           = no
    user           = root
    server         = /usr/bin/check_mk_agent
    only_from      = 10.0.1.50
    disable        = no
}

В продакшене рекомендуется использовать TLS-шифрование агента через встроенный механизм Agent Controller (cmk-agent-ctl), доступный в Checkmk 2.1+.

Windows-агент

Для Windows скачайте MSI-пакет из веб-интерфейса и установите через GPO или вручную:

:: Тихая установка
msiexec /i check_mk_agent.msi /qn

:: Проверка службы
sc query CheckMkService

Агент устанавливается как служба CheckMkService и слушает на том же порту 6556. Конфигурация находится в C:\ProgramData\checkmk\agent\check_mk.yml. Для массовой установки через SCCM или GPO используйте трансформацию MST.

Добавление хостов и автодискавери сервисов

После установки агентов добавляем хосты в Checkmk. Переходим в Setup → Hosts → Add host. Указываем hostname или IP-адрес, выбираем папку (для организации) и нажимаем Save & go to service configuration.

Checkmk автоматически опрашивает агент и обнаруживает все доступные сервисы: диски, CPU, память, сетевые интерфейсы, процессы, службы Windows. Обнаруженные сервисы отображаются в списке — помечаем нужные и нажимаем Accept all.

Для массового добавления хостов используйте импорт из CSV:

# hosts.csv
hostname;ipaddress;tag_agent
web-srv01;10.0.1.10;cmk-agent
db-srv01;10.0.1.20;cmk-agent
fw-01;10.0.1.1;snmp-only

Важно: после добавления хостов и сервисов необходимо активировать изменения кнопкой Activate changes в правом верхнем углу. До активации изменения существуют только в черновике конфигурации.

Организация хостов по папкам и тегам

Создайте иерархию папок, отражающую структуру инфраструктуры: по локациям, типам серверов или бизнес-функциям. Папки наследуют настройки: если задать параметры мониторинга для папки «Продакшен», все хосты внутри получат эти настройки. Теги позволяют классифицировать хосты поперёк иерархии: os:linux, role:database, criticality:high. По тегам удобно строить правила и фильтровать представления.

Настройка правил и порогов срабатывания

Checkmk использует систему правил (Rule-Based Configuration) — вместо настройки каждого хоста отдельно, вы создаёте правило, которое применяется ко всем подходящим хостам. Переходим в Setup → Services → Service monitoring rules.

Пример: настроим пороги для файловой системы. По умолчанию Checkmk предупреждает при 80% заполнения и переходит в CRITICAL при 90%. Для серверов баз данных увеличим пороги:

# Setup → Services → Filesystems → Filesystem levels
Condition: Host tags → role:database
WARN at: 85%
CRIT at: 95%

Правила обрабатываются сверху вниз, побеждает первое совпавшее. Это позволяет создавать общие правила с исключениями:

  • Правило 1: для хостов с тегом role:database — WARN 85%, CRIT 95%
  • Правило 2: для всех остальных — WARN 80%, CRIT 90% (дефолт)

Аналогично настраиваются пороги для CPU, RAM, сетевых интерфейсов, температуры оборудования и любых других проверок.

Мониторинг процессов и служб

Для контроля критичных процессов создайте правило в Setup → Services → Process monitoring. Укажите имя процесса, минимальное и максимальное количество экземпляров:

# Мониторинг PostgreSQL
Process name: postgres
Min instances: 1
Max instances: 50
Apply to: hosts with tag role:database

Для Windows-служб используйте раздел Windows services — Checkmk автоматически обнаружит все службы, а вы выбираете, какие отслеживать.

SNMP-мониторинг сетевого оборудования

Для коммутаторов, маршрутизаторов и другого оборудования без агента Checkmk использует SNMP. При добавлении хоста выберите тип агента SNMP и укажите SNMP community (версия 2c) или credentials (версия 3):

# Setup → Hosts → Add host
Agent type: SNMP (v2c)
SNMP community: MySecretCommunity123
Hostname: switch-core-01
IP: 10.0.0.1

Checkmk автоматически определяет тип устройства (Cisco, Juniper, MikroTik и др.) и обнаруживает соответствующие проверки: состояние портов, трафик, ошибки, утилизацию CPU и памяти. Для MikroTik RouterOS поддержка включает температуру, напряжение, состояние wireless-интерфейсов.

Для SNMP v3 с аутентификацией и шифрованием настройте credentials:

Security name: monitoring_user
Authentication protocol: SHA-256
Authentication password: AuthP@ss123
Privacy protocol: AES-256
Privacy password: PrivP@ss456

Уведомления: Email, Telegram, PagerDuty

Настройка уведомлений в Checkmk проходит через Setup → Events → Notifications. Система поддерживает каскадные правила: сначала Email ответственному, через 15 минут — Telegram в группу, через 30 минут — звонок через PagerDuty.

Настройка Telegram-бота

Создайте бота через @BotFather и получите токен. Добавьте бота в группу и узнайте chat_id:

curl -s https://api.telegram.org/bot<TOKEN>/getUpdates | python3 -m json.tool

В Checkmk создайте скрипт уведомлений. Поместите его в /omd/sites/monitoring/local/share/check_mk/notifications/telegram:

#!/bin/bash
TOKEN="123456:ABC-DEF"
CHAT_ID="-100123456789"
MSG="*${NOTIFY_HOSTNAME}*: ${NOTIFY_SERVICEDESC}%0A"
MSG+="Status: ${NOTIFY_SERVICESTATE}%0A"
MSG+="Output: ${NOTIFY_SERVICEOUTPUT}"

curl -s -X POST \
  "https://api.telegram.org/bot${TOKEN}/sendMessage" \
  -d chat_id="${CHAT_ID}" \
  -d parse_mode="Markdown" \
  -d text="${MSG}"

Сделайте скрипт исполняемым (chmod +x) и выберите его в правиле уведомлений. Checkmk 2.2+ также имеет встроенный плагин для Telegram — его можно выбрать напрямую в Notification Method.

Эскалация уведомлений

Создайте цепочку правил для критичных хостов:

  • Правило 1: при переходе в WARN — email ответственному
  • Правило 2: при переходе в CRIT — Telegram в группу дежурных
  • Правило 3: если CRIT не подтверждён в течение 15 минут — повторное уведомление + PagerDuty

Для подавления ночных уведомлений используйте временные периоды (Timeperiods): создайте период «Рабочие часы» и применяйте его в правилах уведомлений.

Дашборды и визуализация

Checkmk предоставляет мощную систему дашбордов из коробки. Главный дашборд показывает общее состояние инфраструктуры: количество хостов и сервисов по состояниям, график событий, топ проблемных хостов.

Для создания собственного дашборда перейдите в Customize → Dashboards → Create dashboard. Доступные виджеты:

  • Host/Service statistics — круговые диаграммы состояний
  • Performance graph — метрики в реальном времени (CPU, RAM, сеть)
  • Alert timeline — временная шкала инцидентов
  • Host matrix — матрица хостов с цветовым кодированием
  • Custom URL — встраивание внешних дашбордов (Grafana)

Для интеграции с Grafana установите плагин grafana-checkmk-datasource — он подключается к REST API Checkmk и позволяет строить произвольные графики на данных мониторинга. REST API доступен по адресу /monitoring/check_mk/api/1.0/ с авторизацией через automation user.

Часто задаваемые вопросы

Checkmk Raw Edition на сервере с 8 ядрами и 16 ГБ RAM стабильно мониторит до 5000–8000 хостов с интервалом проверки 1 минута. Для более крупных инфраструктур используйте распределённый мониторинг с несколькими сайтами.

Прямого инструмента миграции нет. Рекомендуется параллельная работа обеих систем в течение 2–4 недель. Установите агенты Checkmk на все хосты, настройте правила и уведомления, убедитесь в полноте мониторинга, затем отключите Zabbix.

Да, агент Checkmk автоматически обнаруживает Docker на хосте и создаёт проверки для каждого контейнера: статус, CPU, память, сеть. Для Kubernetes используйте специальный коллектор checkmk-kubernetes, который подключается к API кластера.

Используйте активную проверку Check HTTP в разделе Setup → Services → HTTP, TCP, Email. Укажите хост, порт 443 и включите опцию проверки сертификата. Checkmk предупредит за указанное количество дней до истечения срока (по умолчанию WARN за 30 дней, CRIT за 7).

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#checkmk установка#мониторинг серверов#checkmk агент#мониторинг инфраструктуры#checkmk настройка#система мониторинга linux#checkmk уведомления#мониторинг сети
Комментарии 0

Оставить комментарий

загрузка...