mirror of
https://github.com/ManyakRus/telegram_loki.git
synced 2024-12-12 09:33:50 +02:00
готово readme
This commit is contained in:
parent
835418f12b
commit
99545595c2
11
.env_empty
Normal file
11
.env_empty
Normal file
@ -0,0 +1,11 @@
|
||||
|
||||
TELEGRAM_APP_ID=
|
||||
TELEGRAM_APP_HASH=
|
||||
TELEGRAM_PHONE_FROM=
|
||||
TELEGRAM_PHONE_SEND_TEST=
|
||||
|
||||
LOKI_URL=
|
||||
GRAFANA_LOGIN=
|
||||
GRAFANA_PASSWORD=
|
||||
|
||||
TELEGRAM_CHAT_NAME=
|
16
.env_example
16
.env_example
@ -1,16 +0,0 @@
|
||||
#filename file to create with .graphml extension
|
||||
FILENAME_GRAPHML=
|
||||
|
||||
#table names have to image, regular expression format
|
||||
INCLUDE_TABLES=
|
||||
|
||||
#table names have to not image, regular expression format
|
||||
EXCLUDE_TABLES=
|
||||
|
||||
#database credentials
|
||||
DB_HOST=
|
||||
DB_NAME=
|
||||
DB_SCHEME=
|
||||
DB_PORT=
|
||||
DB_USER=
|
||||
DB_PASSWORD=
|
54
README.md
54
README.md
@ -1,2 +1,52 @@
|
||||
# telegram_loki
|
||||
Send errors from logger LOKI to telegram messenger
|
||||
Applications for sending logs with errors from the LOKI(GRAFANA) logger to the Telegram messenger
|
||||
|
||||
The LOKI logger has an inconvenient interface for searching errors in application logs,
|
||||
and no one will look there every 5 minutes -
|
||||
Therefore, it is necessary to automate the process of searching for errors in logs and notifying developers.
|
||||
|
||||
The application does:
|
||||
1. Log in to grafana
|
||||
2. Takes a list of services from the services.txt file
|
||||
3. For each service, searches for LOKI logs with the text: error:,panic:,ERROR:,PANIC:
|
||||
4. Found logs with errors are sent to the Telegram messenger
|
||||
5. Repeats the search every 10 minutes
|
||||
|
||||
|
||||
Installation procedure:
|
||||
1. Compile this repository
|
||||
make build
|
||||
the telegram_loki file will appear in the bin folder
|
||||
|
||||
|
||||
2. make a .env file with filled parameters:
|
||||
TELEGRAM_APP_ID=
|
||||
TELEGRAM_APP_HASH=
|
||||
TELEGRAM_PHONE_FROM=
|
||||
TELEGRAM_PHONE_SEND_TEST=
|
||||
LOKI_URL=
|
||||
GRAFANA_LOGIN=
|
||||
GRAFANA_PASSWORD=
|
||||
TELEGRAM_CHAT_NAME=
|
||||
|
||||
|
||||
3. Fill in the settings/services.txt file
|
||||
In json format write the service name in LOKI
|
||||
and the name (login) of the programmer (optional)
|
||||
sample:
|
||||
{
|
||||
"test-service1": "@DeveloperTelegramName"
|
||||
}
|
||||
|
||||
|
||||
3. Run the telegram_loki file
|
||||
|
||||
|
||||
Source code in Golang language.
|
||||
Tested on Linux Ubuntu
|
||||
Readme from 10/13/2023
|
||||
|
||||
License:
|
||||
Save information about the author and the site.
|
||||
|
||||
Made by Alexander Nikitin
|
||||
https://github.com/ManyakRus/telegram_loki
|
@ -15,7 +15,7 @@
|
||||
<node id="n0">
|
||||
<data key="d5">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="26.0" width="136.0" x="-67.99999999999997" y="-213.0"/>
|
||||
<y:Geometry height="26.0" width="136.0" x="-68.0" y="-13.0"/>
|
||||
<y:Fill color="#FFFFFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="c" textColor="#000000" verticalTextPosition="bottom" visible="true" width="112.4765625" x="11.76171875" xml:space="preserve" y="1.6875">telegram_loki</y:NodeLabel>
|
||||
@ -26,7 +26,7 @@
|
||||
<node id="n1">
|
||||
<data key="d5">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="26.0" width="96.0" x="-48.0" y="-13.0"/>
|
||||
<y:Geometry height="26.0" width="96.0" x="-247.7777626556525" y="-22.425791653849217"/>
|
||||
<y:Fill color="#FFFFFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="c" textColor="#000000" verticalTextPosition="bottom" visible="true" width="80.03125" x="7.984375" xml:space="preserve" y="1.6875">Telegram</y:NodeLabel>
|
||||
@ -34,14 +34,38 @@
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<edge id="e0" source="n0" target="n1">
|
||||
<node id="n2">
|
||||
<data key="d5">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="26.0" width="56.0" x="171.7777626556525" y="-3.5742083461507637"/>
|
||||
<y:Fill color="#FFFFFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="22.625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="c" textColor="#000000" verticalTextPosition="bottom" visible="true" width="40.90625" x="7.546875" xml:space="preserve" y="1.6875">WEB</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<edge id="e0" source="n0" target="n2">
|
||||
<data key="d8" xml:space="preserve"><![CDATA[telegram_loki -> WEB]]></data>
|
||||
<data key="d9">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="standard" target="standard"/>
|
||||
<y:EdgeLabel alignment="center" bottomInset="0" configuration="AutoFlippingLabel" distance="0.0" fontFamily="Dialog" fontSize="8" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.625" horizontalTextPosition="center" iconTextGap="4" leftInset="0" modelName="centered" modelPosition="center" preferredPlacement="anywhere" ratio="0.5" rightInset="0" textColor="#000000" topInset="0" verticalTextPosition="bottom" visible="true" width="30.515625" x="36.631068827826255" xml:space="preserve" y="-6.864310668641444">
|
||||
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/></y:EdgeLabel>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e1" source="n0" target="n1">
|
||||
<data key="d8" xml:space="preserve"><![CDATA[telegram_loki -> Telegram]]></data>
|
||||
<data key="d9">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="standard" target="standard"/>
|
||||
<y:EdgeLabel alignment="center" bottomInset="0" configuration="AutoFlippingLabel" distance="0.0" fontFamily="Dialog" fontSize="8" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.625" horizontalTextPosition="center" iconTextGap="4" leftInset="0" modelName="centered" modelPosition="center" preferredPlacement="anywhere" ratio="0.5" rightInset="0" textColor="#000000" topInset="0" verticalTextPosition="bottom" visible="true" width="30.515625" x="-15.257812500000012" xml:space="preserve" y="77.6875">
|
||||
<y:EdgeLabel alignment="center" bottomInset="0" configuration="AutoFlippingLabel" distance="0.0" fontFamily="Dialog" fontSize="8" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.625" horizontalTextPosition="center" iconTextGap="4" leftInset="0" modelName="centered" modelPosition="center" preferredPlacement="anywhere" ratio="0.5" rightInset="0" textColor="#000000" topInset="0" verticalTextPosition="bottom" visible="true" width="30.515625" x="-57.146693827826255" xml:space="preserve" y="-11.288875475374182">
|
||||
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/></y:EdgeLabel>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 5.5 KiB |
78
readme.rus
78
readme.rus
@ -1,61 +1,53 @@
|
||||
Приложения для автоматического создания схемы таблиц и колонок в БД Postgres (ERD-diagram)
|
||||
Приложения для отправки логов с ошибками из логгера LOKI(GRAFANA) в мессенджер Telegram
|
||||
|
||||
Есть много разных приложения для автоматического создания ERD-diagram,
|
||||
однако они все отображают стрелки связей только до таблицы, а не до нужной колонки,
|
||||
и не имеют возможности редактировать и обновлять отредактированную схему -
|
||||
поэтому пришлось создать свой приложение.
|
||||
В логгере LOKI неудобный интерфейс для поиска ошибок в логах приложений,
|
||||
и никто не будет туда смотреть каждые 5 минут -
|
||||
поэтому надо автоматизировать процесс поиска ошибок в логах и уведомление разработчикам.
|
||||
|
||||
Приложение умеет автоматически находить в ЬД и рисовать:
|
||||
1. Все таблицы
|
||||
2. Все колонки таблиц и типы
|
||||
3. Стрелки взаимосвязи таблиц от колонки до колонки (foreign key)
|
||||
4. Находит таблицы в старом имеющемся файле .graphml,
|
||||
и располагает таблицы по таким же координатам X,Y
|
||||
Приложение делает:
|
||||
1. Логинится в grafana
|
||||
2. Берёт список сервисов из файла services.txt
|
||||
3. По каждому сервису ищет логи LOKI с текстом: error:,panic:,ERROR:,PANIC:
|
||||
4. Найденные логи с ошибками присылает в Telegram мессенджер
|
||||
5. Повторяет поиск каждые 10 минут
|
||||
|
||||
Полученный файл .graphml в бесплатном редакторе yED можно:
|
||||
1. Экспортировать в рисунок .jpg
|
||||
2. Редактировать
|
||||
3. Автоматическая расстановка блоков
|
||||
|
||||
Образец выполнения (рисунки) можно найти в каталоге examples
|
||||
|
||||
Порядок установки:
|
||||
1. Установить редактор файлов .graphml yEd (бесплатный)
|
||||
https://www.yworks.com/products/yed/download
|
||||
|
||||
2. Скомпилировать этот репозиторий
|
||||
1. Скомпилировать этот репозиторий
|
||||
make build
|
||||
в папке bin появится файл image_database
|
||||
в папке bin появится файл telegram_loki
|
||||
|
||||
3. сделать файл .env с заполненными параметрами:
|
||||
FILENAME_GRAPHML=
|
||||
INCLUDE_TABLES=
|
||||
EXCLUDE_TABLES=
|
||||
|
||||
DB_HOST=
|
||||
DB_NAME=
|
||||
DB_SCHEME=
|
||||
DB_PORT=
|
||||
DB_USER=
|
||||
DB_PASSWORD=
|
||||
2. сделать файл .env с заполненными параметрами:
|
||||
TELEGRAM_APP_ID=
|
||||
TELEGRAM_APP_HASH=
|
||||
TELEGRAM_PHONE_FROM=
|
||||
TELEGRAM_PHONE_SEND_TEST=
|
||||
LOKI_URL=
|
||||
GRAFANA_LOGIN=
|
||||
GRAFANA_PASSWORD=
|
||||
TELEGRAM_CHAT_NAME=
|
||||
|
||||
Запустить файл image_database
|
||||
|
||||
4. Открыть полученный файл .graphml в редакторе yEd
|
||||
(все элементы сначала будут в центре экрана)
|
||||
и выбратьв меню:
|
||||
Tools - Remove Node Overlaps
|
||||
- редактор yEd расположит все элементы схемы в оптимальном виде.
|
||||
3. Заполнить файл settings/services.txt
|
||||
В формате json написать имя сервиса в LOKI
|
||||
и имя(логин) программиста (необязательно)
|
||||
образец:
|
||||
{
|
||||
"test-service1": "@DeveloperTelegramName"
|
||||
}
|
||||
|
||||
5. Экспортировать схему в картинку.
|
||||
Выбрать в меню:
|
||||
File - Export
|
||||
|
||||
3. Запустить файл telegram_loki
|
||||
|
||||
|
||||
Исходный код на языке Golang.
|
||||
Тестировал на Linux Ubuntu
|
||||
Реадми от 14.09.2023
|
||||
Реадми от 13.10.2023
|
||||
|
||||
Лицензия:
|
||||
Сохранять информацию об авторе и сайте.
|
||||
|
||||
Сделал Александр Никитин
|
||||
https://github.com/ManyakRus/image_database
|
||||
https://github.com/ManyakRus/telegram_loki
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"test_service1": "@DeveloperTelegramName",
|
||||
"test_service2": "FirstName SecondName",
|
||||
"test-service1": "@DeveloperTelegramName",
|
||||
"test-service2": "FirstName SecondName",
|
||||
"test-service3": "t.me/testservice_errors",
|
||||
}
|
Loading…
Reference in New Issue
Block a user