Мониторинг Firebase крашей в Telegram

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

Если отобразить процесс на схеме, то он будет выглядеть следующим образом:

Схема мониторинга крашей из Firebase и Telegram

Настраиваем Slack

Для начала нам необходимо настроить Slack, именно с ним в Firebase есть простая интеграция. Создаем приватный канал (в моем случае crash), запоминаем название:

Создание приватного канала для крашей

Далее нам необходимо настроить вебхуки (Incoming Webhooks). От команды slack есть хорошая инструкция на эту тему, в целом, можно использовать ее: Sending messages using Incoming Webhooks. Но если вам удобнее идти по моей статье, смотрим на картинки ниже.

Переходим по ссылке: Создать новое приложение Slack. Выбираем From scratch:

Создание Webhooks

Задаем название приложения (в моем случае Lexico Crash) и указываем ваш workspace. Нажимаем Create App:

Создание Webhooks

После создания приложения выбираем Incoming Webhooks:

Создание Webhooks

Переключаем ползунок в активное состояние:

Создание Webhooks

На этой же странице листаем вниз и нажимаем Add new Webhook to Workspace:

Создание Webhooks

Выбираем наш приватный канал, в который будут приходить сообщения:

Создание Webhooks для Slack

Webhook URL можно скопировать в форме ниже:

Создание Webhooks

Сохраняем URL, он нам понадобится при настройке Firebase.

Настраиваем Firebase

Как настроить интеграцию Firebase с iOS или Android приложением рассказывать не буду, про это есть множество статей, включая статью от команды Firebase: читаем здесь

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

Заходим в проект, далее Project settings:

Настройки Firebase

Открываем вкладку с интеграциями и выбираем Slack:

Интеграция Firebase со Slack

Указываем созданный на первом этапе Webhook URL, название приватного канала в Slack и название пользователя, от которого будем получать сообщения:

Настройка Slack интеграции

Проверяем что все настроено корректно, отправляем тестовое сообщение в Slack:

Отправить тестовое сообщение в Slack канал

Проверяем сообщение в нашем приватном канале:

Тестовое сообщение в Slack-канале

Далее осталось настроить типы ошибок, которые мы хотим получать в Slack:

Типы ошибок в Firebase
Фатальные и повторяющиеся ошибки в Firebase

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

Настраиваем Telegram

Открываем бота @BotFather для создания ботов в Telegram. Отправляем команду /newbot:

Создание бота в Telegram для мониторинга крашей

Задаем название бота. Учтите, название должно содержать слово bot: NameBot или name_bot. После создания бота вы увидите токен, сохраняем его:

Создание бота в Телеграм для мониторинга крашей

Добавляем нашего бота в вашу группу или Telegram-канал:

Добавление телеграм-бота в канал

И последнее, что нам нужно сделать — найти идентификатор нашей группы с ботом. Ищем в поисковой строке бота @username_to_id_bot и отправляем ему ссылку на нашу группу (либо используем интерфейс, где на скриншоте ниже):

Получить идентификатор группы telegram мониторинга крашей

В ответ получаем идентификатор группы:

Получить идентификатор telegram-группы для мониторинга крашей

Сохраняем идентификатор, он понадобится на следующем шаге.

Настраиваем Make

Для реализации прокси-слоя между Slack и Telegram можно использовать Slack-бота или другие инструменты, например, Make.

Переходим на сайт make.com. Регистрируемся и заходим на вкладку Scenarios, создаем новый сценарий:

Настраиваем Make для мониторинга крашей в Telegram

Нажимаем на большой плюс и ищем Slack:

Подключаем Slack в Make

Из списка выбираем Watch Private Channel Messages:

Подключаем Slack в Make

Настраиваем интеграцию со Slack: указываем приватный канал из которого необходимо читать сообщения (Firebase краши) и устанавливаем лимит сообщений на чтение — то количество сообщений, которые Make будет вычитывать из канала при очередной итерации:

Настраиваем интеграцию Slack в Make

После сохранения настроек вы должны увидеть что-то такое:

Диаграмма в Make

Нажимаем на плюс для связки с другим сервисом и ищем Telegram Bot:

Подключаем Telegram в Make

Выбираем сценарий Send a Text Message or a Reply:

Интеграция Telegram в Make

Далее необходимо добавить нашего Telegram-бота, для этого используем полученный токен в прошлом разделе:

Настраиваем Telegram в Make

Далее указываем идентификатор группы, куда Make будет пересылать сообщения. Заполняем поле Text следующим содержимым:

Появился новый краш в Firebase!

<b>Текст ошибки</b>: {{1.text}}
<b>Приложение</b>: {{map(1.attachments[].fields; "value"; "title"; "App")}}
<b>Версия</b>: {{map(1.attachments[].fields; "value"; "title"; "Version")}}
<b>Платформа</b>: {{map(1.attachments[].fields; "value"; "title"; "Platform")}}
<b>Ссылка на ошибку</b>: {{escapeHTML(map(1.attachments[].fields; "value"; "title"; "Summary"))}}
-----------------
{{newline}}
Настройка Telegram в Make для мониторинга крашей

Остальные настройки заполняем на свое усмотрение:

Дополнительные настройки Telegram в Make

После сохранения всех настроек у вас должна получиться похожая диаграмма:

Диаграмма в Make: Мониторинг крашей

Сохраняем сценарий. Все что осталось сделать — активировать сценарий:

Включаем сценарий в Make

Если вы все сделали по инструкции выше, то Make будет читать сообщения из Slack-канала каждые 15 минут. Этот интервал можно изменить под диаграммой:

Задаем диапазон в Make

Смотрим на результат

В Slack отправляем любое сообщение:

Получаем сообщение в Slack

В течение 15 минут (или в тот интервал, который вы настроили) в Telegram-канале должно появиться сообщение:

Получаем сообщение в Telegram

В дальнейшем, при появлении крашей в Firebase, они автоматически отправляются в Slack-канал:

Мониторинг крашей в Slack

И в момент очередной итерации чтения Slack-канала сообщения пересылаются в Telegram-канал:

Мониторинг крашей в Telegram

Ограничения

В бесплатном плане Make позволяет совершать 1000 операций в месяц. Учтите, что прочитать канал в Slack — одна операция, переслать сообщение в Telegram — другая. То есть каждую итерацию Make совершает минимум одну операцию.

Из бонусов — вы можете подключить несколько проектов Firebase к одному Slack-каналу (используя одинаковые вебхуки) и краши по всем проектам Firebase будут приходить в один Telegram-канал.

Что почитать еще:

  1. Метаданные в App Store

Выразить благодарность или найти уникальный материал вы можете в boosty.

Подписывайтесь на мой Telegram-канал iOS Interview Channel, чтобы не пропустить новый материал.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *