kulpin74 / zabbix-1c Goto Github PK
View Code? Open in Web Editor NEWMonitoring session 1C Enterprise using Zabbix
License: GNU General Public License v3.0
Monitoring session 1C Enterprise using Zabbix
License: GNU General Public License v3.0
День добрый!
Не подскажите, как записать "формулу" вычисляемого значения числа работающих в кластере пользователей, как сумму последних значений клиентов (тонкий + толстый + web) ?
У нас Web до 80 сессий в рабочий день.
Попробовал по описанию - вместо значений получаю ошибку, в которой видно, что берется не числовое значение ключа, а его ID.
Периодически всплавает проблема с нехваткой ключей, хотелось бы иметь возможность повесить триггер на пороговое и критическое значение.
По графикам не совсем удобно смотреть получается, да и триггеры вешать надо на сумму пользователей, без разбивки на типы.
p.s. не посоветуете монитор ключей 1С, который Вы считаете работоспособным? используем 2х100 программных + 1х100 аппаратный, хочется тоже повесить триггер на их утилизацию.
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
На сервер 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
При установке хотя бы одной базы все работает.
Хорошо бы сделать внятную реакцию на отсутствие баз на сервере
Здравствуйте!
Подскажите пожалуйста, куда необходимо скопировать скрипты и файл конфигурации?
"необходимо положить файлы *.py из каталога scripts и файл конфигурации 1c_zabbix.conf."
агент у меня установлен -C:\Program Files\Zabbix Agent\
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
TODO: Добавить указание сервера RAS и порта в параметрах скриптов, по умолчанию localhost:1545, при передаче параметра использовать переданное
Originally posted by @kulpin74 in #5 (comment)
День добрый!
Проверка работоспособность py-запроса (запуск из папки c:\zabbix\scripts)
Время выполнения скриптов - менее 3 секунд для списка баз, менее 2 сек для подключений
На всякий случай -
Агент 3,2,0,10000
лог в режиме дебага
zabbix_agentd.log
конфиг ZABBIX-агента
zabbix_agentd.zip
Добрый день!
Спасибо за вашу работу.
у нас немного иная ситуация: кластеров два, но они разнесены на разные службы, слушаются на разных портах: 1540 и 2540
Установил 2 службы RAS, которые смотрят на разные порты и обращение RAC к RAS тоже на портах 1545 и 2545.
Каким образом можно доработать скрипт, чтобы он работал?
Сервер 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"
Удаление и создание хоста заново не помогают
Доброго времени суток!
Если будет минутка, прошу Вашей помощи
Для тестирования необходимо было создать второй кластер на сервере. Программеры прикрутили.
В итоге статистика перестала работать.
Тестирование при ручном запуске 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 использовать, но, думаю, таких экспериментаторов, как мы, немного и время на доработку несопоставимо с итоговым результатом.
Заранее благодарен
Добавить мониторинг объектов заблокированных БД и время блокировки. Есть ли необходимость в этом?
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
Добрый день
подскажите как импортировать ваш шаблон в Zabbix 5.0.20?
выдает ошибку:
Ошибочный тег "/zabbix_export/templates/template(1)/discovery_rules/discovery_rule(1)": неожиданный тег "snmp_community".
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.