Как стать профессиональным IT- коллекционером? Часть 4. Упрощаем работу в поддержке и познаем код

Как стать профессиональным IT- коллекционером? Часть 4. Упрощаем работу в поддержке и познаем код

Когда-то мне сказали, что математики – ленивые люди, поэтому они придумывают себе инструменты для упрощения жизни. С сотрудниками службы поддержки все так же: мы максимально пытаемся упростить себе жизнь и автоматизировать все, что только можно автоматизировать. В предыдущей части я рассказывала про траблшутинг. В этой я поведаю о том, какие инструменты мы в GlowByte разрабатывали для автоматизации и упрощения своего труда.

Мониторинг

Многим известны службы 2-3-й линии поддержки, где нужно сидеть смотреть в монитор и в любое время дня и ночи реагировать на критические показатели, часто еще и исправлять их, случись баг днем или ночью. Прекрасно, когда для таких людей есть настроенные дашборды и выставленные показатели. Однако не все системы поддаются настройке дашбордов: например, если система имеет закрытый исходный код и это готовая коробка, внутрь которой попасть сложно для забора информации, то такой трюк не сработает. У нас на практике в GlowByte была система, которая именно таким образом не поддавалась настройке под готовые инструменты мониторинга. Каждый ее компонент писал логи в файлы, часть информации о ее работе сохранялась в БД, у системы были sh-скрипты администрирования (проверка статусов, перезагрузка, изменение параметров конфигурации и т. д.).

Поработав немного, ко мне пришла задача построения системы мониторинга, где я планировала почти с нуля и архитектуру, и инфраструктуру, писала код. История началась с того, что команда энтузиастов до моего прихода на проект собрала sh-скрипты, которые они чаще всего использовали при анализе различных инцидентов в системе SAS MA (решение для enterprise-заказчиков, призванное управлять маркетинговыми коммуникациями). Эти же энтузиасты сделали вывод результатов этих скриптов в Графану. Какое-то время все это работало, выглядело простым. Собрался большой беклог фичей, которые можно было бы внедрить, и, кроме того, у коллег было желание масштабировать это и превратить в отдельный сервис. Мне дали возможность переписать функционал, сделать из решения полноценное приложение, которое бы не нагружало целевую систему.

Мониторинг планировался внедрятся на серверах заказчика с закрытой сетью. Чтобы не было проблем переносов с одного контура на другой, я стала сразу планировать использование Docker для поднятия приложений: в единый Docker Compose подключались отдельные микросервисы сборщиков метрик, анализаторы логов, Grafana, Graphite, PostgreSQL (как хранилища метрик) и т. д. Далее я выбрала инструменты для разработки сборщиков метрик и анализаторов логов, переписала все sh-скрипты на Python, создала единое конфигурируемое расписание запусков и подключила это к хранилищу и визуализации. Также систему, которую нужно было мониторить, можно было администрировать. И я сделала скрипты ее перезагрузки, чистки ее логов, проверку статусов компонент, на Angular написала интерфейс кнопок, которые запускают эти скрипты.

Как стать профессиональным IT- коллекционером? Часть 4. Упрощаем работу в поддержке и познаем код

Это был большой проект, который мы реализовывали маленькой командой, и у меня был огромный простор для творчества в определении подходов разработки, выборе инструментов, придумывании фичей. У меня получилось глубже погрузиться в “Докер”, особенности работы сетевых протоколов, метрик “здоровься” системы. Также удалось познакомиться с визуализацией данных, настройкой почтовых коммуникаций и отсеиванием важных событий от неважных.

Глобально этот проект дал мне обширные понятия в области устройства ELK-систем, разного способа хранения метрик, решения проблем наката приложений в Docker. В будущем все эти знания я использовала при решении инцидентов на проектах заказчика. Благодаря им мне было легко разобраться в конфигурации Zabbix (как дашбордов, так и сборщиков), отобрать из тысячи метрик нужные и собрать дашборд в Zabbix или Grafana, настроить фильтры логов в Graylog или Kibana.

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

Алерт-бот

Еще одной разработкой автоматизации, которой я занималась, был Telegram-бот, который уведомляет сотрудников службы поддержки GlowByte об обновлениях в Jira. На момент начала разработки мы имели около 40 проектов, на которых осуществляли поддержку, и около 25 сотрудников.

Как стать профессиональным IT- коллекционером? Часть 4. Упрощаем работу в поддержке и познаем код

Ответственность за проекты была разделена на подкоманды. От бота хотелось следующего:

  • Каждый получает только те уведомления, на которые он подписан. Если проект и обновления по нему в Jira не важны сотруднику А, потому что проект не входит в его зону ответственности, то и уведомления по нему ему не нужны.
  • Бот должен иметь систему конфигурации. Кто-то хочет получать обновления в Telegram только по критическим событиям, кто-то только по всем трекам, но только о событиях слива SLA. Кто-то хочет получать информацию только про новые треки и т. д. Мы разбили уведомления по типам и сделали гибкую настройку подписок через кнопки в Телеграме.
  • Если нужна какая-то метаинформация о команде или проектах (документация, часы работы на проектах, данные про команду и т. д.), то достать это также можно через бота.
  • Бот должен быть приватным, и только сотрудники команды могут им пользоваться.
  • Должен быть реализован функционал построения регулярных отчетов. Если руководителям на постоянной основе хочется из Jira вытаскивать информацию, то они могут это сделать через бота.

В боте было еще несколько функций, которые мы внедрили. В итоге мы с моей командой сделали монорепозиторий внутреннего REST API, в который включили наиболее типовые функции (работу с Google-таблицами, манипуляции с Jira, получение и обработку наиболее часто используемой информации и т. д.). Также мы сделали конструктор чат-ботов, в котором кнопки и экшны на них можно конфигурировать через JSON-конфиг. Для реализации использовали Python, JAVA.

Бот для 1-й линии и дежурств

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

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

Как стать профессиональным IT- коллекционером? Часть 4. Упрощаем работу в поддержке и познаем код

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

Разрабатывая это решение, мы уже использовали наш монорепозиторий от alert-бота.

Несмотря на то что это не была масштабная разработка, для которой нужна команда 10+ человек, она дала мне опыт технического характера:

  • Python (Flask, REST API, Google Suite, RabbitMQ, SMTP),
  • JAVA,
  • навыки построения архитектуры, ревью кода, проектирование многоразово используемых API.

Также я приобрела опыт нетехнического характера:

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

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

В качестве ложки дегтя – не обошлось без проблем. Разрабатывая по наитию, без четких ТЗ, мы столкнулись с тем, что несколько раз переписывали свой код, доводя его до состояния масштабируемости. Кроме того, изначально мы никак не рассматривали эту активность как основной стрим и поэтому не планировали спринты, подзадачи и подобное. И только осознав, что эти проекты больше, чем просто занятие на досуге в свободное от задач время, мы пришли к управлению задачами через Scrum.

Начать дискуссию