Closed Butuff closed 11 months ago
т.к. для данной метрики нужны логин и пароль от базы, эспортер получает их их http сервиса, который разработчик поддерживающий базы 1С может реализовать на 1С. Сервис должен возвращать ответ в виде json (пример приведен). Если вам данная метрика не нужна, можете убрать ее из настройки
Метрика нужна, т.е. надо сначала реализовать http сервис на стороне 1С чтобы он возвращал состояние блокировки регламентных заданий? А какая верная конструкция будет в файле настроек чтобы обратиться к сервису? и сервис должен вернуть 1 или 0, этого достаточно?
сервис должен вернуть логин/пароль к базе, в примере конфига же написано https://github.com/LazarenkoA/prometheus_1C_exporter/blob/9f087b4478d2edaf97b8607fcc28f881a180b301/examples_settings.yaml#L47
А к базе в примере экспортер обращается через https://github.com/LazarenkoA/prometheus_1C_exporter/blob/9f087b4478d2edaf97b8607fcc28f881a180b301/examples_settings.yaml#LL57C1-L60C14
? Чтобы получить лог/пас
это урл сервиса который вернет жсон с логпасом, сервис может быть написан на чем угодно (в том числе и на 1С)
Понял, спасибо большое! Будем пробовать 8)
Что-то не получается =\ , если не трудно, то подскажите, пожалуйста, что делаю не так. На стороне 1С создали http сервис, проверили его через фиддлер (есть авторизация), он все возвращает корректно, разместили его в одной из баз и он возвращает креды к этой базе.
Прописали сервис в настройках экспортера. DBCredentials: # Не обязательный параметр URL: https://xxxxxx/xxxxxx/hs/G_DO_Creds/1 User: "admin" Password: "xxxxx"
В выдаваемых метриках не встречается вхождение "SheduleJob"
В логах с режимом Trace видно такие записи по всем базам: {"Name":"SheduleJob","level":"trace","msg":"Запрашиваем информацию для базы test1","time":"2023-05-16T16:52:29+03:00"} {"Name":"SheduleJob","level":"trace","msg":"Запрашиваем информацию для базы test_2","time":"2023-05-16T16:52:29+03:00"} В том числе и для базы с размещенным http сервисом.
Но в логах почему то только одна запись с ошибкой и по базе в которой не размещен сервис.... {"Name":"SheduleJob","error":"для базы test3 не определен пользователь","level":"error","msg":"","time":"2023-05-16T16:52:34+03:00"}
Видимо не очень понимаю логики работы экспортера в этом случае. Может нужно в этом сервисе вернуть массивом имена и лог/пасс баз?
приложи скрин браузера в котором видна ссылка на твой сервис и что б на странице был результат сервиса (жсон)
Через браузер не отрабатывает, после ввода логина/пароля выдает ошибку:
А фидлером все отрабатывает замечательно:
ну видимо в этом причина. Вот когда браузер будет открывать, тогда пробуйте настроить экспортер
Переделали сервис, в браузере виден ответ, после того как логин и пароль ввести.
Но в метриках не появился SheduleJob
не такой json, там массив объектов
Ок, а имя массива не важно?
В таком формате?
нет, коллега, ну я же приложил пример, почему вы на угад подбираете формат?
Так массив формируется в 1С через ЗаписьJSON. Переделал на строку просто, вот так возвращает -
без изменений, коннекта по http соединению в базе не вижу, метрика тоже не появилась. В логах есть ошибка что не определен пользователь, но я для этой базы и не прописывал креды в сервисе, не может из-за этого не работать?
Так массив формируется в 1С через ЗаписьJSON. Переделал на строку просто, вот так возвращает -
без изменений, коннекта по http соединению в базе не вижу, метрика тоже не появилась. В логах есть ошибка что не определен пользователь, но я для этой базы и не прописывал креды в сервисе, не может из-за этого не работать?
Поправил разделение элементов массива на запятую.
А почему у вас разделение элементов массива через ; ? Приложите сюда этот жсон, есть сомнение что он вообще валидный И логи тоже приложите
ответ сервиса: [{"Name": "sat_doc","UserName": "Admin","UserPass": ""},{"Name": "sat_buh","UserName": "Администратор","UserPass": ""},{"Name": "sat_zup_30","UserName": "Администратор","UserPass": ""},{"Name": "sat_uat","UserName": "Администратор","UserPass": ""}]
Лог после перезапуска службы с LogLevel: 6 https://cloud.mail.ru/public/fSFf/V6ddy384A
еще нужен конфиг, в логе я не вижу попыток обращения к вашему сервису
Конфиг тут - https://cloud.mail.ru/public/ZCjL/TPQWqxgXq
а какую версию экспортера вы используете? Я эти правки вносил Oct 12, 2022
Вроде актуальную скачивал отсюда: https://github.com/LazarenkoA/prometheus_1C_exporter/releases/download/1.4.18/1c_exporter_Windows_x86_64.zip
октябрьских релизов не вижу.
пересобери актуальный, релизы я давненько не обновлял
Спасибо, вроде все заработало, только ругается на сертификат на сайте, он просрочен - {"error":"произошла ошибка при обращении к REST: Get \"https://1c.gehautotrans.ru/sat_doc/hs/GEH_DO_Creds/1\": tls: failed to verify certificate: x509: certificate signed by unknown authority","level":"error","msg":"ошибка получения данных по БД","time":"2023-05-25T15:44:05+03:00"}
Это как-то можно обойти? чтобы не было проверки сертификата.
можно, вечером постараюсь вынести настройку скипать проверку или нет в конфиг
Отлично, спасибо большое!
Спасибо, достаточно конфиг изменить и перезапустить службу?
пересобрать бинарь и добавить флаг в конфиг
Пересобрал, ошибка ушла, теперь другие ошибки в логе: {"error":"REST вернул код возврата 403","level":"error","msg":"ошибка получения данных по БД","time":"2023-05-26T11:43:49+03:00"} {"error":"unexpected end of JSON input","level":"error","msg":"не удалось десериализовать данные от REST","time":"2023-05-26T11:43:49+03:00"}
попробовал твой жсон вставить в тест, тест проходит, значит проблема не в жсоне
[{"Name": "sat_doc","UserName": "Admin","UserPass": ""},{"Name": "sat_buh","UserName": "Администратор","UserPass": ""},{"Name": "sat_zup_30","UserName": "Администратор","UserPass": ""},{"Name": "sat_uat","UserName": "Администратор","UserPass": ""}]
возможно в body добавляется что-то лишнее. Попробуй выполнить curl "url сервиса" > out.txt
и приложить сюда out.txt (можно прям сюда, не обязательно выкладывать в mail cloud)
вот так: Log_11.log
открой этот файл и посмотри что в нем
В общем еще разбираюсь с ошибкой... видимо что-то с настройками IIS или публикации базы и сервиса в ней. Странно что и фиддлер и просто через браузер аутентификация отрабатывает и результат выдает.
может есть 301 редирект?
Я, честно не силен в администрировании IIS но чтобы заработал мониторинг графаны из вне по ссылке мы ставили на IIS доп. модули по этой инструкции - https://grafana.com/tutorials/iis/ Там перезапись адреса и обратный прокси. Мониторинг на таком адресе - https://1c_xxxxxxx_.ru/monitoring/grafana/d/cf2c28b7-1b8c-419e-88fc-b79cc84cc348/1c-metrics?orgId=1 А сервис на https://1c_xxxxxxxx_.ru/1c_base/hs/GEH_DO_Creds/1
В IIS везде разрешена анонимная проверка подлинности. Остальная проверка отключена.
Переопределение такое:
Сопоставление обработчиков одинаковое как у публикуемой базы так и у страницы с мониторингом. C:\Program Files (x86)\1cv8\8.3.22.1750\bin\wsisapi.dll
Кстати в журнале базы где сервис размещен вижу запросы к сервису и ошибок вроде нет
Эта проблема устарела, поскольку она была открыта в течение 30 дней без какой-либо активности.
Эта проблема была закрыта, поскольку она была неактивна в течение 5 дней с тех пор, как была помечена как устаревшая.
Добрый день, удалось все запустить, но не получается параметр SheduleJob. В настроечном файле указан какой то json который требуется для получения этого параметра, но как правильно его использовать?
http сервис который возвращает массив json с кредами к БД
нужно для метрики SheduleJob
пример json:
[
{
"Name": "hrmcorp-n17",
"UserName": "",
"UserPass": ""
}
]
Имя базы и логин/пароль заполняю, комменты снимаю, но ругается на синтаксис. Есть пример правильного использования этого http сервиса?