[Ненормальное программирование, SQL, PowerShell, Microsoft SQL Server, Администрирование баз данных] Email Chart — это вам не ASCII Art
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
По роду моей деятельности я всегда нахожусь между различными подразделениями - у меня в email даже нет подписи, кто я, потому что я сам не знаю, кем являюсь. Недавно я автоматизировал доставку performance metrics SQL server с PROD девелоперам. Конкретная информация (SQL performance metrics) не важна, вы можете делать такое для любой информации, и даже рисовать графы. Графики отправляются по почте и выглядят примерно так в окне письма в outlook:
Но прежде чем я продолжу, давайте дадим слово моему воображаемому оппоненту, зумеру-хипстеру, вот он спешит высказаться:
Мужик! Графики по почте? Что, cерьезно? Web интерфейс, интерактивность, Grafana - "нет, не слышал"? Ты бы еще звездочками графики нарисовал бы в письме, ASCII art-ом.Конечно, мой воображаемый оппонент абсолютно прав в идеальном, воображаемом мире. Это вам подтвердит любой пролетающий там розовый единорог. Однако, если мы не в стартапе, а в кровавом enterprise, то все не так розово.Во-первых, доступ к серверам PRODUCTION в кровавом Enterprise варьируется от затрудненного до параноидального (например, CA PAM с возможностью зайти на сервер только если есть открытый инцидент на вас, при этом copy/paste блокирован). Есть еще более параноидальный вариант - через митинг и экран, когда можно говорить что делать, но набирает другой человек.Во-вторых, что вы там хотели поставить, Grafana? На отдельном сервере, понятно. Давайте и напишем "прошу выделить сервер с доступом ко всем SQL серверам на PROD для таких то нужд". Опять-таки, в зависимости от параноидальности компании вы можете получить желаемый сервер примерно через месяц, два (если вам будет активно помогать менеджмент в борьбе против security team) или никогда. Кроме того, если вы хоститесь on-prem, то вам могут дать виртуалочку, так уж и быть. Если же речь идет об AWS (а мы речь ведем о PROD), то это запрос на машинку, где будут поля Department и Billing Code, и потребуют реальные деньги. Нет, дело не в сумме. Выделить сотни тысяч долларов на какую нибудь фигню для Enterprise элементарно, а вот пару сотен в месяц для Васи Пупкина - извините.Наконец, формат email очень совместим с менеджментом. Менеджер не будет думать, под каким логином заходить на Grafana и куда там кликать, а потом делать screenshots. То ли дело мыло - его легко отфорвардить или прикрепить к митингу. Вас даже могут попросить сделать отчет регулярным, чтобы он автоматически отправлялся менеджеру на почту раз в день или неделю (через три месяца мы можете это отключить - менеджер давно перенаправил надоевший отчет в Junk правилом и забыл про него)В итоге приходится прососаться к серверу с максимально открытой connectivity к другим (такие, как правило, есть, но к ним сильно лимитирован доступ), как правило, такие сервера связаны с deploy (Jenkins, Octopus etc). Особо много там не развернешь - надо вести себя там скромно. Вряд ли кто смотрел старый мультик, но придется сослаться на Филиаса Фога:
"А теперь - слайды" (c) Итак, я зацепился за существующий Jenkins server, создав Job:
Jenkins используется просто как оболочка вызова powershell (да, powershell можно прекрасно использовать и под Linux!) и бесхитростно передает все параметры скрипту. Вся информация по performance у меня в одной плоской таблице, и выводится по колонкам. Графики рисуются примерно так:
makeChart $find @('3Read latency, microseconds','2Write Latency, microseconds') 'IO latency' 'Time' 'Times in microseconds' 'latency'
В $find находится data set, вычитанный на нужную дату и диапазон времени. Названия колонок предваряет код цвета. Смотрим процедуру makeChart:
# Xgraph colors
# 2 = red, 3 = blue, 4 = green, 5 = violet, 6 = orange, 7 = yellow, 8 = pink, 9 = cyan
function makeChart($ds, $cols, $title, $titleX, $titleY, $pngname)
{
Out-File -FilePath $workfile -Force -Encoding ascii
"Title = $title" | Add-Content $workfile
"title_x = $titleX" | Add-Content $workfile
"title_y = $titleY" | Add-Content $workfile
$maxval = 0
foreach ($c in $cols)
{
$colname = $c.Substring(1)
$colch = $c[0]
"color = $colch" | Add-Content $workfile
$secf = -1
foreach ($r in $find) {
$val = $r[$colname]
if ($val -gt $maxval) { $maxval = $val }
if ($secf -lt 0) { $secf = $r.sec }
$secl = $r.sec
"$secl $val" | Add-Content $workfile
}
"NEXT" | Add-Content $workfile
}
$maxval = $maxval * 1.03
Я там скрыл две последние строки - о них пойдет речь дальше. Что мы вообще делаем здесь? Мы составляем текстовое задание для пакетного рисовальщика картинок Xgraph. Утилитка старая и графики выглядят на уровне 90х годов, кроме того, она не понимает Unicode (-Encoding ascii). Неудивительно - развитие таких утилит остановилось, но иногда они очень полезны! Итак, файл готов. Вызываем Xgraph:
&D:\Apps\Xgraph\bin\xgraph.exe $workfile -pdf -hms -x_range $secf $secl -y_range 0 $maxval -out_file $pdf
Указываем входной файл, диапазон по y, по x (секунды как целое от начала суток), рисуем и время как время (-hms) и увы... вывод только в pdf и подобные форматы. Их можно приложить как attachment, но это некрасиво, нам хочется поместить картинку в тело письма. Придется скачать Poppler и конвертировать pdf в png.
&D:\Apps\poppler\bin\pdftoppm -png $pdf $pngname
Теперь тело письма будет выглядеть примерно так:
Здесь снова экстремальное программирование - у нас есть голый и чистый HTML почтового разлива - без CSS, javascript и вообще без всего. Обратите внимание, что png имеет в имени '-1', это первая страница (она же в данном случае единственная).Есть еще одна утилитка подобного плана, она позволяет рисовать графы по их текстовому описанию: graphviz. Она уже может непосредственно выводить в png и jpg:
Это пример, как уже в другой job я возвращаю пользователям lock graph.
===========
Источник:
habr.com
===========
Похожие новости:
- [Ненормальное программирование, Программирование, Компиляторы, C] Один бинарник, любое окружение. Магия чистого C
- [Децентрализованные сети, Информационная безопасность, Машинное обучение, Искусственный интеллект] Роевое обучение: превратите распределенные данные в фактор успеха
- [Oracle, PostgreSQL, Администрирование баз данных, ERP-системы] Хватит это терпеть: как мы обновили архитектуру системы мониторинга автотранспорта на 15 000 машин и 17 000 магазинов
- [Информационная безопасность, Ненормальное программирование, Исследования и прогнозы в IT] Как я нашел в публичном доступе исходники нескольких сервисов ФНС
- [Open source, Виртуализация, Разработка под Linux, Разработка на Raspberry Pi] Шпаргалка по Linux grep, домашний термостат на Raspberry Pi, эл. книга «Ansible for DevOps» и PostgreSQL на Linux
- [Java, Администрирование баз данных, DevOps] Версионирование структуры БД при помощи Liquibase
- [Высокая производительность, PostgreSQL, SQL, Администрирование баз данных] DBA: Когда почти закончился serial
- [Python, Прототипирование, Интернет-маркетинг, Natural Language Processing] Как сделать интеллектуального чат-бота для проведения опросов/интервью
- [Ненормальное программирование, Разработка веб-сайтов, Программирование, Haskell] Зачем мы транспилируем Haskell в JavaScript
- [Ruby, PostgreSQL] PGHero — дашборд для мониторинга БД PostgeSQL
Теги для поиска: #_nenormalnoe_programmirovanie (Ненормальное программирование), #_sql, #_powershell, #_microsoft_sql_server, #_administrirovanie_baz_dannyh (Администрирование баз данных), #_powershell, #_sql, #_ms_sql, #_outlook, #_performance, #_grapviz, #_xgraph, #_poppler, #_enterprise, #_nenormalnoe_programmirovanie (
Ненормальное программирование
), #_sql, #_powershell, #_microsoft_sql_server, #_administrirovanie_baz_dannyh (
Администрирование баз данных
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 16:16
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
По роду моей деятельности я всегда нахожусь между различными подразделениями - у меня в email даже нет подписи, кто я, потому что я сам не знаю, кем являюсь. Недавно я автоматизировал доставку performance metrics SQL server с PROD девелоперам. Конкретная информация (SQL performance metrics) не важна, вы можете делать такое для любой информации, и даже рисовать графы. Графики отправляются по почте и выглядят примерно так в окне письма в outlook: Но прежде чем я продолжу, давайте дадим слово моему воображаемому оппоненту, зумеру-хипстеру, вот он спешит высказаться: Мужик! Графики по почте? Что, cерьезно? Web интерфейс, интерактивность, Grafana - "нет, не слышал"? Ты бы еще звездочками графики нарисовал бы в письме, ASCII art-ом.Конечно, мой воображаемый оппонент абсолютно прав в идеальном, воображаемом мире. Это вам подтвердит любой пролетающий там розовый единорог. Однако, если мы не в стартапе, а в кровавом enterprise, то все не так розово.Во-первых, доступ к серверам PRODUCTION в кровавом Enterprise варьируется от затрудненного до параноидального (например, CA PAM с возможностью зайти на сервер только если есть открытый инцидент на вас, при этом copy/paste блокирован). Есть еще более параноидальный вариант - через митинг и экран, когда можно говорить что делать, но набирает другой человек.Во-вторых, что вы там хотели поставить, Grafana? На отдельном сервере, понятно. Давайте и напишем "прошу выделить сервер с доступом ко всем SQL серверам на PROD для таких то нужд". Опять-таки, в зависимости от параноидальности компании вы можете получить желаемый сервер примерно через месяц, два (если вам будет активно помогать менеджмент в борьбе против security team) или никогда. Кроме того, если вы хоститесь on-prem, то вам могут дать виртуалочку, так уж и быть. Если же речь идет об AWS (а мы речь ведем о PROD), то это запрос на машинку, где будут поля Department и Billing Code, и потребуют реальные деньги. Нет, дело не в сумме. Выделить сотни тысяч долларов на какую нибудь фигню для Enterprise элементарно, а вот пару сотен в месяц для Васи Пупкина - извините.Наконец, формат email очень совместим с менеджментом. Менеджер не будет думать, под каким логином заходить на Grafana и куда там кликать, а потом делать screenshots. То ли дело мыло - его легко отфорвардить или прикрепить к митингу. Вас даже могут попросить сделать отчет регулярным, чтобы он автоматически отправлялся менеджеру на почту раз в день или неделю (через три месяца мы можете это отключить - менеджер давно перенаправил надоевший отчет в Junk правилом и забыл про него)В итоге приходится прососаться к серверу с максимально открытой connectivity к другим (такие, как правило, есть, но к ним сильно лимитирован доступ), как правило, такие сервера связаны с deploy (Jenkins, Octopus etc). Особо много там не развернешь - надо вести себя там скромно. Вряд ли кто смотрел старый мультик, но придется сослаться на Филиаса Фога: "А теперь - слайды" (c) Итак, я зацепился за существующий Jenkins server, создав Job: Jenkins используется просто как оболочка вызова powershell (да, powershell можно прекрасно использовать и под Linux!) и бесхитростно передает все параметры скрипту. Вся информация по performance у меня в одной плоской таблице, и выводится по колонкам. Графики рисуются примерно так: makeChart $find @('3Read latency, microseconds','2Write Latency, microseconds') 'IO latency' 'Time' 'Times in microseconds' 'latency'
# Xgraph colors
# 2 = red, 3 = blue, 4 = green, 5 = violet, 6 = orange, 7 = yellow, 8 = pink, 9 = cyan function makeChart($ds, $cols, $title, $titleX, $titleY, $pngname) { Out-File -FilePath $workfile -Force -Encoding ascii "Title = $title" | Add-Content $workfile "title_x = $titleX" | Add-Content $workfile "title_y = $titleY" | Add-Content $workfile $maxval = 0 foreach ($c in $cols) { $colname = $c.Substring(1) $colch = $c[0] "color = $colch" | Add-Content $workfile $secf = -1 foreach ($r in $find) { $val = $r[$colname] if ($val -gt $maxval) { $maxval = $val } if ($secf -lt 0) { $secf = $r.sec } $secl = $r.sec "$secl $val" | Add-Content $workfile } "NEXT" | Add-Content $workfile } $maxval = $maxval * 1.03 &D:\Apps\Xgraph\bin\xgraph.exe $workfile -pdf -hms -x_range $secf $secl -y_range 0 $maxval -out_file $pdf
&D:\Apps\poppler\bin\pdftoppm -png $pdf $pngname
Здесь снова экстремальное программирование - у нас есть голый и чистый HTML почтового разлива - без CSS, javascript и вообще без всего. Обратите внимание, что png имеет в имени '-1', это первая страница (она же в данном случае единственная).Есть еще одна утилитка подобного плана, она позволяет рисовать графы по их текстовому описанию: graphviz. Она уже может непосредственно выводить в png и jpg: Это пример, как уже в другой job я возвращаю пользователям lock graph. =========== Источник: habr.com =========== Похожие новости:
Ненормальное программирование ), #_sql, #_powershell, #_microsoft_sql_server, #_administrirovanie_baz_dannyh ( Администрирование баз данных ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 16:16
Часовой пояс: UTC + 5