Интеграция. Следим за невидимым

Okerr умеет мониторить то, что не видят другие - вы сами можете написать любой свой скрипт проверки для себя и легко связать его с okerr.Чтобы обновлять индикатор из шелл-скрита - нужна одна строчка. Чтобы обновлять из python - 3 строчки.

Представьте ситуацию. У вас есть интернет-магазин и вот у вас выдалась свободная минутка и вы решили посмотреть, что же происходит. И обнаружили, что раньше сайт магазина давал около 200 заказов в день. А последние дни - в два раза меньше, около 100. При этом, все вроде бы в порядке: все сервера работают, место на диске есть, СУБД не упала. После некоторого разбирательства вы нашли проблему. Например, рекламный бюджет (Google AdWords) кончился, поэтому у вас снизился поток посетителей. Вы исправили проблему и бизнес снова вышел на прежние обороты. Но несколько дней, увы, вы несли затраты (оплачивали зарплаты, офис, IT ресурсы) в полном объеме, а дохода получали в два раза меньше, и эти упущенные дни уже не вернуть. Жаль, что простой "пингающий" мониторинг за серверами не предупредил вас об этой проблеме.

Чтобы отлавливать такую ситуацию - нужно создать числовой индикатор в окерр и написать очень простой и короткий скрипт, который смотрит количество заказов (строчек в таблице заказов) и выполняет команду чтобы передать это число в окерр.

Мониторинг который нужен именно Вам

Изнутри и снаружи

Okerr может работать не только с внешними данными, но и с внутренними, с той информацией, которая доступна только внутри вашей инфраструктуры. Например, мы можете сообщать на сервер okerr размер свободного места на дисках, содержимое каталогов с резервными копиями или количество заказов в интернет-магазине. Все что угодно.

У вас много разных бэкапов и часто добавляются новые? Ну так у нас тоже! И okerr отлично справляется с этой ситуацией. Посмотрите раздел "Sequence > Примеры скриптов".

Какая-то проверка имеет смысл только если выполняется снаружи (например, то что веб-сайт доступен из мира)? Окерр это может.

Легкость

У вас небольшой сервер, и не хочется нагружать его мощной системой мониторинга? Okerr идеально подходит. Клиент - довольно легкий и большую часть времени "спит", не загружая процессор. Но если вы не хотите даже эту нагрузку на сервер - запускайте его периодически из cron. Объем постоянно занятой оперативной памяти - 0 байт. Может ли быть меньше?

Аномалии

Okerr способен обнаруживать аномалии. Укажите допустимые колебания размера файла бэкапа - и он оповестит вас, если новый бэкап будет слишком маленьким или большим (и уж тем более, если бэкап вообще не создастся). Укажите допустимые колебания для количества заказов - и вы узнаете, если вдруг почему-то магазин станет давать меньше заказов.

Okerr не знает заранее, должен ли на вашем сервере работать почтовый сервер, но okerr заметит, если он вдруг появится или если вдруг пропадет.

Логика

Что если какое-то событие иногда является проблемой, а иногда нет? На самом деле в реальном мире такое часто. Высокая нагрузка на сервер? Это нормально, если она длится короткое время, и ненормально, если длится очень долго. Сервер выключен? А разве это плохо, повод для паники? Иногда нужно обновлять ПО, например, и сервер должен быть недоступен. Плохо, скорее, наоборот - если сервер никогда не обновляется.

Okerr умеет мыслить логически (если вы ему скажете как). И можно закодировать любое правило. Сервер может лежать в интервале с 5 до 7 утра, если в это время работают два других сервера. Количество новых заказов может быть даже нулевым ночью, но должно быть достаточно высоким днем.

Okerr умеет работать по сценарию. Например, если в каталоге с резервными копиями появятся файлы с сервера X, он догадается, что у вас есть новый сервер, создаст для него индикаторы с правилами (для бэкапов) по-умолчанию и будет отслеживать. И так же вышлет оповещение если новых бэкапов не будет или если они не будут соответствовать нужным условиям.

Наверное любую задачу по проверке, которую вы можете объяснить не слишком талантливому сотруднику, okerr сможет делать для вас регулярно, день и ночь, автоматически.

Да уж не хуже других

Okerr может контролировать внешние параметры системы, такие как пинг, открытый TCP порт, версия SSH, доступность страницы, содержание страницы (статус-код HTTP, оповещать при изменении содержания, оповещать при появлении текста "PHP Error"), валидность SSL сертификата и срок до его истечения, и так далее. Но это и второклассник может.

Командная работа

Мы сами используем okerr в довольно крупном проекте (несколько сотен веб-сайтов). Над проектом работает несколько человек. Есть разграничение прав. Алерты отсылаются только тем, кто должен их получать. Качество работы админов (как быстро начинают исправлять проблему, как долго она исправляется) отслеживается. Если задача не исправляется достаточно долго - принимаются дополнительные меры.

Telegram

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

Страницы статуса

Для себя и для пользователей можете сделать страницы статуса, на которых будут видны состояния некоторых индикаторов вашего проекта и ваши сообщения. Пользователи могут увидеть, что у вас все ОК. А если вдруг не ОК, то увидят, что проблема обнаружена, вы уже работаете над исправлением и написали примерное время, когда ожидается исправление. Для пользователя это гораздо приятнее и удобнее чем общаться с техподдержкой, к тому же он видит, что вы серьезно относитесь к стабильности и решаете проблемы уважая интересы пользователей.

Другой подход к работе

Так как серверов много, для выполнения задачи (например, обновление ПО) мы иногда сначала создаем индикаторы в okerr, и затем видим, на каких серверах задача уже выполнена, а на каких еще нет. Или может быть вообще забыли. Десятками серверов можно управлять как одним.

Решили изменить логику мониторинга (например, допускаем, что файл бэкапа может быть меньше прежнего, но не меньше чем 90%) - изменяем это в одной точке, новые правила применяются для всех серверов с этой проверкой.

Как только запускается новый сервис - начинаем отслеживаеть его в okerr. Если случится проблема или опасная ситуация (мало места на дисках) - узнаём и исправляем быстро. Okerr сообщает об этом быстрее чем клиенты и заказчики. (Они даже и не знают, тссс....)

Проглядели, и случилась проблема, которую не ожидали и не отслеживали? Жаль. Создаем индикаторы... Все, больше она не будет неожиданной.

Гибкость. Прямо по ноге

Для каждой задачи мониторинга можно выбрать наиболее подходящий способ из нескольких. Например, для мониторинга сервера СУБД возможны как минимум 4 способа. Для общения клиентов с сервером мониторинга так же доступно несколько способов (сырой HTTP/S, через okerrclient, через SMTP).

Что okerr не может

Okerr разрабатывался в первую очередь "для себя", для решения тех задач, которые возникали у нас. В нем нет некоторого функционала, который нам не был нужен.

  • Okerr не предназначен для отслеживания трендов в различных числовых индикаторах. То есть, он не очень удобен, чтобы заметить, скажем, что каждую среду, при выходе нового номера, нагрузка на сервер газеты на 80% выше среднего. Хотя эти цифры и видны в okerr, нет удобного способа их анализировать - просто он не для этого создавался. Но зато, он создавался для того, чтобы обнаружить, когда нужно вмешаться, чтобы исправить проблему. Например, вы можете иметь один индикатор для среды, и другой для остальных дней недели.

  • Okerr не предназначен для оценки скорости доступа из разных частей света. Вы не узнаете, что из стран юго-восточной Азии ваш сайт загружается втрое дольше. Вы только можете узнать, что документ с сайта удалось загрузить за допустимое время, либо не удалось.

  • Клиент оkerr не может выполнять внутренние проверки на ОС без достаточно хорошей поддержки языка Python и его модулей. В частности - ОС Windows. Но даже при использовании ОС Windows, сервер можно наблюдать через внешние проверки, и, благодаря открытой архитектуре, любая "самодельная" внутренняя проверка внутри сервера, может сообщать результат на сервер Okerr просто по почте (SMTP). Любая очень старая или очень экзотичная ОС, если она поддерживает отправку электронной почты - может быть интегрирована в okerr.
  • Некоторые типы проверок могут опираться на предыдущее значение индикатора (например, размер лог-файла должен быть не более чем на 10% больше предыдущего), но в целом нет возможности ретроспективного анализа (например, нет возможности сравнивать со средним значением индикатора за последний месяц).

Безопасность, защита от okerr

Если вам нужен мониторинг - вероятно вы цените надежность и безопасность.

Мы сами параноики, и мы уважаем ваше желание не доверять нам. Доверять окерру требуется только лишь в той мере, как вы сами готовы доверять.

Для удобства, можно поставить на систему okerrclient (на языке python). Сами данные о проверках запрашиваются с сервера (и технически - это дает возможность злоумышленнику изменить их, например, если он получил доступ к вашему аккаунту на okerr) - но на этот случай, есть дополнительный уровень защиты полностью под вашим контролем: файлы, которые okerrclient может читать, или программы, которые он может запускать - указываются на клиентской стороне. Никакие изменения на сервере okerr не могут на это повлиять (и вы можете убедиться в этом, проверив доступный вам исходный код клиента).

Внутри okerrclient в принципе нет кода для удаления или изменения файлов, или для отправки иной информации, кроме как статуса проверки. Так же, это невозможно сделать с использованием встроенного в okerrclient языка проверок (любой код на этом языке гарантированно безопасен).

Ну и на случай, если вам на самом деле очень не хочется ставить на вашу систему okerrclient - можно использовать внешние проверки, а внутренние реализовать своими скриптами, сообщая результат на сервер по публично описанному API.