Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
sailz1 opened this issue Oct 11, 2019 · 11 comments
Closed

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

sailz1 opened this issue Oct 11, 2019 · 11 comments

Comments

@sailz1
Copy link

sailz1 commented Oct 11, 2019

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

@sailz1
Copy link
Author

sailz1 commented Oct 11, 2019

точнее, я уже исправил скрипты, чтобы он мог запускаться, явно прописал host:port
cluster_res = subprocess.check_output(['rac', 'cluster', 'list', '192.168.1.254:2545']).decode('cp866').strip()
Скрипт работает, итемы создаются и мониторятся

Как вариант можно создать еще 2 скрипта с нужными [:], и создавать второй комплект прототипов, но хотелось бы универсальности

@kulpin74
Copy link
Owner

Добрый день!

Не очень понял, RAC по идее должен увидеть оба кластера...
Что у вас пишет команда rac cluster list?
По крайней мере в случае с #4 было именно так

@sailz1
Copy link
Author

sailz1 commented Oct 12, 2019

Пишу с телефона, под рукой доступа к кластеру нет. Запрос "rac cluster list" возвращает единственный локальный кластер. Но, т.к в запросе не указан server:port то по умолчанию опрашивается localhost:1540, а в моем случае портов 2: 1540 и 2540.
И если я выполню запрос rac cluster list localhost:2540 вернет второй единственный локальный кластер.
На втором кластере живет база "документооборота" и такое решение не от меня и обусловлено тем, что проще перезапустить одну службу и выкинуть пользователей из "документооборота"

@sailz1
Copy link
Author

sailz1 commented Oct 12, 2019

И соответственно запрос rac infobase summary list --cluster=$cluster вернет кучу баз, а запрос rac infobase summary list --cluster=$cluster server:port вернет единственную базу "документооборот"

@kulpin74
Copy link
Owner

ок, в понедельник подумаю как элегантно решить задачку

@sailz1
Copy link
Author

sailz1 commented Oct 12, 2019

Я опробовал вариант создать массив строк cluster_res двумя запросами:
cluster_res = subprocess.check_output(['rac', 'cluster', 'list', 'server:port']).decode('cp866').strip()
cluster_res += subprocess.check_output(['rac', 'cluster', 'list', 'server:port2']).decode('cp866').strip()
ib_li, но выходит ошибка.
А в идеале параметр server:port передавать скрипту, чтобы не компилировать .exe шник

@sailz1
Copy link
Author

sailz1 commented Oct 12, 2019

А вообще, не задумывались над вариантом, чтобы весь результат команды rac session list --cluser = $cluster --infobaser $infobase собирать в Json и отдавать zabbix у, а там уже разбирать через зависимые элементы. Так любой желающий мог бы получить нужные ему результаты, например, мне интересно получать все количественные данные о соединениях

@kulpin74
Copy link
Owner

Доброго дня!

Я опробовал вариант создать массив строк cluster_res двумя запросами:
cluster_res = subprocess.check_output(['rac', 'cluster', 'list', 'server:port']).decode('cp866').strip()
cluster_res += subprocess.check_output(['rac', 'cluster', 'list', 'server:port2']).decode('cp866').strip()
ib_li, но выходит ошибка.
Просто сложить не получится

Самый простой вариант: можно передавать дополнительным параметром имя/адрес сервера. Но тогда придется копию шаблона делать на каждый дополнительный сервер.

Ну либо сделать более сложный шаблон, который будет оперировать массивом серверов RAS.

Простой вариант завтра видимо смогу выложить, сложный надо будет разбираться

@kulpin74
Copy link
Owner

А вообще, не задумывались над вариантом, чтобы весь результат команды rac session list --cluser = $cluster --infobaser $infobase собирать в Json и отдавать zabbix у, а там уже разбирать через зависимые элементы. Так любой желающий мог бы получить нужные ему результаты, например, мне интересно получать все количественные данные о соединениях

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

Как вариант можно попробовать передавать список параметров который необходим. В шаблоне по умолчанию оставить те что стандартные, если необходимо что-то экзотическое, то прям в шаблоне и указать что нужно еще. Как вам такой вариант?

@sailz1
Copy link
Author

sailz1 commented Oct 14, 2019

На самом деле я на вашу разработку вышел, когда искал примеры зависимых прототипов элементов для шаблона заббикса.
Похожее решение сделал на powershell 5.1. Решение сырое, но рабочее. Через LLD создаются итемы. В качестве ключа указываются uuid базы, uuid кластера и адрес:порт сервера. Но мое решение для всех итемов запускал свой скрипт, а баз более 20шт, итемов более 200шт, в итоге агент не успевал передавать данные за отведенное время и сервер заббикса помечал его недоступным.
Пришел к выводу, что нужно собирать все значения в целом по кластеру и в разрезе инфобаз через json.
Ваше решение тем и понравилось.
Более подробно написал на почту, если вы не против)

@kulpin74
Copy link
Owner

TODO: Добавить указание сервера RAS и порта в параметрах скриптов, по умолчанию localhost:1565, при передаче параметра использовать переданное

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants