SQL-Мониторинг в консоли PowerShell {Онлайн}

Публикация № 1175266 30.12.19

Методология - DevOps - Скрипты автоматизации

мониторинг наблюдение процесс SQL MSSQL monitor

Скрипт PowerShell, который поможет увидеть/наблюдать происходящее на серверах СУБД (для MSSQL).

Идея такая: Запускаешь и смотришь. ВСЁ! Смотришь своими глазами. Не глазами PRTG, ZABBIX и прочих систем, они тоже присутствуют и молодцы, но не о них сейчас... И хорошо, когда наблюдение ведешь на отдельном экране. И совсем идеально, когда на отдельном компе (с отдельным же экраном!). Можно так же выводить на общий монитор или телевизор в кабинетах групп поддержки, разработки, дежурных смен и т.д. И бывает что судорожно-срочно нужно ответить руководству "что там у нас происходит на серверах"? Да, на всех и сразу. Чтобы иметь мгновенное представление, пускай в первом приближении, обзавелся таким скриптом.

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

 -Refresh <n>: Период запуска обновления, в секундах. Указывается в диапазоне от 3 до 600. Период обновления иначе. НО следует понимать, что опрос серверов выполняется последовательно, и в случае, когда вы собираетесь наблюдать за большим количеством инстанций, то реальный период обновления будет складываться из всех времён, затраченных на опрос этих инстанций. Например: наблюдаем 10 инстанций, и на опрос каждой тратится около 0,5 сек, тогда реальный период опроса будет ~8 секунд (при параметре -Refresh 3).   Совет: при большом количестве инстанций устанавливайте меньшие значения этого параметра. По умолчанию период равен 15 секундам.

SQL_Monitor.ps1 -Refresh 3

-Select: Включает режим выбора площадок. Эммм. У нас в организации несколько площадок. Разные назначения, платформы, масштабы, охваты и тд,.. Каждая площадка имеет свой шифр/код, и это обычно 3 символа. В каждой площадке есть Продуктив и "всё остальное", т.е. разработка и тестирование. У нас площадки: FHD (бухгалтерия), ENB (биллинг), NVD (торговля), LK (личный кабинет) и т.д.  По-хорошему, следовало бы разделить мониторинг по этому признаку "продуктив-или-тест", но пока без него. Нам и так хорошо). Итак, если данный параметр указан при запуске, то меню выбора площадки для мониторинга станет множественным. С ним можно одновременно выбрать более одной площадки. Без указания этого параметра - мониторим одну площадку или сразу все (в меню появляется пункт "ALL").

SQL_Monitor.ps1 -Select

Сразу после запуска скрипта появляются несколько меню (друг за другом):

вот как выглядит меню без параметра select:

а вот как с параметром select:

Далее следует выбрать продолжительность мониторинга в минутах, 4 варианта: "Бесконечно, 10, 30, 60"

Кстати, отдельный скрипт для таких менюшек я выкладывал, в данной публикации он обновлен и встроен в _CommonFunctions.min.ps1. В этом файле много чего собрано, пользуйтесь на здоровье ;-)

Конечно, все предлагаемые на выбор параметры прописаны в скрипте, в виде обыкновенных списков или массивов значений. Можете отредактировать своими преференциями! ;Ъ

Естественно, необходимо настроить под свой ландшафт переменные, они определены в коде.

$global:_txt_land    = ("FHD","ENB","NVD","RDS","LK","KC","IRK") - список площадок

$_arr_sql_instances - массив SQL-инстанций, 

где Первая колонка - это DNS-имя хоста и/или инстанса, (именно инстанса, т.е. можно указывать имя_хоста\имя_инстанса), но в большинстве случаев достаточно DNS имени СУБД хоста. Вторая колонка - это имя площадки, к которой принадлежит инстанс, заполняется значениями из $global:_txt_land. Или наоборот, значения в списке _txt_land должны коррелировать со значениями второй колонке массива инстансов, ну вы поняли. Третья колонка - это тип инстанса: продуктив или тест, пока не влияет ни на что - задел на будущее.

 

Ниже скриншот, на котором выполняется бесконечный мониторинг, площадки "ENB", с интервалом в 15 секунд.

в "шапке" 1 - выбранная площадка; 2 - когда запущен, когда будет остановлен, интервал обновления; 3- легенда, по которой осуществляется раскраска строк. Сортировка строк выполнена по полю продолжительность, по убыванию. 4 - список инстанций, с временами работы запроса по каждой. Имеет свою "раскраску" по времени ответа, попробуйте разгадать)

5 - Главное, ради чего запускается скрипт. Текущие запросы на СУБД в момент его опроса, то чем занят СКУЛЬ.

Колонки тут следующие:

Progress % - Процент (прогресс) выполнения запроса. MSSQL выдаёт такую информацию по некоторым командам (архивирование, восстановление, команды DBCC и т.д.), остальные остаются чёрными, у них процент всегда пустой.

[X] - пока не функционально, для будущих версий.

Instance - Имя инстанса. Кривая стрелочка означает, что инстанс тот же, просто помогает визуально разделить инстансы с похожими именами...

spID - идентификатор процесса выполняемого запроса.

Blckr - блокирующий spID, он мешает текущему запросу выполниться.

User - имя пользователя, выполняющего запрос.

DB name - база данных, в контексте которой выполняется запрос.

Command - команда, тип, статус. всё через "или".

Duration - длительность этого запроса. ЧЧ:ММ:СС.мс, после 24 часов - сбрасывается на ноль.

~Estimated end - ожидаемое (прогнозируемое) время завершения запроса. как и Progress %, заполняется не для всех запросов. хоть и очень полезное.

Query (trimmed) - несколько первых букв текста запроса/команды/батча/скрипта/...называйте_как_хотите...  и (trimmed) - говорит что запрос "подстрижен".

Имейте в виду, что все поля, содержащие строки чрезмерной длины будут подрезаны до определенных значений. это сделано чтобы такие строки не "сбивали строй" у таблицы. На скриншоте: вторая строка снизу, значение поля "User" подрезано и добавлен знак "~".

Скрипт поочередно выполняет опрос выбранных СУБД с помощью PS командлета "Invoke-SQLcmd", поэтому нужно убедиться в наличии "SqlServer" среди установленных модулей (команда "Get-Module"). В случае отсутствия, установить его можно с помощью команды "Install-Module -Name SqlServer".

Подключение к инстанциям SQL происходит со встроенной авторизацией Windows, поэтому, не забывайте наделять необходимыми ролями и предоставлять права той учетной записи, под которой выполняется запуск скрипта.

Совет: в настройках окна PowerShell используйте точечный шрифт 5х12, иначе окно может не поместиться в монитор.

В архиве три файла, общие функции, скрипт для псевдографики, и сам запускающий мониторинг скрипт. Прошу!

Обоснованная критика приветствуется.

... всех С Наступающим 2020!

Обновление:

добавлен интерфейсный параметр запуска -lang, имеет два значения "en" (по-умолчанию) и "ru". 

Скачать файлы

Наименование Файл Версия Размер
SQL-Монитор

.zip 21,11Kb
12
.zip 21,11Kb 12 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Steelvan 103 30.12.19 17:08 Сейчас в теме
В каждую хрень надо добавить это дурацкое слово "online".
Типа, это слово несет информативную нагрузку.

Наблюдение итак собой подразумевает в текущем времени.
2. ddens 164 31.12.19 02:32 Сейчас в теме
(1)да да, в любой непонятной ситуации добавляйте слово "online" в заголовок...
3. qwertehok1 31.12.19 09:24 Сейчас в теме
давно уже придумали sp_whoisactive
Aleksey.Bochkov; YPermitin; +2 Ответить
6. user612295_death4321 02.01.20 22:18 Сейчас в теме
(3) Да, наверное самая удобная штука, что я юзал. Позволяет покрыть наверное процентов 85% проблем )
YPermitin; +1 Ответить
8. ddens 164 09.01.20 02:46 Сейчас в теме
(3) никогда не понимал таких комментаторов. По-вашему других средств быть не может? По-вашему: "придумало человечество колесо и всё! Первое деревянное, скрипучее, недолговечное, но ведь ехало и поедет сейчас... Зачем придумали какие-то подшипники? подшипники трения, скольжения, роликовые, шариковые, двурядные, сборные, конусные, упорные... нафига всё это??? вот же глупое человечество, ведь давно уже придумали колесо"
так по-вашему?)))

Конечно, я не сравниваю sp_whoisactive с деревянным колесом, и ни чуть не умаляю достоинств ни одного ни второго, и, конечно же, не ставлю свой скрипт в замену. Просто говорю, что можно еще вот так вести интерактивное наблюдение за протекающими запросами на ваших серверах. Право выбора остаётся за вами.
11. Dansur 261 05.08.20 12:51 Сейчас в теме
(8) а выбор реализации на Powershell с псевдографикой не деревянное ли колесо у Вас?
4. YPermitin 10940 31.12.19 20:07 Сейчас в теме
5. user1335935 31.12.19 20:41 Сейчас в теме
Поздравляю, Вы "изобрели" sqlblocks XD
YPermitin; +1 Ответить
7. ddens 164 09.01.20 02:24 Сейчас в теме
(5) я вас тоже поздравляю, вы "изобрели" только этот коммент.
cefalapoid; +1 Ответить
9. user1274438 09.01.20 11:55 Сейчас в теме
мда...
Первое деревянное, скрипучее, недолговечное...

Если тут проводить аналогию с деревянным колесом, то у автора подшипники сплетены из веток ивы (или типа того), и название им "шариковы", но отнюдь не шариковые.
10. ddens 164 09.01.20 17:08 Сейчас в теме
Оставьте свое сообщение

См. также

CF & SQL : конструктор прямых запросов к БД 1С Промо

Инструментарий разработчика Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.

1 стартмани

02.10.2019    27241    261    dmitrydemenew    55    

Исправление ошибки "Не удалось выполнить обработчик обновления" при обновлении БГУ на релиз 2.0.78.38

Тестирование и исправление Администрирование СУБД v8 v8::БУ БГУ Россия БУ Абонемент ($m)

Обход ошибки обновления релиза Бухгалтерии государственного учреждения на 2.0.78.38 вида Не удалось выполнить обработчик обновления "Документы.ЭлектронныйДокументВходящийЭДО.ОбработатьДанныеДляПереходаНаНовуюВерсию".

1 стартмани

08.06.2021    1812    5    the1    2    

Связка python + PostgreSQL + 1C 8.3

Сервера WEB v8 Россия Абонемент ($m)

Поступила задача от руководства сделать парсер сайтов с сохранением результатов в 1С. Парсер сайтов принял решение писать в python, благо его компоненты позволяют сделать парсер с минимальными затратами. Но нормальной связки python + 1С во всемирной сети я не нашел. Поэтому решил сделать через PostgreSQL, так как в postgres поддерживается python. Обработка тестировалась на платформе 1С 8.3.17.1549.

1 стартмани

08.02.2021    1563    0    klepser    4    

Интерфейс к утилите администрирования кластера серверов для ОС Linux

Администрирование данных 1С Linux v8 1cv8.cf Абонемент ($m)

Реализация сценария администрирования кластера серверов для ОС Linux при СУБД - PostgreSQL.

2 стартмани

21.01.2021    1147    3    masterb    0    

Легкое и гибкое управление списком доступных баз 1С у пользователей Промо

Стартеры 1С Сервисные утилиты Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

7 стартмани

05.12.2018    19844    21    RomikR    9    

Очистка таблиц 1С на MS SQL и сжатие БД MS SQL 1С

Администрирование данных 1С Администрирование СУБД Чистка базы Россия Абонемент ($m)

Обработка предназначена для удаления таблиц и сжатие ИБ на сервере SQL

1 стартмани

15.09.2020    2811    4    nusv    4    

Мастер создания копии информационной базы для отчетности

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Прототип инструмента для подготовки реплики в режиме только для чтения к использованию. Позволяет использовать "read-only" реплики как обычные информационные базы 1С.

10 стартмани

28.08.2020    8070    5    YPermitin    12    

Размер таблиц 1С в базе данных MS SQL

Статистика базы данных Администрирование СУБД v8 Абонемент ($m)

Данная обработка позволяет получить структуру БД 1С и размер таблиц без использования механизма ADODB соединения с БД MSSQL.

1 стартмани

14.08.2020    4759    37    donpadlo    5    

Переход с ERP на КА 2 или УТ 11

Администрирование СУБД Обмен данными 1С Перенос данных из 1C8 в 1C8 v8 УТ11 КА2 УУ Абонемент ($m)

Как известно сейчас 1С реализует программные продукты «1С:ERP Управление предприятием 2», «1С:Комплексная автоматизация 2» и «1С:Управление торговлей 11» одним блоком. Именно благодаря этому подходу на текущий момент во всех решениях есть переход на решения более высокого уровня. Ну как говорится если можно вперед, значит можно и назад. Хотя данный подход нигде и не задокументирован.

1 стартмани

13.07.2020    5117    15    user923728    15    

DBCC CHECKDB CHECKTABLE - автоматическое исправление поврежденных индексов и оповещение о повреждении баз данных SQL на e-mail

Администрирование СУБД Тестирование и исправление Абонемент ($m)

Проверка целостности баз данных SQL при помощи DBCC CHECKDB, автоматическое исправление поврежденных индексов в таблицах данных и оповещение о повреждении баз данных и результатах исправления на e-mail.

1 стартмани

19.06.2020    4207    2    itoptimum    0    

Настройка архивации баз MS SQL Server и мониторинг с помощью OneScript

Архивирование (backup) Системное администрирование OneScript Абонемент ($m)

Схемы архивации баз и мониторинга. Скрипт для архивации журналов транзакций с записью лога в текстовый файл. Скрипты для мониторинга состояния архивации с отправкой статуса на почту.

2 стартмани

01.05.2020    5008    4    info1i    2    

Ошибка "Для одного ссылочного кода существует более одной таблицы в базе данных" - как проще исправить

Администрирование СУБД Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

При обновлении платформы 1с 8.3.6.2100 на платформу 8.3.16.224 под УПП 1.3.138.1 возникла ошибка "Для одного ссылочного кода существует более одной таблицы в базе данных...". В интернете много есть информации по этой проблеме, в частности в публикации https://infostart.ru/public/1126277/ приведено ее решение, но оно довольно громоздкое. Есть вариант более простой

2 стартмани

28.04.2020    6105    5    Ион    3    

Резервное копирование и обслуживание баз данных 1С 8.3 на PostgreSQL

Архивирование (backup) Администрирование СУБД Абонемент ($m)

Резервные копии обязательны для 1С, особенно важно при большем документообороте. В статье я расскажу, как у нас организовано резервное копирование, обслуживание и восстановление из копии базы 1С 8.3, работающей на PostgreSQL

1 стартмани

31.01.2020    8447    28    kolianus    2    

Удаленное администрирование (AmmyAdmin)

Универсальные обработки Удаленное управление v8 v8::УФ 1cv8.cf Абонемент ($m)

Разрабатывалась для "малоопытных пользователей", которым сложно понять/найти программу, которую их просят запустить. Данную обработку легко интегрировать в любую конфигурацию и вывести кнопку запуска в удобное место. Либо просто запустить через меню: Файл -> Открыть.

1 стартмани

09.01.2020    8001    5    impulse_1010    18    

Транслятор запросов 1С в SQL

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 v8::Запросы 1cv8.cf Абонемент ($m)

Инструмент для трансляции запросов платформы 1С в SQL, а также их диагностики.

10 стартмани

07.01.2020    23875    184    YPermitin    89    

Работа с базами данных 1С в SQL Server Management Studio (Расширение для SSMS)

Администрирование СУБД Производительность и оптимизация (HighLoad) Администрирование данных 1С Структура метаданных v8 Абонемент ($m)

Расширение позволяет просматривать связи объектов метаданных и таблиц БД, сгруппированные данные (по группам метаданных) об используемом дисковом пространстве и выполнять трансляцию SQL текста запроса в термины 1С. И бонусом - при наведении курсора мыши на таблицу или поле показывает назначение объекта в терминах 1С.

10 стартмани

27.11.2019    15610    44    akpaevj    46    

Закрытие незавершенных сеансов

Сервисные утилиты Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

Как удалять потерянные сеансы пользователей, чтобы они не мешали работе. Обработка протестирована на платформе версии 8.3.13.1644.

1 стартмани

20.09.2019    24261    89    AnatolPopov    12    

Создание пользователей системы взаимодействия

Обработка справочников Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Простенькая команда по созданию пользователей в системе взаимодействия на базе всех пользователей информационной базы 1С.

1 стартмани

12.12.2018    5199    9    da_1c    0    

1С в Windows docker контейнерах

Администрирование данных 1С docker Windows v8 Абонемент ($m)

Создаем Docker-контейнер для windows-версии 1C. Контейнеры позволяют подготовить рабочую среду на любой актуальной версии windows. Благодаря данной технологии можно беспрепятственно запускать требуемую версию сервера 1С или несколько серверов различных версий на одном сервере.

1 стартмани

02.10.2018    30138    43    lishniy    42    

Анализ настроек кластеров 1С (+ менеджер файлов на сервере)

Сервисные утилиты Администрирование СУБД v8::УФ 1cv8.cf Абонемент ($m)

Итак, у вас количество баз давно перевалило за десяток. Все эти базы раскиданы по кластерам. К тому же и версии платформы 1С у этих баз разные. Ну а вы, к несчастью - администратор всего этого хозяйства. К несчастью, потому что вы администратор 1С. А это необычный администратор. Случается так, что вы не имеете прав локального администратора, а консоль сервера приложений на вашем рабочем месте не установлена. Но не беда, поставить ее вам готовы уже завтра-послезавтра.

10 стартмани

26.12.2015    30140    75    zenechka    33    

Скрипт для выгрузки информационной базы

Архивирование (backup) Скрипты автоматизации Администрирование СУБД v8 Россия Абонемент ($m)

Скрипт позволяет произвести выгрузку информационной базы 1С клиент-серверного варианта.

1 стартмани

06.11.2015    35493    15    bashirov.rs    24