Уведомления об ошибках Power BI Report Server в Telegram
Совместно с
Машей делали скрипт, который регулярно отправляет в Telegram ошибки обновлений отчётов из Power BI Report Server. Запускается в самом Report Server.
Как заставить скрипт работать:
- Указать в скрипте IP сервера и Название БД под RS
- Создать телеграм-бота и стартовать его
- Получить ваш ID пользователя от
@userinfobot
- Указать в скрипте TOKEN бота (вместо TOKEN) и ID пользователя
- Добавить скрипт в отчёт на Report Server
- В настройках источника ввести логин-пароль самого RS (под ними он стучится в БД)
- Поставить время обновления скрипта после остальных отчётов
Ежедневно вам будут приходить все ошибки обновлений
за сегодня. Если хотите отправлять уведомления в группу - уточните ID группы и добавьте туда бота с правами админа.
Код скрипта:
let
query = let
message =
let
Источник = Sql.Databases("IP сервера\Название БД под RS"), //в настройках подключения вводите логин пароль самого репорт сервера который стучится в БД
ReportServer = Источник{[Name="ReportServer"]}[Data],
dbo_ExecutionLog3 = ReportServer{[Schema="dbo",Item="ExecutionLog3"]}[Data],
#"Строки с примененным фильтром" = Table.SelectRows(dbo_ExecutionLog3, each ([ItemAction] = "DataRefresh") and ([Status] = "rsInternalError")),
#"Другие удаленные столбцы" = Table.SelectColumns(#"Строки с примененным фильтром",{"ItemPath", "TimeEnd", "Status", "ItemAction", "TimeStart"}),
#"Добавлен пользовательский объект" = Table.AddColumn(#"Другие удаленные столбцы", "Сегодня", each DateTime.From(Date.From(DateTime.LocalNow()))),
#"Измененный тип" = Table.TransformColumnTypes(#"Добавлен пользовательский объект",{{"Сегодня", type datetime}}),
#"Добавлен пользовательский объект1" = Table.AddColumn(#"Измененный тип", "Сравнение", each [TimeEnd]>[Сегодня]),
#"Строки с примененным фильтром1" = Table.SelectRows(#"Добавлен пользовательский объект1", each ([Сравнение] = true)),
#"Удаленные столбцы" = Table.RemoveColumns(#"Строки с примененным фильтром1",{"Status", "ItemAction", "Сегодня", "Сравнение"}),
#"Сортированные строки" = Table.Sort(#"Удаленные столбцы",{{"TimeEnd", Order.Ascending}}),
#"Добавлен пользовательский объект2" = Table.AddColumn(#"Сортированные строки", "Текст", each
"❌ " & [ItemPath]&"#(lf)с "&Text.From([TimeStart])&"#(lf)по "&Text.From([TimeEnd])&"#(lf)"
),
Пользовательский = Text.Combine(#"Добавлен пользовательский объект2"[Текст],"#(lf)")
in
Пользовательский
, post = try Json.Document(Web.Contents("https://api.telegram.org/botTOKEN/sendMessage", [Query = [chat_id="ID ПОЛЬЗОВАТЕЛЯ",text=message, parse_mode = "Markdown"], Content = Text.ToBinary("")]))[ok] otherwise false
in post,
tab = #table(1, {{query}})
in tab