![](https://habrastorage.org/getpro/habr/upload_files/f3e/d0e/d04/f3ed0ed04c31d029919abbf47b7ea05d.png)
Всем привет! Данный гайд будет посвящен тому, как направить уведомления из системы сбора логов GrayLog в discord, сохраняя при этом удобную форму и полное содержание сообщений.
Можно сделать бота, который будет отправлять сообщения сохраняя полную разметку сообщений и предоставляя их в удобочитаемой форме. Вот пример сообщения:
![](https://habrastorage.org/getpro/habr/upload_files/933/4b1/135/9334b1135400b44fa256fee0eb653763.png)
Плюсы относительно смс уведомлений в том, что discord поддерживает markdown разметку, что позволяет делать комфортное представление для подачи сообщения, а также дискорд бесплатен, что при большом количестве ошибок в логах быть плюсом.
Есть несколько способов настроить GrayLog для отправки сообщений в discord, подробнее они описаны в данном опенсорсном решении: discord_alerts.
Настраиваем бота:
Переходим по ссылке и создаем бота discord applications (можно за одно добавить аватарку)
![](https://habrastorage.org/getpro/habr/upload_files/d09/9d5/e6a/d099d5e6aaff1d3b07535acc0fb1ad02.png)
![](https://habrastorage.org/getpro/habr/upload_files/19c/949/6b0/19c9496b0edb6c0f6b093edfe812f56e.png)
Переходим во вкладку бот и жмём `добавить бота`
![](https://habrastorage.org/getpro/habr/upload_files/f45/b5f/23f/f45b5f23fb01b9afcddb679b6211eb64.png)
![](https://habrastorage.org/getpro/habr/upload_files/59a/1a4/fdf/59a1a4fdf81649d3933e325b1e6549ba.png)
Жмём reset token для удаленного доступа к боту и сохраняем токен
![](https://habrastorage.org/getpro/habr/upload_files/4a2/37a/e99/4a237ae99664349dec4eb7f0be004f1c.png)
![](https://habrastorage.org/getpro/habr/upload_files/c4d/d44/d20/c4dd44d206fe9d704272e9610b14aeea.png)
Идем в генератор URL настраиваем доступы бота, добавляем возможность отправлять сообщения
![](https://habrastorage.org/getpro/habr/upload_files/61b/55f/790/61b55f7900609b5d070a8b60f383035c.png)
![](https://habrastorage.org/getpro/habr/upload_files/d1f/3bd/8d5/d1f3bd8d5cc2a9e9ebae0a1c1e1a77c0.png)
Открываем сгенерированный URL в бразузере
![](https://habrastorage.org/getpro/habr/upload_files/038/ca6/149/038ca6149b36042ea5a423af5afa8178.png)
![](https://habrastorage.org/getpro/habr/upload_files/0c0/2c2/7c1/0c02c27c18d13157501b6e48b7cd1f57.png)
![](https://habrastorage.org/getpro/habr/upload_files/d4d/6e9/771/d4d6e9771cc5a80cca29732285f3fd9c.png)
Копируем ссылку на канал на сервере в приложении дискорда
![](https://habrastorage.org/getpro/habr/upload_files/cbc/b3c/9a9/cbcb3c9a9cc19a9605f551243c9f52a7.png)
![](https://habrastorage.org/getpro/habr/upload_files/4af/63e/bfd/4af63ebfdf44c86da2ce226323c4add3.png)
Отлично!
На данный момент у нас должны быть пройденные следующие шаги:
У нас есть token для бота
У нас есть ID канала для записи сообщений
Бот добавлен на сервер и он оффлайн
Если вы сделали всё правильно, то данные условия должны быть выполнены.
Далее мы запустим приложение которое принимает логи из GrayLog.
Опция 1 - запуск в docker
Самый простой способ - запустить через docker-compose файл, просто заполнив поля связанные с токеном, ID канала и портом для http сообщений. Вот пример yaml файла:
version: '3'
services:
discord_alerts:
image: dangdancheg/discord_alerts:latest
ports:
- 3458:3458
environment:
- TOKEN=PASTE_YOUR_DISCORD_TOKEN
- CHANNEL_ID=PASTE_CHANNELID_FROM_CHANNEL_LINK
- PORT=3458
Далее можно просто запустить команду docker compose up, и бот готов
Опция 2 - запуск в билдов
Ищем необхдимую платформу в следующей папке build.
Создаем и заполняем .env файл.
TOKEN=YOUR_TOKEN
CHANNEL_ID=YOUR_CHAN_ID
PORT=3458
Скачиваем готовый запускаемый файл и сохраняем в папке с .env файлом:
--> linux/mipsle: discord_alerts
--> linux/arm: discord_alerts
--> darwin/386: discord_alerts
--> freebsd/arm: discord_alerts
--> freebsd/386: discord_alerts
--> freebsd/amd64: discord_alerts
--> openbsd/386: discord_alerts
--> openbsd/amd64: discord_alerts
--> windows/386: discord_alerts
--> windows/amd64: discord_alerts
--> linux/s390x: discord_alerts
--> netbsd/386: discord_alerts
--> netbsd/amd64: discord_alerts
--> netbsd/arm: discord_alerts
--> linux/mips64le: discord_alerts
--> linux/mips64: discord_alerts
--> linux/386: discord_alerts
--> darwin/amd64: discord_alerts
--> linux/amd64: discord_alerts
--> linux/mips: discord_alerts
Запускаем файл.
Отлично! Теперь у нас есть настроенный приемник для сообщений. Теперь осталось настроить выход у graylog для отправки сообщений.
Настраиваем GrayLog
Заходим во вкладку Alerts:
![](https://habrastorage.org/getpro/habr/upload_files/764/610/d9c/764610d9c5afa031c28ec9cb2f2fdca4.png)
Открываем пункт с уведомлениями - notifications:
![](https://habrastorage.org/getpro/habr/upload_files/af4/411/61a/af441161a6e5b59097d3f4e405a3d634.png)
Выбираем http уведомления:
![](https://habrastorage.org/getpro/habr/upload_files/ad8/737/c3a/ad8737c3a7e3ef69143a2c826664858d.png)
Выбираем любое название и добавляем адрес для вызова (по указанному порту и с методом /json)
![](https://habrastorage.org/getpro/habr/upload_files/972/479/5a1/9724795a1f16923f924fe225c47156b8.png)
Мы должны получить следующее уведомление в дискорде:
![](https://habrastorage.org/getpro/habr/upload_files/a19/ad3/bca/a19ad3bcab7367ef0e3956c6d3835f7f.png)
Если что-либо не получилось оставляйте комментарии, постараюсь помочь.