Главное Свежее Вакансии Образование
606 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Зачем нужны логи и как за ними следить?

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

Пролог

Очень часто мелкие компании (да и крупные тоже) не используют никакие сервисы ни для анализа логгируемых данных, ни для получения моментальных уведомлений с критическими сигналами.

Задача и способ ее решения

Всё надо делать вручную. Что-то пошло не так? Подключаемся к серверу по SSH, вспоминаем нужные команды, ищем информацию. Пытаемся как-то ее зафильтровать по IP, стране, другому пользовательскому поведению. В большинстве случаев никакой подсветки, черно-белый интерфейс и 100% возможность пропустить важные детали. Задача усложняется, если имеем несколько серверов, каждый из которых пишет свой лог (аггрегация может быть, но, допустим, с задержкой).

Именно по всем вышеуказанным причинам пришла в голову идея сделать небольшой сервис с возможностью следить за логами через удобный интерфейс. Так появился getlogs.online. Конечно, есть много других похожих сервисов, но, как говорится, опыт бесценен, а опыт программирования - еще более бесценен.

Момент деплоя в продакшен настал и что же сервис умеет на данном этапе?

Взаимодействие с серверами

1. "Запрос - ответ"

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

2. "Слушатель"

Способ взаимодействия основан на ожидании команд от удаленного сервера, т.е. сервис слушает, что хочет сервер - получить список команд для запуска, передать результаты выполнения команд и т.д. Сервис предоставляет возможность скачать PHP скрипт, который кладется на сервер клиента в любое место и просто запускается из командной строки. Код скрипта открытый и тем самым можно убедиться, что он не посылает ничего, кроме запрошенных логов.

3. "Получатель"

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

Интерфейс

Сервис не требует регистрации. Вы просто создаете рабочее пространство, которое привязывается к вашему IP адресу и получаете отдельную ссылку (которой можно делиться с кем угодно). Учитывая, что IP адреса могут ротироваться между пользователями в рамках одной сети, вы можете закрыть своё пространство паролем.

b_5b23765cd0481.jpg

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

Далее создается соединение с сервером с одним из 3-х типов взаимодействия, и создается задача с использованием одной из доступных команд. В некоторых полях можно использовать регулярные выражения или динамически-заменяемые переменные. Чтобы узнать подробности, нужно нажать на иконку с вопросом синего цвета.

b_5b237ba6b6eb9.jpg

В настоящее время доступны 3 команды:

  • cat - чтение всего лога
  • head - чтение N-первых строк лога
  • tail - онлайн слежение за логом

После этого можно открывать задачу и запускать ее. Каждая задача имеет свой "окно", где можно управлять опциями - поиск, сортировка, подсветка. Некоторые опции доступны не для всех команд (например, при использовании команды tail невозможно использовать опцию сортировки).

b_5b2377874a997.jpg

После запуска задачи и начала поступления данных, результаты будут выводиться в user-friendly таблице, которая автоматически прокручивается (скроллится) к последним полученным данным (lifehack: если навести мышь на область таблицы, скролл встанет на паузу).

Полученные результаты можно скачать (пока что в том же формате, в котором они были получены). Максимально-доступный для хранения и скачивания объем логов зависит от типа рабочего пространства.

Что дальше?

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

Но если вкратце, то мы планируем добавить аналитику в виде графиков и выборок (в том числе с подзадачами), а также на первом месте стоит функционал с моментальными / периодичными email-уведомлениями (которые потом могут быть расширены до взаимодействия с API различных мессенджеров, типа slack).

Контакты

Если вас заинтересовал сервис и есть мысли, которыми не жалко поделиться, или вопросы, то можно воспользоваться telegram: https://t.me/thewind.

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.