arkuznetsov / hirac Goto Github PK
View Code? Open in Web Editor NEWREST API для получения информации о кластере сервера 1С и управления объектами кластера
License: Mozilla Public License 2.0
REST API для получения информации о кластере сервера 1С и управления объектами кластера
License: Mozilla Public License 2.0
При запуске OneScript.Web получаем ошибку Unknown directiveИспользовать ("model"
Что не так ?
В документации указано, что образ по умолчанию: oscript/hirac:latest
А в команде ниже указан образ: demoncat/hirac:latest
Это немного сбивает с толку при запуске.
Для полного счастья не хватает информации об используемых лицензиях в разрезе: сервер лицензирования, база, приложение, спящий | не спящий сеанс получивший лицензию
Проблема с отображением русского языка.
Режим запуска: в контейнере, на Ubuntu.
Пример ответа в браузере:
"name": "╨Ы╨╛╨║╨░╨╗╤М╨╜╤Л╨╣ ╨║╨╗╨░╤Б╤В╨╡╤А", "lifetime-limit": 0, "max-memory-size": 0, "security-level": 0, "session-fault-tolerance-level": 0,
Привет
группа ошибок
расскатал hirac на англоязычной версии Win,
"expected label name, got "INVALID""
конфа прометея
- job_name: 'stat_1c'
scrape_interval: 60s
scrape_timeout: 20s
params:
format: ['prometheus']
dim: ['_all']
static_configs:
- targets: ['10.0.12.110:5005']
metrics_path: '/counter/session'
hirac с develop ветки, ибо с обычной других куча ошибок
я как инженер по инфраструктуре хочу иметь "дырку" для подключения прометея
ожидаемый конечный результат выглядит примерно так - если сходу
cat prometeus-server.yaml
scrape_configs:
- job_name: hirac-job
static_configs:
- targets: ['hirac-host:9091']
scrape_interval: 1s
пока мысли такие, чтобы пробросить это дело в OScript.Web - то есть обернуть метод например отсюда https://github.com/prometheus-net/prometheus-net
в некую фигню типа
ИмяМетрикиАнгл = "licence-count";
ИмяКонтекста="job=hirac-srv-app-01";
ИмяКонтура="instance=ones-servers";
ЗначениеМетрики=ПолучитьТекущееКоличествоЛицензииЧерезHIRAC();
КоллекцияМетокМетрики = Новый Структура(
"russian-metric-name","Количество использованных клиентских лицензий 1С"
);
АдаптерМетрикМенеджер.ОпубликоватьМетрику(
ИмяМетрикиАнгл , ИмяКонтекста,ИмяКонтура, КоллекцияМетокМетрики, ЗначениеМетрики
);
Был день в феврале, когда на хабе отсутствовал образ с тегом latest.
Не было возможности собрать образ, приходилось вручную прописывать.
Было бы неплохо, все-таки использовать стабильную версию, а не latest.
Существует проблема
При большом количестве информационных баз в кластере очень долго выполняется запрос на получение всех полей конкретной информационной базы.
http://localhost:5005/infobase/list?filter_label=Alexander&field=_all
Происходит это из-за того, что фильтр по полям срабатывает уже после получения всей информации по объектам. Для каждой базы в кластере сначала вызывается функция ЗаполнитьРасширенноеОписаниеОбъекта
, а уже после работает фильтр.
Если у пользователя нет прав на какие-нибудь базы, это еще замедляет выполнение запроса и приводит вот к таким ошибкам:
Хотелось бы иметь следующую функциональность
Хотелось бы, чтобы была возможность предварительной фильтрации объектов, например, по идентификатору или представлению. Это ускорило бы получение информации по конкретному объекту, в частности по конкретной информационной базе.
Описание проблемы
Использую hirac на машине, где вообще не установлена какая-либо СУБД. RAS запущен на этой же машине, но смотрит он на кластер, расположенный на другом сервере.
racsettings.json по умолчанию.
Обработка запроса списка сессий происходит довольно долго, около 15 секунд. В ответе на запрос нет нормального представления информационной базы
Причина
Директива Продолжить вот в этом месте приводит к тому, что переменная ОписанияОбъектовКластеров не заполняется. В момент обновления кэша информационных баз данная переменная является ссылкой на глобальную переменную модуля ОписанияИнформационныхБаз, соответственно кэш всегда остается пустым и для каждой сессии заново запрашивается информация по всем базам, и не заполняется поле сессии label
Надеюсь понятно описал ))
В Dockerfile указан entrypoint
ENTRYPOINT ["/var/osp.net/artifact/core/linux-x64/OneScript.WebHost"]
Но на самом деле такого файла там нет, а есть файл:
ENTRYPOINT ["/var/osp.net/OneScript.WebHost"]
Не могу настроить hirac, действую по инструкции, конфиг дефолтный, через rac.exe и irac - работает, опрашивается.
Пробовал на Windows и Linux.
Пробовал разные релизы 1с, в данный момент 8.3.22.1709.
Оскрипт - 1.8.3.
OneScript.Web 0.9.1.
При попытке обратиться по ссылке http://127.0.0.1:5005/cluster/list заканчивается ошибкой:
`
An unhandled exception occurred while processing the request.
RuntimeException: {Модуль C:\Users\user\Desktop\1c\hirac\src\oscript_modules\fluent\src\internal\Модули\ПроцессорыКоллекцийСлужебный.os / Ошибка в строке: 115 / Неверное значение аргумента}
ЭтоФункция = Интерфейс.ПолучитьКартуИнтерфейса()[0].ЭтоФункция;
ScriptEngine.HostedScript.Library.ValueTable.ValueTable.Get(int index)
Stack Query Cookies Headers Routing
RuntimeException: {Модуль C:\Users\user\Desktop\1c\hirac\src\oscript_modules\fluent\src\internal\Модули\ПроцессорыКоллекцийСлужебный.os / Ошибка в строке: 115 / Неверное значение аргумента} ЭтоФункция = Интерфейс.ПолучитьКартуИнтерфейса()[0].ЭтоФункция;
ScriptEngine.HostedScript.Library.ValueTable.ValueTable.Get(int index)
ScriptEngine.HostedScript.Library.ValueTable.ValueTable.GetIndexedValue(IValue index)
ScriptEngine.Machine.Variable+VariableReference.get_DataType()
ScriptEngine.Machine.MachineInstance.ResolveProp(int arg)
ScriptEngine.Machine.MachineInstance.MainCommandLoop()
ScriptEngine.Machine.MachineInstance.ExecuteCode()
ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, int methodIndex, IValue[] arguments)
ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallAsFunction(int methodNumber, IValue[] arguments, out IValue retValue)
ScriptEngine.Machine.MachineInstance.ResolveMethodFunc(int arg)
ScriptEngine.Machine.MachineInstance.MainCommandLoop()
ScriptEngine.Machine.MachineInstance.ExecuteCode()
ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, int methodIndex, IValue[] arguments)
ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallScriptMethod(int methodIndex, IValue[] parameters)
ScriptEngine.Machine.Contexts.UserScriptContextInstance.OnInstanceCreation()
ScriptEngine.Machine.Contexts.AttachedScriptsFactory.ScriptFactory(string typeName, IValue[] arguments)
ScriptEngine.Machine.MachineInstance.NewInstance(int argCount)
ScriptEngine.Machine.MachineInstance.MainCommandLoop()
ScriptEngine.Machine.MachineInstance.ExecuteCode()
ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, int methodIndex, IValue[] arguments)
ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallAsFunction(int methodNumber, IValue[] arguments, out IValue retValue)
ScriptEngine.Machine.MachineInstance.ResolveMethodFunc(int arg)
ScriptEngine.Machine.MachineInstance.MainCommandLoop()
ScriptEngine.Machine.MachineInstance.ExecuteCode()
ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, int methodIndex, IValue[] arguments)
ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallAsFunction(int methodNumber, IValue[] arguments, out IValue retValue)
ScriptEngine.Machine.MachineInstance.ResolveMethodFunc(int arg)
ScriptEngine.Machine.MachineInstance.MainCommandLoop()
ScriptEngine.Machine.MachineInstance.ExecuteCode()
ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, int methodIndex, IValue[] arguments)
ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallScriptMethod(int methodIndex, IValue[] parameters)
ScriptEngine.Machine.Contexts.UserScriptContextInstance.OnInstanceCreation()
ScriptEngine.Machine.Contexts.AttachedScriptsFactory.ScriptFactory(string typeName, IValue[] arguments)
ScriptEngine.Machine.MachineInstance.NewInstance(int argCount)
ScriptEngine.Machine.MachineInstance.MainCommandLoop()
ScriptEngine.Machine.MachineInstance.ExecuteCode()
ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, int methodIndex, IValue[] arguments)
ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallScriptMethod(int methodIndex, IValue[] parameters)
ScriptEngine.Machine.Contexts.UserScriptContextInstance.OnInstanceCreation()
ScriptEngine.Machine.Contexts.AttachedScriptsFactory.ScriptFactory(string typeName, IValue[] arguments)
ScriptEngine.Machine.MachineInstance.NewInstance(int argCount)
ScriptEngine.Machine.MachineInstance.MainCommandLoop()
ScriptEngine.Machine.MachineInstance.ExecuteCode()
ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, int methodIndex, IValue[] arguments)
ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallScriptMethod(int methodIndex, IValue[] parameters)
ScriptEngine.Machine.Contexts.UserScriptContextInstance.OnInstanceCreation()
ScriptEngine.Machine.Contexts.AttachedScriptsFactory.ScriptFactory(string typeName, IValue[] arguments)
ScriptEngine.Machine.MachineInstance.NewInstance(int argCount)
ScriptEngine.Machine.MachineInstance.MainCommandLoop()
ScriptEngine.Machine.MachineInstance.ExecuteCode()
ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, int methodIndex, IValue[] arguments)
ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallAsFunction(int methodNumber, IValue[] arguments, out IValue retValue)
ScriptEngine.Machine.MachineInstance.ResolveMethodFunc(int arg)
ScriptEngine.Machine.MachineInstance.MainCommandLoop()
ScriptEngine.Machine.MachineInstance.ExecuteCode()
ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, int methodIndex, IValue[] arguments)
ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallAsFunction(int methodNumber, IValue[] arguments, out IValue retValue)
ScriptEngine.Machine.Contexts.ReflectedMethodInfo.InvokeDirect(IRuntimeContextInstance instance, IValue[] parameters)
OneScript.WebHost.Application.ScriptedController.ResultAction() in ScriptedController.cs
lambda_method(Closure , object , object[] )
Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(object target, object[] parameters)
Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
`
ЧЯДНТ?
При запуске образа в k8s (версия 1.20, рантайм containerd) возникает проблема:
Unhandled exception. ScriptEngine.Compiler.SymbolNotFoundException: {Модуль /app/model/modules/ПодключенияКАгентам.os / Ошибка в строке: 34,37 / Неизвестный символ: ТипыОбъектовКластера}
ПоляОбъекта = ТипыОбъектовКластера.СвойстваОбъекта(ТипОбъекта);
проблема возникает при инициализации пода, то есть под (контейнер) падает.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.