Ad Widget

Collapse

дашборд с кнопкой

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Hell Berrel
    Junior Member
    • Oct 2024
    • 25

    #1

    дашборд с кнопкой

    Приветствую всех
    zabbix 7.4
    Делаю мониторинг контроллера солнечных батарей. Данные с него передаются через агента2 протоколом modbus. Данные о текущем состоянии идут нормально. Есть пара регистров, которые нужно записать в него. Мне надо раз в полгода поменять значение battery.type и battery.capacity и записать новые значения. Потом через полгода поменять обратно.
    Click image for larger version

Name:	image_34890.png
Views:	20
Size:	6.5 KB
ID:	515508
    В принципе, я с помощью скриптов на питоне (выполнение определенной команды с параметрами) получилось записать в реестр на контроллере. Есть желание сделать дашборд типа такого,
    где в выпадающем списке выбираю тип батареи, а в поле емкости надо ввести значение и нажать на кнопку. Значения должны записаться и при обновлении виджета отобразить текущее состояние. Такое вообще возможно?
    Сам не программист, замучил chatgpt, подсовывал ему и официальную документацию и готовые модули и дашборды, кружит кругами меня.
    Чего удалось добиться, это на примере из документации сделать такое
    Click image for larger version

Name:	image_34891.png
Views:	15
Size:	68.8 KB
ID:	515509
    при вводе какого-нибудь значения "текст" в поле и нажатии на кнопку внизу появляется надпись Hello "текст"
    И опять он собирирается меня по третьему кругу завернуть
    Last edited by Hell Berrel; Yesterday, 19:16.
  • Hell Berrel
    Junior Member
    • Oct 2024
    • 25

    #2
    По идее можно сделать вызовом внешних скриптов (как стандартных ping, ) через хост ? Тогда надо будет несколько скриптов регистрировать? Хотелось бы через дашборд.

    Comment

    • Kos
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • Aug 2015
      • 3455

      #3
      Вы пишете: "сделать дашборд типа такого", но не видно, какого такого. Вы хотели приложить какие-то скриншоты?

      По сути. В Zabbix'е через меню Alerts -> Scripts можно настраивать скрипты нескольких типов:
      • которые срабатывают автоматически в качестве реакции на событие (т.е. при срабатывании какого-то триггера);
      • запускаемых вручную, при этом привязанных к хосту (доступны через меню хоста в некоторых виджетах, где отображается информация о хосте);
      • запускаемых вручную, при этом привязанных к событию (доступны через меню события - например, на экране проблем).
      Очевидно, что первый случай - не ваш; остаётся выбрать между вторым и третьим вариантами. В обоих случаях можно настроить так, чтобы при выборе соответствующего пункта меню для вызова скрипта сначала запрашивался какой-то ввод от пользователя (частный случай - выбор конкретного варианта из заранее настроенного меню), можно пытаться этим воспользоваться. При запросе ввода от пользователя можно заранее указать какую-то подсказку (типа "введите то-то и то-то"), но поле ввода только одно (правда, можно запросить пользователя ввести в это поле несколько значений и с помощью регулярного выражения проверить этот ввод на корректность).

      Comment

      • Hell Berrel
        Junior Member
        • Oct 2024
        • 25

        #4
        скриншоты в тексте письма были. на всякий случай пробублирую
        вот такой дашборд хочется. При выборе типа и вводе значения и при нажатии кнопки. Пока только 2 итема для записи, остальные некоторые параметры будут просто читаться. Они у меня на другой странице.
        Click image for larger version  Name:	image_34890.png Views:	3 Size:	6.5 KB ID:	515511
        а добиться получилось вот это
        при вводе какого-нибудь значения "текст" в поле и нажатии на кнопку внизу появляется надпись Hello "текст"
        Click image for larger version  Name:	image_34891.png Views:	4 Size:	68.8 KB ID:	515512
        Last edited by Hell Berrel; Yesterday, 19:18.

        Comment

        • Hell Berrel
          Junior Member
          • Oct 2024
          • 25

          #5
          2 вариант это здесь же?
          Click image for larger version

Name:	Screenshot 2026-07-30 220518.png
Views:	12
Size:	23.2 KB
ID:	515514
          Т.е. по идее работающие скрипты на питоне со всеми нужными параметрами надо прописать тут и запускать отсюда.

          Comment

          • Kos
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • Aug 2015
            • 3455

            #6
            Originally posted by Hell Berrel
            2 вариант это здесь же?
            [...]
            Т.е. по идее работающие скрипты на питоне со всеми нужными параметрами надо прописать тут и запускать отсюда.
            Да, скрипты для хостов - здесь (но не только здесь); скрипты для проблем - на экране проблем.
            Мне больше нравится идея мониторить что-то, требующее внимания (пример из нашей практики: код завершения некоторых джобов, регулярно запускаемых на некой машине), и привязывать к событию "проблема" скрипт, который позволяет исправить эту проблему (в данном случае: перезапустить джоб). Тогда на экране проблем появляется возможность через меню запустить этот скрипт, при этом передавая скрипту необходимую для его работы информацию (имя хоста, имя джоба, текущее значение контролируемого параметра и т.п.).
            Скажем, если для вашего случая тип и ёмкость батареи известны заранее (например, они заданы какими-то тегами или опрашиваются как значения неких элементов данных), и на их основе скрипт может самостоятельно вычислить, какие нужно прописать новые значения, то эти существующие значения можно передавать скрипту без явного запроса к пользователю.

            Ну и да, скрипты не обязаны быть написанными именно на питоне - их можно писать на чём угодно, что есть в вашем распоряжении и чем умеете пользоваться (bash, perl, JavaScript на стороне сервера Zabbix и т.д.).

            Comment

            • Hell Berrel
              Junior Member
              • Oct 2024
              • 25

              #7
              Ну тут не совсем надо их мониторить, и не требует особого внимания. На точке установлены 2 типа батарей, гелевые/обычные кислотные для зимнего варианта и литиевые для летного. В начале периода зима/лето надо в контроллер записать значение типа батареи и ее емкость (эти значения известны и не меняются). и не трогать до смены периода.
              Т.е.
              Это данные (часть) из контроллера заряда
              Click image for larger version

Name:	Screenshot 2026-07-31 121636.png
Views:	7
Size:	185.6 KB
ID:	515534

              Опрашиваются из родительского элемента
              Click image for larger version

Name:	Screenshot 2026-07-31 121848.png
Views:	7
Size:	23.2 KB
ID:	515527 Click image for larger version

Name:	Screenshot 2026-07-31 121710.png
Views:	7
Size:	41.2 KB
ID:	515528

              Click image for larger version

Name:	Screenshot 2026-07-31 121944.png
Views:	7
Size:	82.8 KB
ID:	515529
              Изменять параметры с помощью скрипта с передачей параметров можно одной командой ./epever_ctl.py write 10.10.1.50 502 1 9000 1. Это уже проверенный вариант. Значения записываются и в latest data меняются.
              Attached Files

              Comment

              • Hell Berrel
                Junior Member
                • Oct 2024
                • 25

                #8
                я кажется склонился к запуску скриптов из меню хоста

                Comment

                • Kos
                  Senior Member
                  Zabbix Certified SpecialistZabbix Certified Professional
                  • Aug 2015
                  • 3455

                  #9
                  Т.е. контроллер отдаёт не реальные данные батареи, а те, что прописаны (скриптом) где-то в его настройках?
                  Другими словами, раз в сезон (дважды в год) нужно для каждой точки выполнить два действия: а) заменить батарею; б) перезаписать данные об этом в настройках контроллера?
                  Тогда да, получается, что скрипту надо передавать один из двух наборов параметров: для летнего сезона и для зимнего. В этом случае, действительно, можно заранее прописать эти наборы как варианты пользовательского ввода с типом "Dropdown", и вызывать что-то наподобие такого:
                  Code:
                  /путь/к/скрипту/epever_ctl.py write {HOST.CONN} {MANUALINPUT}
                  Ещё и в поле "Input prompt" прописать что-нибудь вроде: "Выберите вариант (первый - для зимнего сезона, второй - для летнего):".

                  Comment

                  • Hell Berrel
                    Junior Member
                    • Oct 2024
                    • 25

                    #10
                    Originally posted by Kos
                    Т.е. контроллер отдаёт не реальные данные батареи, а те, что прописаны (скриптом) где-то в его настройках?
                    Другими словами, раз в сезон (дважды в год) нужно для каждой точки выполнить два действия: а) заменить батарею; б) перезаписать данные об этом в настройках контроллера?
                    Тогда да, получается, что скрипту надо передавать один из двух наборов параметров: для летнего сезона и для зимнего. В этом случае, действительно, можно заранее прописать эти наборы как варианты пользовательского ввода с типом "Dropdown", и вызывать что-то наподобие такого:
                    Code:
                    /путь/к/скрипту/epever_ctl.py write {HOST.CONN} {MANUALINPUT}
                    Ещё и в поле "Input prompt" прописать что-нибудь вроде: "Выберите вариант (первый - для зимнего сезона, второй - для летнего):".
                    нет, контроллер реальные данные отдает, но не нашей батареи. При изменении типа батареи он сам подставляет зашитые нужные параметры
                    да, батарею не мониторю, нечем. свинцовые и гелевые в принципе не могут, а литиевая, хоть имеет bms, но кроме как с локального блютуза к ней не подключишься.
                    да, там контроллеру надо сказать какой тип батареи и и какой емкости
                    да, скрипт через макросы работает
                    да, уже сделал за полчаса три скрипта на замену типа. После отпуска сделаю ввод емкости.
                    Тем более изменение через командную строку проработал чуть ранее. А в этом случае можно одной командой сразу на все контроллеры сделать.

                    Сейчас на месте тестирую, сервер и агент2 на нем и все остальное рядом. В дальнейшем на удаленном компе, где агент стоит и откуда доступ есть ко всем точкам, достаточно же перенести скрипты на тот комп и прописать вызовы через userparameters?
                    Last edited by Hell Berrel; Today, 15:33.

                    Comment

                    • Hell Berrel
                      Junior Member
                      • Oct 2024
                      • 25

                      #11
                      Originally posted by Kos
                      Ещё и в поле "Input prompt" прописать что-нибудь вроде: "Выберите вариант (первый - для зимнего сезона, второй - для летнего):".
                      а вот тут можно при вызове скрипта еще и выбор сделать? Тогда один скрипт нужен, а не три

                      Comment

                      Working...