Giter VIP home page Giter VIP logo

zabbix-1c's Introduction

Мониторинг соединений к базам 1С Предприятия средствами Zabbix

Для чего оно нужно?

Проект для мониторинга состояния соединений серверов "1С: Предприятия".
Собираются данные о количестве соединений в разбивке по видам: тонкий клиент, толстый клиент и т.д., число заблокированных объектов, время блокировки и объем данных.
Для каждой базы создается отдельный график.

Для получения информации используются консольная утилита RAC (клиент).

Для обнаружения баз используется LLD Zabbix, используемые версии Zabbix 3.4 - 5.2, ниже не получится, используются зависимые элементы данных.

Добавлена возможность работы с несколькоми кластерами 1С на наблюдаемом сервере. Для информационных баз указывается в каком кластере они живут.

Установка на сервере Zabbix

Шаблон для Zabbix 4.2-5.2: 1c-zabbix.xml
3.4 версию Zabbix более не использую, шаблона для нее у меня нет. Можно попробовать переделать xml под 3.4, но думаю проще обновиться.

Установка под Windows:

1. Установить службу RAS

Для установки сервера RAS в качестве службы используется команда:
sc create "1C:Enterprise RAS" binpath= "C:\Program Files\1cv8\8.Х.Х.ХХХХ\bin\ras.exe cluster --service" displayname= "1C:Enterprise RAS" start= auto

Для запуска - команда:
net start "1C:Enterprise RAS"


2. Указать системе путь к RAC

В системную переменную PATH необходимо добавить путь где находится исполняемый файл rac.exe:
c:\Program Files\1cv8\8.X.XX.XXXX\bin\

Правой кнопкой на Этот компьютер - Свойства - Дополнительные параметры системы (справа) - Переменные среды - раздел Системные переменные - выбрать переменную Path, изменить, откроется окно Изменение системной перемнной - в поле значение перемнной добавить в конец путь вида c:\Program Files\1cv8\8.X.XX.XXXX\bin\, т.е. путь где лежит используемая платформа. При использовании 32-х разрядной платформы путь будет вида:
c:\Program Files (x86)\1cv8\8.X.XX.XXXX\bin\

Требуется перезагрузка системы после правок PATH!


3. Установить Python

Python можно установить с сайта https://www.python.org, проверьте что бы путь установки соответствовал пути прописанному в файле 1c_zabbix.conf. Ожидается что интерпретатор будет находится по следующему пути:
c:\Program Files\Python37\python.exe


4. Установить скрипты и конфигурацию Zabbix

На сервер с установленным RAC и Zabbix agent необходимо положить файлы *.py из каталога scripts и файл конфигурации 1c_zabbix.conf.
Если в кластере используется администратор кластера, то в 1c_zabbix.conf следует раскомментировать строки с указанием пользователя и пароля. (При использовании нескольких кластеров, соответственно, этот пользователь должен существовать во всех кластерах).

ib_list.py - скрипт возвращающий список баз с указанием uuid кластера
sess_list.py - скрипт возвращает кол-во сессий на присланный uuid базы и uuid кластера

Настройки каталогов:

  • zabbix agent - c:\zabbix
  • python - c:\Program Files\Python37\python.exe

Установка под Linux

1. Установить службу RAS

Для дистрибутивов на основе systemd (Debian/Ubuntu, RHEL/CentOS, SLES/OpenSUSE) добавить файл ras.service в /etc/systemd/system/:

[Unit]
Description=RAS
After=syslog.target
After=network.target

[Service]
Type=simple
User=usr1cv8
Group=grp1cv8
ExecStart=/opt/1C/v8.3/x86_64/ras cluster
KillMode=process

[Install]
WantedBy=multi-user.target

Выполнить команды:
systemctl daemon-reload
systemctl enable --now ras


2. Указать системе путь к RAC

Сделать ссылку:
ln -s /opt/1C/v8.3/x86_64/rac /usr/local/bin/


3. Установить Python

Python на Linux обычно уже есть. Если все же нет - установить python3.

Для Debian/Ubuntu:
apt install python3
Для RHEL/CentOS:
yum install python3


4. Установить скрипты и конфигурацию Zabbix

На сервер с установленным RAC и Zabbix agent необходимо положить файлы *.py из каталога scripts и файл конфигурации 1c_zabbix_linux.conf.
Если в кластере используется администратор кластера, то в 1c_zabbix.conf следует раскомментировать строки с указанием пользователя и пароля. (При использовании нескольких кластеров, соответственно, этот пользователь должен существовать во всех кластерах).

ib_list.py - скрипт возвращающий список баз с указанием uuid кластера
sess_list.py - скрипт возвращает кол-во сессий на присланный uuid базы и uuid кластера

Настройки каталогов:

  • zabbix agent - /etc/zabbix/


При обнаружении ошибок, возникающих вопросах, необходимости добавления новых данных в мониторинг - создайте issue.

zabbix-1c's People

Contributors

castorsky avatar kulpin74 avatar

Stargazers

 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

zabbix-1c's Issues

Debian + 8.3.22.1750 - не работает опрос

На сервер 1С баз пока нет

В логах zabbix-сервера ошибка:
"discovery rule "1c-server:1cEnt.infobases" became not supported: Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character '{' or '[' at: 'Traceback (most recent call last):
File "/etc/zabbix/scripts/ib_list.py", line 36, in
ib_list.append({**get_dict_from_string(ib),
File"

На сервере 1С
#python3 /etc/zabbix/scripts/ib_list.py
Traceback (most recent call last):
File "/etc/zabbix/scripts/ib_list.py", line 36, in
ib_list.append({**get_dict_from_string(ib),
File "/etc/zabbix/scripts/ib_list.py", line 16, in get_dict_from_string
key, value = i.split(':', 1)
ValueError: not enough values to unpack (expected 2, got 1)

Система (виртуальная машина)
Linux 1c-server 5.10.0-20-amd64 #1 SMP Debian 5.10.158-2 (2022-12-13) x86_64

1С сервер
[email protected] - 1C:Enterprise Server 8.3 (8.3.22.1750) (default)
Loaded: loaded (/opt/1cv8/x86_64/8.3.22.1750/[email protected]; enabled; vendor preset: ena>
Active: active (running) since Wed 2023-03-01 13:53:27 MSK; 7min ago

RAS
ras.service - RAS
Loaded: loaded (/etc/systemd/system/ras.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-03-01 13:53:30 MSK; 8min ago

Zabbix-agent
zabbix-agent.service - Zabbix Agent
Loaded: loaded (/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-03-01 13:53:30 MSK; 8min ago

При установке хотя бы одной базы все работает.

Хорошо бы сделать внятную реакцию на отсутствие баз на сервере

После обновления платформы скрипт перестал отрабатывать

C:\WINDOWS\system32>C:\zabbix\scripts\ib_list.py
Traceback (most recent call last):
File "C:\zabbix\scripts\ib_list.py", line 25, in
cluster_res = subprocess.check_output(['rac', 'cluster', 'list']).decode(C_PAGE).strip()
File "C:\Program Files\Python37\lib\subprocess.py", line 376, in check_output
**kwargs).stdout
File "C:\Program Files\Python37\lib\subprocess.py", line 453, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Program Files\Python37\lib\subprocess.py", line 756, in init
restore_signals, start_new_session)
File "C:\Program Files\Python37\lib\subprocess.py", line 1155, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

Скрипт ib_list.py не выполняется

Добрый день!
Спасибо за вашу работу.
у нас немного иная ситуация: кластеров два, но они разнесены на разные службы, слушаются на разных портах: 1540 и 2540
Установил 2 службы RAS, которые смотрят на разные порты и обращение RAC к RAS тоже на портах 1545 и 2545.
Каким образом можно доработать скрипт, чтобы он работал?

Скрипт

Здравствуйте!
Подскажите пожалуйста, куда необходимо скопировать скрипты и файл конфигурации?
"необходимо положить файлы *.py из каталога scripts и файл конфигурации 1c_zabbix.conf."
агент у меня установлен -C:\Program Files\Zabbix Agent\

Вычисляемое значение

День добрый!
Не подскажите, как записать "формулу" вычисляемого значения числа работающих в кластере пользователей, как сумму последних значений клиентов (тонкий + толстый + web) ?
У нас Web до 80 сессий в рабочий день.
Попробовал по описанию - вместо значений получаю ошибку, в которой видно, что берется не числовое значение ключа, а его ID.

Периодически всплавает проблема с нехваткой ключей, хотелось бы иметь возможность повесить триггер на пороговое и критическое значение.

По графикам не совсем удобно смотреть получается, да и триггеры вешать надо на сумму пользователей, без разбивки на типы.
image

p.s. не посоветуете монитор ключей 1С, который Вы считаете работоспособным? используем 2х100 программных + 1х100 аппаратный, хочется тоже повесить триггер на их утилизацию.

Ошибка Invalid discovery rule value: cannot parse as a valid JSON object:

Сервер Zabbix 5.0.25 LTS
Клиент 5.10.0-13-amd64 #1 SMP Debian 5.10.106-1 (2022-03-17) x86_64 GNU/Linux
1C 8.3.20.1914/Postgres 14

Два идентичных сервера1С, настроены одинаково, версии софта одинаковые

На одном мониторинг заработал корректно, на втором Zabbix сервер выдает ошибку у Discovery rule

"Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character '{' or '[' at: 'Traceback (most recent call last):
File "/etc/zabbix/scripts/ib_list.py", line 21, in
cluster_res = subprocess.check_output(['rac', 'clu"

Удаление и создание хоста заново не помогают

python script cannot run

I`ve installed on Windows server 2012 R2 with Python python-3.10.2-amd64
trying to run first script ib_list.py
RAS is fine, checked with RAC cluster info

Python 3.10.2 (tags/v3.10.2:a58ebcc, Jan 17 2022, 14:12:15) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.

===================== RESTART: C:\zabbix\scripts\ib_list.py ====================
Traceback (most recent call last):
File "C:\zabbix\scripts\ib_list.py", line 21, in
cluster_res = subprocess.check_output(['rac', 'cluster', 'list']).decode(C_PAGE).strip()
File "C:\Program Files\python37\lib\subprocess.py", line 420, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "C:\Program Files\python37\lib\subprocess.py", line 501, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Program Files\python37\lib\subprocess.py", line 966, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Program Files\python37\lib\subprocess.py", line 1435, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified

ib_list.py возвращает ошибку при наличии 2 кластеров на сервере

Доброго времени суток!

Если будет минутка, прошу Вашей помощи

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

Тестирование при ручном запуске ib_list.py показало:

C:\zabbix\scripts>ib_list.py
Traceback (most recent call last):
  File "C:\zabbix\scripts\ib_list.py", line 13, in <module>
    cluster = getDictFromString(cluster_res)
  File "C:\zabbix\scripts\ib_list.py", line 8, in getDictFromString
    dict_el = {**dict_el, **dict([[j.strip() for j in i.split(' :')]])}
ValueError: dictionary update sequence element #0 has length 1; 2 is required

Запустил руками RAC:

C:\zabbix\scripts>rac cluster list
cluster                       : d0e04812-1022-4664-8575-3552e1aecd37
host                          : APP-1C02
port                          : 1541
name                          : "Локальный кластер"
expiration-timeout            : 60
lifetime-limit                : 8600
max-memory-size               : 20971520
max-memory-time-limit         : 30
security-level                : 0
session-fault-tolerance-level : 0
load-balancing-mode           : performance
errors-count-threshold        : 0
kill-problem-processes        : 0

cluster                       : e0307b33-a0e0-4921-80e5-5fe199bfc9e7
host                          : app-1c02
port                          : 1741
name                          : "Кластер Гилева"
expiration-timeout            : 30
lifetime-limit                : 8600
max-memory-size               : 4194304
max-memory-time-limit         : 0
security-level                : 0
session-fault-tolerance-level : 0
load-balancing-mode           : memory
errors-count-threshold        : 0
kill-problem-processes        : 0

т.е. получаю 2 ID кластера, что и вызывает ошибку

Запрос RAC по ID вручную отрабатывает нормально, получаю то, что нужно:

C:\zabbix\scripts>rac infobase --cluster=d0e04812-1022-4664-8575-3552e1aecd37 summary list
infobase : 535d5611-5737-42c1-8c9b-487099a06f13
name     : pivzavoz_new
descr    : "pivzavoz_new"

Вопрос/просьба - можно ли ограничить работу функции getDictFromString(txtBlock) первым найденным значением?
Или же - как его указать "в лоб" в скрипте, в случае подобного "нешаблонного" применения?

Насколько понимаю, необходимо указать значение cluster вручную, т.е. убрать вызов функции в строке
cluster = getDictFromString(cluster_res)

(мои извинения, в Python вообще не ориентируюсь, просто комментирование строки и попытка указать ID вручную - вызывает новые ошибки)

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

Заранее благодарен

импорт шаблона в Zabbix 5.0.20

Добрый день
подскажите как импортировать ваш шаблон в Zabbix 5.0.20?

выдает ошибку:
Ошибочный тег "/zabbix_export/templates/template(1)/discovery_rules/discovery_rule(1)": неожиданный тег "snmp_community".

Value should be a JSON object

День добрый!
Проверка работоспособность py-запроса (запуск из папки c:\zabbix\scripts)
Время выполнения скриптов - менее 3 секунд для списка баз, менее 2 сек для подключений

sess.txt
list.txt

На всякий случай -
Агент 3,2,0,10000
лог в режиме дебага
zabbix_agentd.log
конфиг ZABBIX-агента
zabbix_agentd.zip

Cannot parse as a valid JSON object

Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character '{' or '[' at: 'Traceback (most recent call last):
File "C:\Program Files\Zabbix Agent\scripts\ib_list.py", line 21, in
cluster_res = subprocess.check

Нет некоторых данных

Добрый день! Подскажите в Графиках Infobase data нет данных по Data и Blocked objects by DMS. Возможно я снова где-то что-то упустил?
Снимок экрана от 2021-04-20 10-24-51

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.