slothfk / 1c_zabbix_template_ce

Шаблон Zabbix для мониторинга кластера серверов 1С Предприятия 8.3
MIT License
151 stars 53 forks source link

5 кластеров на одном сервере #100

Closed tiresias0din closed 1 year ago

tiresias0din commented 1 year ago

Здравствуйте, подскажите пожалуйста как лучше подойти к вопросу и сделать возможным следующее

У меня развернут в организации отдельный сервер лицензирования и с него бы я хотел получать информацию о лицензиях На нем есть 5 кластеров разных версий 8.3 и ras в том же кол-ве Мне бы хотелось видеть, сколько лицензий выдал каждый кластер, в дефолтной настройке мне доступна эта возможность для одного кластера А как побыстрее и менее затратно сделать тоже самое и для остальных

slothfk commented 1 year ago

Все сервисы ras работают на разных портах? Центральные сервера указанных кластеров на одном физическом сервере?

tiresias0din commented 1 year ago

Когда устанавливал ras, сажал все версии в пул портов, под каждый кластер отдельно.

Выглядит так .......................................... @echo off rem %1 - полный номер версии 1С:Предприятия set CtrlPort=1540 set AgentName=localhost set RASPort=1545 set SrvcName="!ras_1545" set BinPath="\"C:\Program Files\1cv8\8.3.13.1513\bin\ras.exe\" cluster --service --port=%RASPort% %AgentName%:%CtrlPort%" set Desctiption="!ras_1545_8.3.13.1513" sc stop %SrvcName% sc delete %SrvcName% sc create %SrvcName% binPath= %BinPath% start= auto displayname= %Desctiption% ........................................... @echo off rem %1 - полный номер версии 1С:Предприятия set CtrlPort=2540 set AgentName=localhost set RASPort=2545 set SrvcName="!ras_2545" set BinPath="\"C:\Program Files\1cv8\8.3.18.1520\bin\ras.exe\" cluster --service --port=%RASPort% %AgentName%:%CtrlPort%" set Desctiption="!ras_2545_8.3.18.1520" sc stop %SrvcName% sc delete %SrvcName% sc create %SrvcName% binPath= %BinPath% start= auto displayname= %Desctiption% ........................................... И так далее

Центральные сервера на которых БД, на других серверах в той же сети, у каждого такого сервера настроено обращение к центральному серверу лицензий

slothfk commented 1 year ago

Что-то в этой схеме меня смущает, возможно я что-то не понимаю до конца ...

  1. На сервере лицензирвоания не должно быть запущено RAS, ни одного!
  2. RAS запускается на центральных серверах кластеров!

При таком подходе, у вас все получится без каких-либо усилий, если RAS работает на одинаковом порту (например 1545) на всех центральных серверах! Именно из такой логики исходит скрипт собирающий информацию о лицензиях. Он из списка процессов формирует список центральных серверов кластеров, в которых участвует сервер лицензирования, и потом обращается по имени найденного сервера и порту, указанному в макросе {$RAS_PORT} к сервису RAS, "обслуживающему" данный центральный сервер. Для того чтобы иметь сбоор метрик в "разрезе" кластеров, необходимо включить обнаружение кластеров на узле наблюдаения в zabbix

tiresias0din commented 1 year ago

С ras я мог не до конца изучить вопрос. Службы я подготовил, но на сервере лицензирования пока не ставил. Мне надо уточнить. Серверов у нас много, и на каждом развернут свой кластер в кол-ве от 1 до 5шт. Все центра. кластеры обращаются к одному серверу лицензирования. изображение На сервере лицензирования подняты кластеры. Если нацеливаю шаблон на него, с одного кластера вижу общее кол-во отданных лицензий. Но это с одного, так ведь?

Что сейчас я могу сделать? Я зашел на центральные сервера, служба ras здесь развернута в единственном экземпляре. Каким шаблоном целить в узел? И в какой? Например я сначала пробовал нацелить на центральный сервер шаблон 1C Enterprise License Server, и включить в правилах обнаружения [1С/Лицензии] Кластеры По умолчанию я вижу график, который показывает только с одного кластера, и не берет в расчет другие

изображение

Далее я проделал туже операцию на сервере лицензирования изображение

При добавлении кластерной, в узле центрального сервера появляется такой график, использованные лицензии не показывает, а при активации [1С/Лицензии] Кластеры на сервере лицензии, график не рисуется вовсе изображение

Настройки макросов, служба запущена от самой ОС изображение

Как результат мне бы хотелось видеть общее кол-во лицензий, что отдает сервер лицензирования на узле сервера лицензий

slothfk commented 1 year ago

Каким шаблоном целить в узел? И в какой? Например я сначала пробовал нацелить на центральный сервер шаблон 1C Enterprise License Server, и включить в правилах обнаружения [1С/Лицензии] Кластеры

Шаблон 1C Enterprise License Server надо "вешать" на узел, который является сервером лицензирования (вроде логично из названия)! На центральных серверах должны быть RAS для своих кластеров со своей версией платформы! На всех центральных RAS должен работать на одинаковом порту. В заббиксе для сервера лицензирования вы в макросе {$RAS_PORT} указываете порт на котором запущен RAS на центральных серверах. Если он стандартный 1545, то ничего менять не надо!

После того, как отработает обнаружение по кластерам на сервере лицензирования, в zabbix-е будут "собираться"/отображатся данные в разрезе кластеров ...

slothfk commented 1 year ago

Серверов у нас много, и на каждом развернут свой кластер в кол-ве от 1 до 5шт.

Упустил этот момент ... Если у вас на одном центральном сервере несколько служб 1С разных версий, то простого решения ситуации у меня пока нет, увы ...

tiresias0din commented 1 year ago

Будут ли какие-то в принципе предложения? До этого ограничивался подсчетом смотря в самом кластере, сколько идет обращений к серверу лицензий

slothfk commented 1 year ago

Будут ли какие-то в принципе предложения?

Нужны архитектурные изменения "шаблона", полагаю ... Для такого сценария "малой кровью" не обойдешься :/

Можно попробовать создать несколько узлов для сервера лицензирования и указывать у них разные значения макроса {$RAS_PORT}, но, наверное, такое себе "решение" ...

tiresias0din commented 1 year ago

Мне в принципе любой вариант подойдет которым удобно просматривать было бы именно кол-во задействованных лицензий с сервера лицензирования с такого-то порта

Чтобы понимать, как скоро упремся в потолок.

Раньше я пробовал завести один и тот-же узел меняя макрос, но он ничего не добавляет изображение

Другой вариант несколько агентов, но тут я ограничен двумя агентами.

slothfk commented 1 year ago

Раньше я пробовал завести один и тот-же узел меняя макрос, но он ничего не добавляет

Тогда надо все эелементы данных и обнаружения перевести с активного агента на обычного изображение

tiresias0din commented 1 year ago

Попробовал сделать следующее image а после создать доп несколько узлов таких-же, поменял порт макроса на каждом в качестве примера image но он отображает 0левое значение за все время существования на этих узлах. image Кроме первого, 1ый продолжает исправно функционировать.

slothfk commented 1 year ago

если вы на севере лицензировния запускаете скрипт по типу

$ 1c_license_server.sh used 1545 1.5
$ 1c_license_server.sh used 2545 1.5
$ 1c_license_server.sh used 3545 1.5
...

Каков вывод в каждом из случаев?

1ый продолжает исправно функционировать.

С каким значеним макроса?

tiresias0din commented 1 year ago

image По порту 2545 иногда тоже значения по 0м, выдает. Он и работает исправно, имеет только унаследованные макросы, в нем я выставлял порт 2545. image

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

slothfk commented 1 year ago

Все, я понял в чем "косяк" В текущей реализации данная схема работать не будет, так как кэш кластеров будет один для всех вариантов и будет постоянно затираться данными полученными для разных ras Надо подумать как исключить такую "коллизию"

tiresias0din commented 1 year ago

К сожалению самому мозгов пока не хватит и времени в это вникнуть, и как это все переделать. Так что буду ждать обновлений от Вас, если они предвидятся конечно.

slothfk commented 1 year ago

В дополнение к #72

tiresias0din commented 1 year ago

Я по итогу сделал мониторинг сессий в разрезе разных RAS основываясь на старом шаблоне из интернета. Дописал скрипт на питоне и перевел. Если кому надо, пишите, поделюсь. изображение изображение

Вот был этот проект. Инструкция тут не полная и работает только на одном порту. https://github.com/kulpin74/zabbix-1c

slothfk commented 1 year ago

Я по итогу сделал мониторинг сессий в разрезе разных RAS основываясь на старом шаблоне из интернета. Дописал скрипт на питоне и перевел.

А модель работы какая? Несколько узлов наблюдения в zabbix?

tiresias0din commented 1 year ago

Один агент на узле. Заббикс запускает и дергает данные из скрипта, поправил скрипт, чтобы он опрашивал все интересующие меня порты, опция динамична. Да поправил шаблон на корректное отображение данных в более понятном формате. Я пока гит еще не веду, по этому проекта не отразил. Оставил управление динамикой со стороны скрипта, чтобы не ковырять сильно шаблон. Опрос идет по командам в ras. А графики по быстрому наваял, есть возможность просматривать по формуле суммирования изображение А так-же отдельно вывел себе по значениям для удобства подсчета между кластерами на одном узле изображение

slothfk commented 1 year ago

Понял, спасибо!

Функционал наблюдения за несколькими службами на одном хосте в рамках данного проекта в процессе реализации, надеюсь скоро порадую "страждущих" :)

tiresias0din commented 1 year ago

Это хорошо, посмотрю потом обязательно

Brotherwoods commented 1 year ago

Шаблон 1C Enterprise License Server надо "вешать" на узел, который является сервером лицензирования (вроде логично из названия)!

Вот это должно быть описано в документации. Поскольку это совсем не очевидно и ниоткуда логически не вытекает.

На центральных серверах должны быть RAS для своих кластеров со своей версией платформы! На всех центральных RAS должен работать на одинаковом порту.

Типичная ситуация- когда на одном сервере находится несколько кластеров разнесенных по разным портам. Соответственно несколько RAS на разных портах. Условность которую привносит желание иметь автоконфигурирование делает эти конфиги просто неработоспособными. Поскольку данный пункт невыполним. Вы же не думаете что пользователь будет менять архитектуру инфраструктуры под шаблон скрипта мониторинга? :)

Можно ли (какой-то опцией?) убрать вообще вот это:

Он из списка процессов формирует список центральных серверов кластеров,

И использовать как исходные данные для подсчета лицензий и кластеров просто список вида: сервер_с_полным_ДНС_именем:порт_RAS ?

Этот список не меняется годами... зачем каждую минуту автопроверять список RAS, которые не меняются годами??

slothfk commented 1 year ago

это совсем не очевидно и ниоткуда логически не вытекает.

это "логически вытекает" из названия, разве нет?

Поскольку данный пункт невыполним.

На текущий момент это решается указанием используемых портов RAS в макросе {$RAS_PORTS} через запятую!

Вы же не думаете что пользователь будет менять архитектуру инфраструктуры под шаблон скрипта мониторинга? :)

Коллега, Вы пользуетесь бесплатным продуктом, который создавался на определенной инфраструктуре, и не претендует на универсальность! Хотите добавить функциональности? Пожалуйста, включайтесь в процесс, дорабатывайте!

Этот список не меняется годами... зачем каждую минуту автопроверять список RAS, которые не меняются годами??

У вас такой сценарий применения, у нас другой ... Инструмент создан отталкиваясь от имеющегося у нас сценария применения. Да, он не универсален и не покрывает все возможные варианты испльзования ... О чем спор то?

Повторю еще раз, хотите что-то изменить, все в ваших руках! ;)