Giter Club home page Giter Club logo

prometheus_1c_exporter's Introduction

prometheus_1C_exporter

Приложение выполняет роль explorer'а для prometheus. На текущий момент приложение собирает метрики:

  • Используемые клиентские лицензии

  • Доступную производительность серверов приложений

    • в том числе
  • Количество соединений

  • Количество сеансов

  • Текущая память процесса (получается из ОС, пока поддерживается только linux)

  • Общая загрузка ЦПУ (получается из ОС)

  • Метрики диска (получается из ОС, пока только linux)

    • WeightedIO (Это значение подсчитывает количество миллисекунд, в течение которых запросы ввода-вывода ожидали на этом блочном устройстве. Если имеется несколько ожидающих запросов ввода-вывода, это значение будет увеличиваться как произведение количества миллисекунд на количество ожидающих запросов. Например, если 60 запросов на чтение ждут в среднем 30 мс, поле read_time увеличится на 60 * 30 = 1800)
    • IopsInProgress (Это значение подсчитывает количество запросов ввода-вывода, которые были отправлены драйверу устройства, но еще не завершены. Он не включает запросы ввода-вывода, которые находятся в очереди, но еще не отправлены драйверу устройства). Пример настройки дажборда
    • ReadCount (Это значения увеличиваются при завершении запроса ввода-вывода)
    • WriteCount (Это значения увеличиваются при завершении запроса ввода-вывода)
    • IoTime (Это значение подсчитывает количество миллисекунд, в течение которых устройство помещало в очередь запросы ввода-вывода)
  • Проверка галки "блокировка регламентных заданий"

  • Память всего

  • Память текущая

  • Чтение/Запись текущее

  • Время вызова текущее

  • Время вызова СУБД

  • Процессорное время текущее

сборка показателей осуществляется через утилиту rac. Каждую из метрик можно ставить на паузу, например такое может потребоваться в процессе обновления ИБ т.к. соединения RAC могут мешать этому процессу. Что бы поставить на паузу нужно отправить GET запрос

http://host:9091/Pause?metricNames=ProcData,SessionsMemory&offsetMin=1

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

http://host:9091/Continue?metricNames=ProcData,SessionsMemory

Имена метрик можно посмотреть в конфиге settings.yaml

Начать использовать

  • Скачать актуальный релиз
  • Собрать в ручном режиме. Ставим Go, git clone https://github.com/LazarenkoA/prometheus_1C_exporter, переходим в каталог, выполняем go build -o "1C_exporter" или go build -o "1C_exporter.exe".

Запуск

Linux:

./1C_exporter -port=9095 --settings=/usr/local/bin/settings.yaml

для запуска в качестве службы можно посмотреть пример systemd в каталоге service/linux

Windows:

1C_exporter.exe -port=9095 --settings=C:\settings.yaml

приложение поддерживает работу в режиме службы, пример создания службы можно посмотреть в каталоге service/windows

Если порт не указать по дефолту будет порт 9091

в конфиге прометеуса (prometheus.yml) нужно указать хосты на которых запущен explorer

  - job_name: '1C_Metrics'
    metrics_path: '/1C_Metrics' 
    static_configs:
    - targets: ['host1:9091', 'host2:9091', 'host3:9091', 'host4:9091']

Все, настраиваем дажборды, умиляемся.

Примеры дажбордов

Для данной конфигурации дажбордов (Клиентские лицензии) настройки графаны такие:

  • Создаем новый дажборд
  • Query - prometheus
  • в поле Metrics sum by (licSRV) (ClientLic{quantile="0.99", licSRV=~"(?i).+sys.+"})

экспортер выдает данные в таком виде

.....
ClientLic{host="CA-N11-APP-1",licSRV="\"ca-sys-1\"",quantile="0.5"} 193
ClientLic{host="CA-N11-APP-1",licSRV="\"ca-sys-1\"",quantile="0.9"} 193
ClientLic{host="CA-N11-APP-1",licSRV="\"ca-sys-1\"",quantile="0.99"} 193
ClientLic_sum{host="CA-N11-APP-1",licSRV="\"ca-sys-1\""} 193
ClientLic_count{host="CA-N11-APP-1",licSRV="\"ca-sys-1\""} 1
ClientLic{host="CA-N11-APP-1",licSRV="HASP",quantile="0.5"} 17
ClientLic{host="CA-N11-APP-1",licSRV="HASP",quantile="0.9"} 17
ClientLic{host="CA-N11-APP-1",licSRV="HASP",quantile="0.99"} 17
ClientLic_sum{host="CA-N11-APP-1",licSRV="HASP"} 17
ClientLic_count{host="CA-N11-APP-1",licSRV="HASP"} 1
ClientLic{host="CA-N11-APP-1",licSRV="soft",quantile="0.5"} 4
ClientLic{host="CA-N11-APP-1",licSRV="soft",quantile="0.9"} 4
ClientLic{host="CA-N11-APP-1",licSRV="soft",quantile="0.99"} 4
ClientLic_sum{host="CA-N11-APP-1",licSRV="soft"} 4
ClientLic_count{host="CA-N11-APP-1",licSRV="soft"} 1
.....

это можно проверить выполнив curl http://localhost:9091/1C_Metrics

соответственно в примере sum by (licSRV) (ClientLic{quantile="0.99", licSRV=~"(?i).+sys.+"}) мы берем метрику ClientLic ту где quantile="0.99" и licSRV подходит к regexp "(?i).+sys.+" Другие дажборды настраиваются по аналогии. Другие примеры функций можно посмотреть в документации prometheus

Пример настройки графаны для дажборда по IOPS диска

sum(disk{ node="$group", host=~"(?i).*app-1", quantile="0.99", metrics="IopsInProgress"})by (metrics)

Ожидание на диске

sum(rate(disk{ node="$group", host=~"(?i).*app-2", quantile="0.99", metrics="WeightedIO"}[5m])) by (metrics)

prometheus_1c_exporter's People

Contributors

dependabot[bot] avatar gygabites avatar khorevaa avatar lazarenkoa avatar onokonem avatar shalimski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

prometheus_1c_exporter's Issues

не удается запустить службу

файл настроек:
Explorers:

  • Name: ClientLic
    Property:
    timerNotyfy: 60
  • Name: AvailablePerformance
    Property:
    timerNotyfy: 10
  • Name: CPU
    Property:
    timerNotyfy: 10
  • Name: disk
    Property:
    timerNotyfy: 10
  • Name: SheduleJob
    Property:
    timerNotyfy: 10
  • Name: Session
    Property:
    timerNotyfy: 60
  • Name: Connect
    Property:
    timerNotyfy: 60
  • Name: SessionsData
    Property:
    timerNotyfy: 10
  • Name: ProcData
    Property:
    processes:
    - rphost
    - ragent
    - rmngr
    timerNotyfy: 10

RAC:
Path: "C:\Program Files\1cv8\8.3.22.1923\bin\rac.exe"
Port: "1545" # Не обязательный параметр
Host: "localhost" # Не обязательный параметр
Login: "" # Не обязательный параметр
Pass: "" # Не обязательный параметр

LogDir: # Если на задан логи будут писаться в каталог с исполняемым файлом
LogLevel: 5 # Уровень логирования от 2 до 6, где 2 - ошибка, 3 - предупреждение, 4 - информация, 5 - дебаг, 6 - трейс
TimeRotate: 1 # Время в часах через которое будет создаваться новый файл логов
TTLLogs: 8 # Время жизни логов в часах

///////////ошибка запуска
C:\Program Files\1c_exporter>1c_exporter.exe --settings=C:\Program Files\1c_exporter\settings.yaml
panic: Файл настроек "C:\Program" не найден

goroutine 1 [running]:
main.loadSettings(0xc00001a36b, 0xa, 0x2)
/home/runner/work/prometheus_1C_exporter/prometheus_1C_exporter/settings.go:75 +0x3cc
main.main()
/home/runner/work/prometheus_1C_exporter/prometheus_1C_exporter/main.go:49 +0x29b

ClusterUser&ClusterPwd

Добрый день!

Обнаружил также проблему с подключением к кластеру после запуска из релизного exe. Потом увидел сообщение о этой проблеме. Хотя обращение и закрыто, но в исходниках ошибка осталась, отсутствует блок добавления пароля и логина в строку параметров
image

Но я не опытный специалист по GIT и Go, поэтому могу ошибаться.

У себя запустил вставив недостающие блоки посмотрев изменения в одном из релизов. Все работает!

Спасибо!

panic: runtime error: invalid memory address or nil pointer dereference

июн 26 22:03:22 srv1c systemd[1]: Started Prometheus 1C exporter.
июн 26 22:03:22 srv1c 1c_exporter[3582990]: port : 9091
июн 27 22:00:22 srv1c 1c_exporter[3582990]: panic: runtime error: invalid memory address or nil pointer dereference
июн 27 22:00:22 srv1c 1c_exporter[3582990]: [signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x751899]
июн 27 22:00:22 srv1c 1c_exporter[3582990]: goroutine 38 [running]:
июн 27 22:00:22 srv1c 1c_exporter[3582990]: github.com/LazarenkoA/LogrusRotate.(*watcher).Cancel(0x0)
июн 27 22:00:22 srv1c 1c_exporter[3582990]:         /home/runner/go/pkg/mod/github.com/!lazarenko!a/[email protected]/rotate.go:99 +0x19
июн 27 22:00:22 srv1c 1c_exporter[3582990]: github.com/LazarenkoA/LogrusRotate.(*Rotate).DeleteEmptyFile(0xc0001e4bd0, 0xc000012120)
июн 27 22:00:22 srv1c 1c_exporter[3582990]:         /home/runner/go/pkg/mod/github.com/!lazarenko!a/[email protected]/rotate.go:287 +0x47a
июн 27 22:00:22 srv1c 1c_exporter[3582990]: github.com/LazarenkoA/LogrusRotate.(*Rotate).Start.func2.1({0xc00012c2e0, 0x1f}, {0xa3c770, 0xc000113a00}, {0x100?, 0xffffffffffffff9c?})
июн 27 22:00:22 srv1c 1c_exporter[3582990]:         /home/runner/go/pkg/mod/github.com/!lazarenko!a/[email protected]/rotate.go:219 +0xa5
июн 27 22:00:22 srv1c 1c_exporter[3582990]: path/filepath.walk({0xc00012c2e0, 0x1f}, {0xa3c770, 0xc000113a00}, 0xc000229fb0)
июн 27 22:00:22 srv1c 1c_exporter[3582990]:         /opt/hostedtoolcache/go/1.19.9/x64/src/path/filepath/path.go:438 +0xba
июн 27 22:00:22 srv1c 1c_exporter[3582990]: path/filepath.walk({0xc00013e3c0, 0x14}, {0xa3c770, 0xc00030c1a0}, 0xc000229fb0)
июн 27 22:00:22 srv1c 1c_exporter[3582990]:         /opt/hostedtoolcache/go/1.19.9/x64/src/path/filepath/path.go:458 +0x285
июн 27 22:00:22 srv1c 1c_exporter[3582990]: path/filepath.Walk({0xc00013e3c0, 0x14}, 0xc0015affb0)
июн 27 22:00:22 srv1c 1c_exporter[3582990]:         /opt/hostedtoolcache/go/1.19.9/x64/src/path/filepath/path.go:521 +0x6c
июн 27 22:00:22 srv1c 1c_exporter[3582990]: github.com/LazarenkoA/LogrusRotate.(*Rotate).Start.func2()
июн 27 22:00:22 srv1c 1c_exporter[3582990]:         /home/runner/go/pkg/mod/github.com/!lazarenko!a/[email protected]/rotate.go:208 +0xba
июн 27 22:00:22 srv1c 1c_exporter[3582990]: created by github.com/LazarenkoA/LogrusRotate.(*Rotate).Start
июн 27 22:00:22 srv1c 1c_exporter[3582990]:         /home/runner/go/pkg/mod/github.com/!lazarenko!a/[email protected]/rotate.go:206 +0x445
июн 27 22:00:22 srv1c systemd[1]: 1c_exporter.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
июн 27 22:00:22 srv1c systemd[1]: 1c_exporter.service: Failed with result 'exit-code'.
июн 27 22:00:22 srv1c systemd[1]: 1c_exporter.service: Consumed 23h 21min 51.635s CPU time.

Возможно это связано с тем, что днем (июн 27) служба сервера 1с сожрала всю память сервера и её прибил OOM-killer.

В качестве костыля добавил с Unit сервиса рестарт

Restart=always
RestartSec=30s

Пример настроенных Дашбордов

Воспользовался Вашим экспортером в связи с необходимостью оперативного мониторинга сервера 1С:

А нельзя ли привести или выложить используемые вами Дашборды для графаны, чтобы без особого погружения взять их за шаблон и перенастроить под себя ?

Запуск в качестве службы Windows

Установил службу Windows через install.bat, но при попытке запуска сразу завершается.
Логи даже не успевают записаться.
Из журнала Windows:

  • "Превышение времени ожидания (30000 мс) при ожидании подключения службы "1C Prometheus exporter".";
  • "Сбой при запуске службы "1C Prometheus exporter" из-за ошибки
    Служба не ответила на запрос своевременно.".

Не стартует экспортер под линукс ubuntu20.04

Сам сервер и база находятся в докере, при старте экспортера получаю в статусе такое:

`1c_exporter.service - Prometheus 1C exporter
Loaded: loaded (/etc/systemd/system/1c_exporter.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2023-11-10 05:53:16 UTC; 7min ago
Process: 2140480 ExecStart=/usr/local/bin/1c_exporter --settings=/opt/1cexporter/settings.yaml (code=exited, status=2)
Main PID: 2140480 (code=exited, status=2)

Nov 10 05:53:16 1c-server-stage-ams3 1c_exporter[2140480]: github.com/LazarenkoA/prometheus_1C_exporter/explorers.(*ExplorerConnects).StartExplore.func1(0xc0002961c0, {0xc0000c0270, 0x14})
Nov 10 05:53:16 1c-server-stage-ams3 1c_exporter[2140480]: /home/runner/work/prometheus_1C_exporter/prometheus_1C_exporter/explorers/Connects.go:68 +0x103
Nov 10 05:53:16 1c-server-stage-ams3 1c_exporter[2140480]: github.com/LazarenkoA/prometheus_1C_exporter/explorers.(*ExplorerConnects).StartExplore(0xc0002961c0)
Nov 10 05:53:16 1c-server-stage-ams3 1c_exporter[2140480]: /home/runner/work/prometheus_1C_exporter/prometheus_1C_exporter/explorers/Connects.go:86 +0x2c7
Nov 10 05:53:16 1c-server-stage-ams3 1c_exporter[2140480]: github.com/LazarenkoA/prometheus_1C_exporter/explorers.(*BaseExplorer).Start(0xc0002961c0, {0x7f588c69aa10, 0xc0002961c0})
Nov 10 05:53:16 1c-server-stage-ams3 1c_exporter[2140480]: /home/runner/work/prometheus_1C_exporter/prometheus_1C_exporter/explorers/BaseExplorer.go:158 +0x135
Nov 10 05:53:16 1c-server-stage-ams3 1c_exporter[2140480]: created by main.main.func1
Nov 10 05:53:16 1c-server-stage-ams3 1c_exporter[2140480]: /home/runner/work/prometheus_1C_exporter/prometheus_1C_exporter/main.go:66 +0x139
Nov 10 05:53:16 1c-server-stage-ams3 systemd[1]: 1c_exporter.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Nov 10 05:53:16 1c-server-stage-ams3 systemd[1]: 1c_exporter.service: Failed with result 'exit-code'.`

Настройки:

`Explorers:

  • Name: ClientLic
    Property:
    timerNotify: 60
  • Name: AvailablePerformance
    Property:
    timerNotify: 10
  • Name: CPU
    Property:
    timerNotify: 10
  • Name: disk
    Property:
    timerNotify: 10
  • Name: SheduleJob
    Property:
    timerNotify: 10
  • Name: Session
    Property:
    timerNotify: 60
  • Name: Connect
    Property:
    timerNotify: 60
  • Name: SessionsData
    Property:
    timerNotify: 10
  • Name: ProcData
    Property:
    processes:
    - rphost
    - ragent
    - rmngr
    timerNotify: 10

http сервис который возвращает массив json с кредами к БД

нужно для метрики SheduleJob

пример json:

#[

{

"Name": "hrmcorp-n17",

"UserName": "",

"UserPass": ""

}

#]
#DBCredentials: # Не обязательный параметр

URL: http://ca-fr-web-1/fresh/int/sm/hs/PTG_SysExchange/GetDatabase

User: ""

Password: ""

TLSSkipVerify: true # если true при обращении к сервису будут игнорироваться ошибки проверки сертификата

#RAC:
#Path: "C:\Program Files\1cv8\8.3.21.1644\bin\rac.exe"
#Port: "1545" # Не обязательный параметр
#Host: "localhost" # Не обязательный параметр
#Login: "" # Не обязательный параметр
#Pass: "" # Не обязательный параметр

LogDir: "/var/log/1cexporter/"
LogLevel: 5`

Systemd Unit:
`[Unit]
Description=Prometheus 1C exporter
After=local-fs.target network-online.target network.target
Wants=local-fs.target network-online.target network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/1c_exporter --settings=/opt/1cexporter/settings.yaml
ExecReload=/bin/kill -s HUP $MAINPID

[Install]
WantedBy=multi-user.target`

Процесс экспортера завершается с ошибкой

После совсем непродолжительной работы, процесс экспортера завершается ошибкой
Используется последний релиз

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x751899]

goroutine 36 [running]:
github.com/LazarenkoA/LogrusRotate.(*watcher).Cancel(0x0)
        /home/runner/go/pkg/mod/github.com/!lazarenko!a/[email protected]/rotate.go:99 +0x19
github.com/LazarenkoA/LogrusRotate.(*Rotate).DeleteEmptyFile(0xc00021a810, 0xc0002149c8)
        /home/runner/go/pkg/mod/github.com/!lazarenko!a/[email protected]/rotate.go:287 +0x47a
github.com/LazarenkoA/LogrusRotate.(*Rotate).Start.func2.1({0xc000028aa0, 0x20}, {0xa3c770, 0xc0003a8d00}, {0x100?, 0xffffffffffffff9c?})
        /home/runner/go/pkg/mod/github.com/!lazarenko!a/[email protected]/rotate.go:219 +0xa5
path/filepath.walk({0xc000028aa0, 0x20}, {0xa3c770, 0xc0003a8d00}, 0xc000105fb0)
        /opt/hostedtoolcache/go/1.19.9/x64/src/path/filepath/path.go:438 +0xba
path/filepath.walk({0xc000249278, 0x15}, {0xa3c770, 0xc0003a8a90}, 0xc000105fb0)
        /opt/hostedtoolcache/go/1.19.9/x64/src/path/filepath/path.go:458 +0x285
path/filepath.Walk({0xc000249278, 0x15}, 0xc000105fb0)
        /opt/hostedtoolcache/go/1.19.9/x64/src/path/filepath/path.go:521 +0x6c
github.com/LazarenkoA/LogrusRotate.(*Rotate).Start.func2()
        /home/runner/go/pkg/mod/github.com/!lazarenko!a/[email protected]/rotate.go:208 +0xba
created by github.com/LazarenkoA/LogrusRotate.(*Rotate).Start
        /home/runner/go/pkg/mod/github.com/!lazarenko!a/[email protected]/rotate.go:206 +0x445

Без рута таймаут ожидания результатов от rac

Подумал я, что не комильфо чтобы экспортер работал из под рута.
Сделал запуск службы от пользователя одинэсс.

[Service]
Type=simple
User=usr1cv8
Group=grp1cv8

С версией 8.3.20.1838 всё работало более менее, изредка возникали таймауты.
С версией 8.3.23.1688 получил что около 90% запусков rac завершаются по таймауту.
Настройки "частоты" как в примере

При запуске службы экспортера от рута таймауты отсутствуют.
Предположу, что это может быть связано с какими-нибудь ограничениями для простых пользвателей (может быть на частый запуск процессов или чем-нибудь похожим).
OS Debian 11.7.

{"error":"Произошла ошибка выполнения при попытки получить идентификатор кластера: \n\tВыполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 cluster list]\n\t","level":"error","msg":"","time":"2023-06-29T10:24:05+05:
00"}
{"error":"Не удалось получить идентификатор кластера","level":"error","msg":"","time":"2023-06-29T10:24:05+05:00"}
{"Name":"Connect","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 connection list --cluster=]\n\t","level":"error","msg":"","time":"2023-06-29T10:24:20+05:00"}
{"Name":"Session","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 session list --cluster=]\n\t","level":"error","msg":"","time":"2023-06-29T10:24:20+05:00"}
{"Name":"SessionsData","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 session list --cluster=]\n\t","level":"error","msg":"","time":"2023-06-29T10:24:20+05:00"}
{"error":"Произошла ошибка выполнения при попытки получить идентификатор кластера: \n\tВыполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 cluster list]\n\t","level":"error","msg":"","time":"2023-06-29T10:24:35+05:00"}
{"error":"Не удалось получить идентификатор кластера","level":"error","msg":"","time":"2023-06-29T10:24:35+05:00"}
{"error":"Произошла ошибка выполнения при попытки получить идентификатор кластера: \n\tВыполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 cluster list]\n\t","level":"error","msg":"","time":"2023-06-29T10:24:35+05:00"}
{"error":"Не удалось получить идентификатор кластера","level":"error","msg":"","time":"2023-06-29T10:24:35+05:00"}
{"Name":"AvailablePerformance","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 process list --cluster=2029820c-f1fe-4920-853b-a35579bd2a7f]\n\t","level":"error","msg":"","time":"2023-06-29T10:24:35+05:00"}
{"Name":"AvailablePerformance","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 process list --cluster=2029820c-f1fe-4920-853b-a35579bd2a7f]\n\t","level":"error","msg":"Произошла ошибка","time":"2023-06-29T10:24:35+05:00"}
{"Name":"ClientLic","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 session list --licenses --cluster=2029820c-f1fe-4920-853b-a35579bd2a7f]\n\t","level":"error","msg":"","time":"2023-06-29T10:24:35+05:00"}
{"error":"Произошла ошибка выполнения при попытки получить идентификатор кластера: \n\tВыполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 cluster list]\n\t","level":"error","msg":"","time":"2023-06-29T10:24:35+05:00"}
{"error":"Не удалось получить идентификатор кластера","level":"error","msg":"","time":"2023-06-29T10:24:35+05:00"}

AvailablePerformance NaN

Релиз 1.4.6
Два рабочих сервера, что то пошло не по плану?))

AvailablePerformance{host="dsds",type="available",quantile="0.5"} NaN
AvailablePerformance{host="dsds",type="available",quantile="0.9"} NaN
AvailablePerformance{host="dsds",type="available",quantile="0.99"} NaN
AvailablePerformance_sum{host="dsds",type="available"} NaN
AvailablePerformance_count{host="dsds",type="available"} 1

panic: label value "s\x94" is not valid UTF-8

Добрый день!
Столкнулись с проблемой при запуске. Примечательно, что проблема возникла на одном сервере, когда отсутствует на другом тестовом сервере, то есть ошибка может зависеть от настройки окружения.
Можете прокомментировать?
Спасибо!
//Алексей

1C_exporter.exe -port=9095 --settings=c:\TOOLS\Prometheus\1cExporter\settings.yaml
port : 9095
panic: label value "s\x94" is not valid UTF-8

goroutine 58 [running]:
github.com/prometheus/client_golang/prometheus.(*SummaryVec).WithLabelValues(0xc00018a190, 0xc0004faf00, 0x8, 0x8, 0xc000555f18, 0xc000384400)
/home/runner/go/pkg/mod/github.com/prometheus/[email protected]/prometheus/summary.go:610 +0xe6
github.com/LazarenkoA/prometheus_1C_exporter/explorers.(*ExplorerSessionsMemory).StartExplore.func1(0xc0002362a0, 0xc000018508, 0x4)
/home/runner/work/prometheus_1C_exporter/prometheus_1C_exporter/explorers/SessionsData.go:73 +0x2013
github.com/LazarenkoA/prometheus_1C_exporter/explorers.(*ExplorerSessionsMemory).StartExplore(0xc0002362a0)
/home/runner/work/prometheus_1C_exporter/prometheus_1C_exporter/explorers/SessionsData.go:97 +0x4ab
github.com/LazarenkoA/prometheus_1C_exporter/explorers.(*BaseExplorer).Start(0xc0002362a0, 0x11c4380, 0xc0002362a0)
/home/runner/work/prometheus_1C_exporter/prometheus_1C_exporter/explorers/BaseExplorer.go:178 +0x9e
created by main.main.func1
/home/runner/work/prometheus_1C_exporter/prometheus_1C_exporter/main.go:62 +0xfa

Экспортёр не запускается в виде службы.

sc create "1c_exporter" ""C:\1c_exporter\prometheus_1C_exporter.exe" --settings=settings.yaml"
(гитхаб съел экранированные при помощи слэша кавычки)

При запуске службы пишет:
"Ошибка 1053: Сервис не ответил на запрос своевременно"

При этом если запускать просто из под консоли, не в виде службы, то работает нормально.

Ошибка десириализации настроек

Добрый день.
Думаю что не я один такой)
Прошу подсказать как правильно настроить ваш экспортер на windows 2012 сервере.
Что сделал:

  • Установил git и go
  • Скачал вашу репу
  • Сделал go build -o "1с_exporter.exe"
  • После поправил файл конфига указав пути до RAC

image

  • больше не правил никаких параметров (возможно нужно что-то еще)

  • Пытаюсь запустить экспортера командой 1с_exporter.exe -port=9095 --settings=C:\prometheus_1c_exporter\settings.yaml

  • И получаю след. ошибку

image

Исходные коды мастера не соответствуют ветке последних изменений

Смотрим исходные коды мастера и не находим изменений, связанных с "параметры rac --cluster-user и --cluster-pwd" - эти строки просто отсутствуют.
Смотрим другую ветку и видим там все необходимые изменения.
Поэтому последний релиз (exe) не принимает параметры Login и Pass и не использует их. Авторизация администратора кластера не проходит.
Просьба поправить и пересобрать снова релиз. Спасибо, автор!

Пустая base="" в SessionsData

Я могу ошибаться, но у меня сложилось впечатление, что экспортер пытается узнать список баз кластера только один раз запуске.
То есть если в запуске экспортера rac завершился по таймауту, то в SessionsData база будет незаполненной.

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

SessionsData{appid="BackgroundJob",base="",datatype="deadtime",host="1c-crm",id="19291",servicename="",startedat="2023-06-29 08:23:17",user="DefUser",quantile="0.5"} 2.8004101

Лог

{"level":"info","msg":"Сбор метрик:AvailablePerformance,Session,Connect,SessionsData,ClientLic","time":"2023-06-29T08:08:15+05:00"}
{"error":"Произошла ошибка выполнения при попытки получить идентификатор кластера: \n\tВыполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 cluster list]\n\t","level":"error","msg":"","time":"2023-06-29T08:08:30+05:00"}
{"error":"Не удалось получить идентификатор кластера","level":"error","msg":"","time":"2023-06-29T08:08:30+05:00"}
{"Name":"Connect","error":"Произошла ошибка запуска:\n\terr:exit status 255\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 infobase summary list --cluster=]\n\tStdErr:Ошибка разбора параметра: cluster\n\n","level":"error","msg":"Ошибка получения списка баз","time":"2023-06-29T08:08:44+05:00"}
{"Name":"Connect","error":"Произошла ошибка запуска:\n\terr:exit status 255\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 infobase summary list --cluster=]\n\tStdErr:Ошибка разбора параметра: cluster\n\n","level":"warning","msg":"Не удалось получить список баз","time":"2023-06-29T08:08:44+05:00"}
{"Name":"SessionsData","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 infobase summary list --cluster=2029820c-f1fe-4920-853b-a35579bd2a7f]\n\t","level":"error","msg":"Ошибка получения списка баз","time":"2023-06-29T08:08:45+05:00"}
{"Name":"SessionsData","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 infobase summary list --cluster=2029820c-f1fe-4920-853b-a35579bd2a7f]\n\t","level":"warning","msg":"Не удалось получить список баз","time":"2023-06-29T08:08:45+05:00"}
{"Name":"ClientLic","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 session list --licenses --cluster=2029820c-f1fe-4920-853b-a35579bd2a7f]\n\t","level":"error","msg":"","time":"2023-06-29T08:08:45+05:00"}
{"Name":"Session","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 session list --cluster=2029820c-f1fe-4920-853b-a35579bd2a7f]\n\t","level":"error","msg":"","time":"2023-06-29T08:09:00+05:00"}
{"Name":"Connect","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 connection list --cluster=2029820c-f1fe-4920-853b-a35579bd2a7f]\n\t","level":"error","msg":"","time":"2023-06-29T08:09:29+05:00"}
{"Name":"AvailablePerformance","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 process list --cluster=2029820c-f1fe-4920-853b-a35579bd2a7f]\n\t","level":"error","msg":"","time":"2023-06-29T08:10:26+05:00"}
{"Name":"AvailablePerformance","error":"Выполнение команды прервано по таймауту\n\tПараметры: [/opt/1cv8/x86_64/8.3.23.1688/rac localhost:1545 process list --cluster=2029820c-f1fe-4920-853b-a35579bd2a7f]\n\t","level":"error","msg":"Произошла ошибка","time":"2023-06-29T08:10:26+05:00"}

SheduleJob not worked on windows

Запустилось только после отключения SheduleJob
CPU,Procdata,disk - отключены намеренно

Explorers:
  - Name: ClientLic
    Property:
      timerNotyfy: 60
  - Name: AvailablePerformance
    Property:
      timerNotyfy: 10
#  - Name: CPU
#    Property:
#      timerNotyfy: 10
#  - Name: SheduleJob
#    Property:
#      timerNotyfy: 10
  - Name: Session
    Property:
      timerNotyfy: 60
  - Name: Connect
    Property:
      timerNotyfy: 60
  - Name: SessionsData
    Property:
      timerNotyfy: 10
#  - Name: ProcData
#    Property:
#      processes:
#        - rphost
#        - ragent
#        - rmngr
#      timerNotyfy: 10
#  - Name: disk
#    Property:
#      timerNotyfy: 10

нет параметров -cluster-user --cluster-pwd

Добрый день
До этого работал на Windows. Все отлично. Установил последний релиз (1.4.10) на Linux (Oracle Linux Server release 8.4)
В settings.yaml заполнил поля
Login: "1cadmin" # Не обязательный параметр
Pass: "12345" # Не обязательный параметр

В логах нет параметров -cluster-user=1cadmin --cluster-pwd=12345
{"Name":"SessionsData","error":"Произошла ошибка запуска:\n\terr:exit status 255\n\tПараметры: [/opt/1cv8/x86_64/8.3.20.1710/rac kronos-nsk-1c-app-el-01:1545 session list --cluster=a9fc75d6-b050-4727-ae98-07c6211743a3]\n\tStdErr:Ошибка операции администрирования\nАдминистратор кластера не аутентифицирован\n\n","

AvailablePerformance добавить идентификтор кластера и PID рабочего процесса

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

SheduleJob - Проверка галки "блокировка регламентных заданий"

Добрый день, удалось все запустить, но не получается параметр SheduleJob.
В настроечном файле указан какой то json который требуется для получения этого параметра, но как правильно его использовать?

http сервис который возвращает массив json с кредами к БД

нужно для метрики SheduleJob

пример json:

#[

{

"Name": "hrmcorp-n17",

"UserName": "",

"UserPass": ""

}

#]

Имя базы и логин/пароль заполняю, комменты снимаю, но ругается на синтаксис. Есть пример правильного использования этого http сервиса?

Grafana бесконечно потребляет ОЗУ

Начали тестировать мониторинг 1С средствами связки prometheus_1C_exporter + Prometheus + Grafana и столкнулись с бесконечным потреблением ОЗУ браузером (Chrome, Firefox) при использовании Time series графиков в Grafana по периоду "Last 6 hours" и обновлением данных раз в 30 секунд (или 5 минут).
Память растет на глазах и в скором времени браузер отваливается по ошибке "Out of Memory".
Как Вы решаете эту проблему?

З.Ы. У нас Prometheus 2.35.0-rc0.windows-amd65 + Grafana 8.4.7. Использовали как Chrome, так и Firefox.

Есть функционал отправки метрик как push сообщений?

Prometheus использует модель pull запросов для получения показателей. Такой подход удобен, если prometheus и наблюдаемый сервер находятся "рядом", но при необходимости сбора показателей на "удаленных" серверах гораздо удобнее и безопаснее использовать модель push запросов.

Планируется или может быть есть уже такой функционал?

Для подобных push сообщений для мониторинга ОС использую приложение telegraf и экспортирование в формате graphite, а на стороне prometheus - graphite-exporter.

При запуске на windows

{"L":"ERROR","T":"2024-02-13T11:56:46.044+0300","N":"base","M":"ОС windows не поддерживается"}
{"L":"ERROR","T":"2024-02-13T11:56:56.046+0300","N":"base","M":"ОС windows не поддерживается"}
{"L":"ERROR","T":"2024-02-13T11:56:56.811+0300","M":"Произошла ошибка:\n\t Произошла ошибка выполнения при попытки получить идентификатор кластера: \n\tВыполнение команды прервано по таймауту\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 cluster list]\n\t\n"}
{"L":"ERROR","T":"2024-02-13T11:56:56.811+0300","M":"Произошла ошибка:\n\t Не удалось получить идентификатор кластера\n"}
{"L":"ERROR","T":"2024-02-13T11:56:57.533+0300","N":"SessionsData","M":"Произошла ошибка запуска:\n\terr:exit status 0xffffffff\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 session list --cluster=]\n\tStdErr:\ufffd訡\ufffd\ufffd ࠧ\ufffd\ufffd\ufffd\ufffd \ufffd\ufffdࠬ\ufffd\ufffd\ufffd\ufffd: cluster\r\n\n"}
{"L":"ERROR","T":"2024-02-13T11:56:58.938+0300","M":"Произошла ошибка:\n\t Произошла ошибка выполнения при попытки получить идентификатор кластера: \n\tВыполнение команды прервано по таймауту\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 cluster list]\n\t\n"}
{"L":"ERROR","T":"2024-02-13T11:56:58.938+0300","M":"Произошла ошибка:\n\t Не удалось получить идентификатор кластера\n"}
{"L":"ERROR","T":"2024-02-13T11:56:59.751+0300","N":"AvailablePerformance","M":"Произошла ошибка запуска:\n\terr:exit status 0xffffffff\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 process list --cluster=]\n\tStdErr:\ufffd訡\ufffd\ufffd ࠧ\ufffd\ufffd\ufffd\ufffd \ufffd\ufffdࠬ\ufffd\ufffd\ufffd\ufffd: cluster\r\n\n"}
{"L":"ERROR","T":"2024-02-13T11:56:59.751+0300","N":"AvailablePerformance","M":"Произошла ошибка: Произошла ошибка запуска:\n\terr:exit status 0xffffffff\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 process list --cluster=]\n\tStdErr:\ufffd訡\ufffd\ufffd ࠧ\ufffd\ufffd\ufffd\ufffd \ufffd\ufffdࠬ\ufffd\ufffd\ufffd\ufffd: cluster\r\n\n"}
{"L":"ERROR","T":"2024-02-13T11:57:06.045+0300","N":"base","M":"ОС windows не поддерживается"}
{"L":"ERROR","T":"2024-02-13T11:57:11.062+0300","M":"Произошла ошибка:\n\t Произошла ошибка выполнения при попытки получить идентификатор кластера: \n\tВыполнение команды прервано по таймауту\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 cluster list]\n\t\n"}
{"L":"ERROR","T":"2024-02-13T11:57:11.062+0300","M":"Произошла ошибка:\n\t Не удалось получить идентификатор кластера\n"}
{"L":"ERROR","T":"2024-02-13T11:57:11.062+0300","M":"Произошла ошибка:\n\t Произошла ошибка выполнения при попытки получить идентификатор кластера: \n\tВыполнение команды прервано по таймауту\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 cluster list]\n\t\n"}
{"L":"ERROR","T":"2024-02-13T11:57:11.062+0300","M":"Произошла ошибка:\n\t Произошла ошибка выполнения при попытки получить идентификатор кластера: \n\tВыполнение команды прервано по таймауту\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 cluster list]\n\t\n"}
{"L":"ERROR","T":"2024-02-13T11:57:11.062+0300","M":"Произошла ошибка:\n\t Не удалось получить идентификатор кластера\n"}
{"L":"ERROR","T":"2024-02-13T11:57:11.062+0300","M":"Произошла ошибка:\n\t Не удалось получить идентификатор кластера\n"}
{"L":"ERROR","T":"2024-02-13T11:57:11.791+0300","N":"Session","M":"Произошла ошибка запуска:\n\terr:exit status 0xffffffff\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 session list --cluster=]\n\tStdErr:\ufffd訡\ufffd\ufffd ࠧ\ufffd\ufffd\ufffd\ufffd \ufffd\ufffdࠬ\ufffd\ufffd\ufffd\ufffd: cluster\r\n\n"}
{"L":"ERROR","T":"2024-02-13T11:57:11.797+0300","N":"ClientLic","M":"Произошла ошибка запуска:\n\terr:exit status 0xffffffff\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 session list --licenses --cluster=]\n\tStdErr:\ufffd訡\ufffd\ufffd ࠧ\ufffd\ufffd\ufffd\ufffd \ufffd\ufffdࠬ\ufffd\ufffd\ufffd\ufffd: cluster\r\n\n"}
{"L":"ERROR","T":"2024-02-13T11:57:11.799+0300","N":"Connect","M":"Произошла ошибка запуска:\n\terr:exit status 0xffffffff\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 connection list --cluster=]\n\tStdErr:\ufffd訡\ufffd\ufffd ࠧ\ufffd\ufffd\ufffd\ufffd \ufffd\ufffdࠬ\ufffd\ufffd\ufffd\ufffd: cluster\r\n\n"}
{"L":"ERROR","T":"2024-02-13T11:57:12.546+0300","M":"Произошла ошибка:\n\t Произошла ошибка выполнения при попытки получить идентификатор кластера: \n\tВыполнение команды прервано по таймауту\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 cluster list]\n\t\n"}
{"L":"ERROR","T":"2024-02-13T11:57:12.546+0300","M":"Произошла ошибка:\n\t Не удалось получить идентификатор кластера\n"}
{"L":"ERROR","T":"2024-02-13T11:57:13.426+0300","N":"SessionsData","M":"Произошла ошибка запуска:\n\terr:exit status 0xffffffff\n\tПараметры: [C:\Program Files\1cv8\8.3.18.1698\bin\rac.exe localhost:1540 session list --cluster=]\n\tStdErr:\ufffd訡\ufffd\ufffd ࠧ\ufffd\ufffd\ufffd\ufffd \ufffd\ufffdࠬ\ufffd\ufffd\ufffd\ufffd: cluster\r\n\n"}

host в метрике

Добрый день, в метрике host подставляется значение "имя сервера", а не хоста на котором запущенна сессия.
Подскажите так и задумано?
SessionsData{appid="1CV8C",base="base",datatype="memorytotal",host="1csrv",id="46",servicename="",startedat="2024-02-08 13:29:00",user="user",quantile="0.5"} 5.255222024e+09

При этом в логе host указывается верно
{"L":"DEBUG","T":"2024-02-15T09:20:57.636+0300","N":"Session","M":"Парс результата","strIn":"\nsession : a63cd205-4afd-44ef-be34-aa1a902fc245\nsession-id 132270\ncnuser-name: user\nhost: srv-terminal\napp-id: 1CV8C

Получение метрик по всем кластерам одного сервера приложений

Добрый день!

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

Спасибо!

Подключение к нескольким RAS

Возможна ли реализация подключения exporter'a к нескольким RAS для одновременного сбора метрик с нескольких кластеров?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.