Скрипт сбора параметров текущих сеансов 1С с отправкой в Elastic search

Администрирование - Системное

Вы мониторите количество подключений к вашей базе 1С не открывая Конфигуратор, Консоль или Предприятие? Если нет и хотите начать, то удобно вызывать периодически внешний скрит и складывать полученные данные в удобный визуализатор.

Скрипт на oscript. Выполняет обращение к службе RAS, собирает информацию о текущих сеансах указанной информационной базы и отправляет их в Elasticsearch. 

Дальше можно агрегировать любую аналитику как по количеству сеансов, так и в других разрезах (тип клиента, длительность и пр.)

Пример запуска скрипта из командной строки: 
oscript ".\src\СчиталкаСеансов.os" "C:\Program Files\1cv8\8.3.9.2170\bin\rac.exe" "myRASservice:1545" "infobaseName" elastic.server.local

Проверено на версии платформы 8.3.9.2170.

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

Наименование Файл Версия Размер
Скрипт сбора параметров текущих сеансов 1С с отправкой в Elastic search
.os 15,46Kb
02.11.17
14
.os 15,46Kb 14 Скачать

См. также

Комментарии
1. Сергей Рудаков (fishca) 1090 30.10.17 13:12 Сейчас в теме
2. Андрей Овсянкин (Evil Beaver) 4761 30.10.17 13:15 Сейчас в теме
НЯ!!!

А за односкрипт - тройное НЯ (два коротких, одно длинное) !!!
chagchen; +1 Ответить
3. Сергей Новиков (chagchen) 47 30.10.17 13:47 Сейчас в теме
(2)спс, надо это дело до opm еще допилить, вчера уже лень было
4. Олег Филиппов (comol) 3365 31.10.17 01:07 Сейчас в теме
Велосипед? ЦКК не пробовали для этого использовать?
mitia.mackarevich; +1 3 Ответить
5. Сергей Новиков (chagchen) 47 31.10.17 04:39 Сейчас в теме
(4)это же бесплатный велосипед ;)
Labotamy; +1 Ответить
6. Артур Аюханов (artbear) 915 31.10.17 10:23 Сейчас в теме
(4) ЦКК? :( ни о чем, трудно расширить, трудно доработать и т.п.
Bronislav; chagchen; +2 Ответить
9. Олег Филиппов (comol) 3365 31.10.17 19:27 Сейчас в теме
(6) Зачем расширять и дорабатывать средство МОНИТОРИНГА. Более того зачем его ПИСАТЬ? О_о...
11. Артур Аюханов (artbear) 915 31.10.17 20:08 Сейчас в теме
(9) Интересно, почему же так много средств мониторинга-то?
и постоянно добавляются новые метрики, адаптеры и прочее?
chagchen; +1 Ответить
36. Алексей Сосновый (Labotamy) 03.12.17 00:27 Сейчас в теме
Хочу собирать статистику по сеансам/соединениям в ELK. Варианты?
7. Татьяна Лустина (Silverbulleters) 159 31.10.17 11:13 Сейчас в теме
(4) Напомни пожалуйста сколько денежков стоит этот ваш ЦКК.

(0) злыдни - чего только не сделаешь чтобы beats не писать.
chagchen; +1 Ответить
8. Сергей Новиков (chagchen) 47 31.10.17 14:25 Сейчас в теме
(7) ЦКК 108 000 или в районе, но дело даже не в цене, это как из пушки по воробьям же стрелять
10. Олег Филиппов (comol) 3365 31.10.17 19:30 Сейчас в теме
(7) (8) Просто если уж заниматься то наверное полноценным чем-то...
12. Сергей Новиков (chagchen) 47 31.10.17 21:22 Сейчас в теме
(10) Олег, это простой ответ на простой вопрос. Зачем писать для этого тысячи строк кода?
13. Сергей Новиков (chagchen) 47 31.10.17 21:27 Сейчас в теме
(10)этот скрипт логично сравнивать с консолью, но не КИП. Что неполноценного в консоле-то?
14. Олег Филиппов (comol) 3365 01.11.17 00:03 Сейчас в теме
(13) Ну согласен согласен... не велосипед а бесплатный и интересный скейтборд :)
chagchen; +1 Ответить
38. Антон Стеклов (asved.ru) 33 16.01.18 16:49 Сейчас в теме
(4) ЦКК по сравнению со специализированными инструментами довольно плохой визуализатор. Я оттуда все, что хочу видеть на графиках, кидаю в Zabbix.
15. Юрий Дешин (blackhole321) 169 01.11.17 13:41 Сейчас в теме
А в чем преимущество Вашего подхода, по сравнению с использованием COM объектов из 1С или PowerShell или vbs?
Ведь это административные задачи, а знание PowerShell и vbs для администратора - must have. Хотелось бы понять, что получает администратор взамен времени, потраченного на изучение Вашего продукта?
17. Сергей Новиков (chagchen) 47 01.11.17 14:01 Сейчас в теме
(15) Продуктом я бы не стал называть 300 строчек кода ;)
А про преимущества оскрипта у авторов лучше почитать https://habrahabr.ru/post/301064/
Ну про кибану и эластик мы тут не говорим, верно?
18. Юрий Дешин (blackhole321) 169 01.11.17 14:13 Сейчас в теме
(16)
Да, про кибану и эластик не говорим, интерес представляет сам 1Script как среда автоматизации. Поскольку Вы ее используете, хотелось бы получить информацию из первых рук, почему Вы выбрали именно этот продукт для решения задачи мониторинга сессий из всего многообразия возможных вариантов.
19. Сергей Новиков (chagchen) 47 01.11.17 14:28 Сейчас в теме
(18) скажем, что мне нужен скрипт который будет работать одинаково как в windows, так и в linux.
Ну и 1с у меня "родной" язык ;)
22. Юрий Дешин (blackhole321) 169 01.11.17 14:43 Сейчас в теме
(19) Ну если только Вы хотите иметь один и тот же скрипт на Linux и на windows, однако из за различий в системах в общем случае они по всей видимости будут различными, даже написанные на одном языке.
24. борян петров (TODD22) 18 01.11.17 15:17 Сейчас в теме
(22)
почему Вы выбрали именно этот продукт для решения задачи мониторинга сессий

Общее владение кодом в команде если в ней все 1сники. Не нужно учить всем другие языки. Здесь дело не в том что кто то не сможет. А в том что если в команде 10 человек и VBA из всех владеет только один то как то не логично делать часть работы на VBA если есть общий инструмент.

Хотя мне кажется тот же Python освоить не сложно, профита больше и не варишься в одной технологии. Пользовался Оскриптом, но перешёл на Python.
20. Юрий Дешин (blackhole321) 169 01.11.17 14:36 Сейчас в теме
Напишите ваше сообщение
(16)
Спасибо за ссылку, статью прочел. Как то несколько странно читать, что одноэсники не в состоянии чего либо освоить кроме 1С :)
21. Артур Аюханов (artbear) 915 01.11.17 14:42 Сейчас в теме
(20)Освоить можно все, весь вопрос в использовании этих знаний.
Я сам периодически давно работал на VBS, JS и Powershell (много лет)
у меня даже был завершенный спец.проект на Powershell по релизному управлению базами 1С на розничных точках по всей стране.

Основная проблема - если пользоваться языком/средой периодически, то знания забываются.

При возвращении к Powershell каждый раз приходится вспоминать как сам язык и его особенности, так и команды и объекты библиотек :(
Это реально мешает в решении задач.
chagchen; +1 Ответить
25. Юрий Дешин (blackhole321) 169 01.11.17 15:24 Сейчас в теме
(21)Не могли бы Вы кратко очертить круг задач, которые Вы решаете с использованием данного инструмента?
Я правильно понимаю, что язык - это не копия 1С и там есть свои конструкции, расширения и библиотеки, основанные на классах .NET, и чтобы использовать его в более менее сложных задачах Вам необходимо создавать и использовать классы .NET?
26. Артур Аюханов (artbear) 915 01.11.17 15:49 Сейчас в теме
(25)Есть поддержка большинства типовых объектов библиотеки 1С - Массив, Соответствие и т.п.
Нет поддержки прикладной модели 1С - справочники, документы и т.п., т.е. то, что мы видим в Конфигураторе

т.е. в скриптах 1скрипт мы работает с теми же хорошо известными нам классами 1С.

Есть и расширения библиотек - например, добавлены регулярные выражения и другое.
Но это не расширения языка, а именно расширения библиотек.

.NET-классы также можно юзать, если это нужно.
chagchen; +1 Ответить
27. Юрий Дешин (blackhole321) 169 01.11.17 17:34 Сейчас в теме
(26)
Скачал скрипт, посмотрел. Честно говоря чувства смешанные :) т.к. 90% скрипта на PowerShell уложатся в десяток строк.
Чтобы не мудрствовать лукаво, взял за основу https://infostart.ru/public/202805/ , скопипастил, подрихтовал и оттестировал.

Как пример - соединение с сервером и получение данных о сессиях:
$V8XCom = New-Object -COMObject "V83.COMConnector"

$СтрокаПодключения = "tcp://localhost:1540"
$АгентСервера = $V8XCom.ConnectAgent($СтрокаПодключения)

$Кластеры = $АгентСервера.GetClusters()
$ВыбранныйКластер = $Кластеры[0]

$ИмяПользователя = "Администратор"
$Пароль = "123456"
$АгентСервера.Authenticate($ВыбранныйКластер, $ИмяПользователя, $Пароль) 

$Сессии = $АгентСервера.GetSessions($ВыбранныйКластер)

# Группируем, анализируем, сохраняем в БД etc.
# ...
Показать


Я понимаю, что это не кроссплатформенно и все же.

Посмотрел функцию ЗапуститьПроцесс (надеюсь, Вы не будете возражать, если я скопирую ее в сообщение)

Функция ЗапуститьПроцесс(Знач СтрокаВыполнения)
	Перем ПаузаОжиданияЧтенияБуфера;
	
	ПаузаОжиданияЧтенияБуфера = 1;
	
	Процесс = СоздатьПроцесс(СтрокаВыполнения,,Истина);
	Процесс.Запустить();
	
	Текст = Новый ТекстовыйДокумент;

	Пока Истина Цикл

		ВывестиДанныеПроцесса(Процесс, Текст);

		Если Процесс.Завершен Тогда
			Процесс.ОжидатьЗавершения(); // финальный сброс буферов
			ВывестиДанныеПроцесса(Процесс, Текст);
			Прервать;
		КонецЕсли;

		Приостановить(ПаузаОжиданияЧтенияБуфера);
		
	КонецЦикла;

	Если Процесс.КодВозврата = 0 Тогда
	Иначе
		Текст.ВставитьСтроку(1, "Сообщение от RAS/RAC: "); 
		ВызватьИсключение Текст.ПолучитьТекст();
	КонецЕсли;	
	
	Возврат Текст;

КонецФункции
Показать


Я правильно понимаю, что СоздатьПроцесс() и дальнейшие манипуляции - это и есть расширения библиотеки т.е. фактически создание класса .NET System.Diagnostics.Process (https://msdn.microsoft.com/ru-ru/library/system.diagnostics.process(v=vs.110).aspx) и мне необходимо изучать все эти расширения?
28. Сергей Новиков (chagchen) 47 01.11.17 21:24 Сейчас в теме
(27) не очень понял про смешанные чувства, и чем пара строк powershella короче пары строк на 1с? )))
29. Юрий Дешин (blackhole321) 169 01.11.17 22:41 Сейчас в теме
(28)Дык в том то и дело, что там не пару строк (в скрипте из публикации). Если я правильно понял его содержание, там происходит запуск консольного приложения, отлавливается его вывод (stdout), а дальше происходит его парсинг. И 80% скрипта из 300 строк существуют для реализации этого функционала. Соответственно возникает вопрос, что быстрее и дешевле, написать и отладить 10 строк на PowerShell или vbs или 200 на 1Script. К тому же если я правильно понимаю, для более менее серьезного взаимодействия с внешним миром необходимо использовать .NET. Это приводит к тому, что необходимо изучать некие дополнительные библиотеки, встроенные в язык, либо библиотеки .NET или прикладные COM об'екты. Поэтому возникают смешанные чувства, от непонимания преимуществ, кроме как русскоязычный синтаксис похожий на синтаксис 1С (что при прямом использовании классов .NET скорее не плюс т.к. имена методов и свойств англоязычные). Конечно это мое сугубо личное мнение и оно не подвергает сомнению ценность проекта, однако по моим первым впечатлениям, эта ценность лежит в плоскостях отличных, от задач администрирования etc.
30. Сергей Новиков (chagchen) 47 01.11.17 23:03 Сейчас в теме
(29) моя реализация не требует регистрации Com-компонент. Давайте усложним задачу, что если у вас на одной машине установлены серверы 1с 8.2 и 8.3 и вы хотите следить за потреблениями сеансами памяти, что бы проактивно определять проблему? Тогда пляски с comcntr.dll и коэффициэнт wtf перевесит чашу весов ;)
31. Юрий Дешин (blackhole321) 169 02.11.17 08:28 Сейчас в теме
(30)
Ну давайте усложним. Я воспользуюсь методом, описанным https://infostart.ru/public/685924/ и поменяю тип при создании com об'екта.
32. Сергей Новиков (chagchen) 47 02.11.17 09:56 Сейчас в теме
33. Юрий Дешин (blackhole321) 169 02.11.17 11:38 Сейчас в теме
(32)
И Вам удачи, спасибо за уделенное мне время и извините если что не так :).
34. Олег Филиппов (comol) 3365 03.11.17 23:34 Сейчас в теме
(21)
При возвращении к Powershell каждый раз приходится вспоминать как сам язык и его особенности

При возвращении к PowerShell Каждый раз хочется удариться головой об стенку и биться об неё пока все воспоминания об этом хм... "языке" не выйдут из головы. По синтаксису c PowerShell может сравниться разве что BrainFuck. Если мне нужно что-то тяжелое и сложное я проще на C# программку накидаю, если что-то простое - напишу bat-ник. Что-то среднее, заюзаю WSH. Но Microsoft усиленно впихивает нам в глотку PowerShell... Добавляю туда админки SQL и Exchange.
Иногда так и хочется плюнуть и сказать - "стану .... линуксоидом" :) (с)
35. Юрий Дешин (blackhole321) 169 05.11.17 11:13 Сейчас в теме
(34)Довольно мм... необычное на мой взгляд мнение для человека, который использует c# и wsh :) Вы не сгущаете краски:)?
37. Андрей Овсянкин (Evil Beaver) 4761 16.01.18 15:19 Сейчас в теме
(34) Олег, может ты все-таки перейдешь уже на односкрипт? ;)
39. Олег Филиппов (comol) 3365 16.01.18 19:48 Сейчас в теме
(37) Да я что-то смотрю какое-то засилье OneScript на Infostart-e :). Даж потроллить хочется :)
Нет! Я не 1С-ник :) я это могу сделать на C#, bat, wsh.
А недавно я тут сортировку пузырьком на haskell написал :))) Теперь мне даже 1С не страшен :)))
23. Сергей Новиков (chagchen) 47 01.11.17 15:15 Сейчас в теме
(20) Артур ниже отлично ответил
Оставьте свое сообщение