Ad Widget

Collapse

Агент в активном режим + удаленная команда

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • AlexUnder
    Junior Member
    • Jul 2018
    • 16

    #1

    Агент в активном режим + удаленная команда

    Добрый день!
    В оф. документации указано: "Удаленные команды не работают с активными Zabbix агентами. "
    Допустим, у меня в сети куча устройств, не относящихся к моей зоне ответственности, я использую активный мониторинг и авто добавление хостов по ключевому параметру "HostMetadata". Но получается, что удаленную команду я не произведу на хостах?
    Как я могу фильтровать хостов + выполнять определенную команду по триггерам?
    Заранее благодарен!
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Там, намерное, не совсем точно написано. Имеется в виду, что для работы удалённых команд нужен пассивный режим работы агента, соответственно - если агент работает только в активном режиме, то удалённую команду на нём не выполнить. Если агент настроен на работу как в активном, так и в пассивном режимах - всё ОК.

    Comment

    • sadman
      Senior Member
      • Dec 2010
      • 1611

      #3
      Дополню: в активном режиме выполнение команд возможно, но не разово (по триггеру), а периодически.

      Comment

      • AlexUnder
        Junior Member
        • Jul 2018
        • 16

        #4
        Спасибо за ответы!
        Получается, что если у меня "упала" определенная служба на сервере, то я её уже не запущу, т.к. команды к триггерам не вяжутся при активном мониторинге?(
        Это "слегка" обрывает задачу полной автоматизации. Может есть какие-нибудь "обходные пути"?
        Last edited by AlexUnder; 24-07-2018, 12:44.

        Comment

        • KirMatty
          Member
          • May 2017
          • 51

          #5
          А нельзя привязать периодический перезапуск службы к алерту от zabbix?

          Comment

          • AlexUnder
            Junior Member
            • Jul 2018
            • 16

            #6
            Originally posted by Kos
            Там, намерное, не совсем точно написано. Имеется в виду, что для работы удалённых команд нужен пассивный режим работы агента, соответственно - если агент работает только в активном режиме, то удалённую команду на нём не выполнить. Если агент настроен на работу как в активном, так и в пассивном режимах - всё ОК.
            Т.е. на рабочей станции необходимы оба конфигурационных файла? Или все через один конфиг настраивается?

            Comment

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

              #7
              Originally posted by AlexUnder
              Т.е. на рабочей станции необходимы оба конфигурационных файла? Или все через один конфиг настраивается?
              Да, в одном и том же конфиге нужны как параметр "ServerActive=" (для активного режима работы агента - например, для метрик log или eventlog), так и параметр "Server=" (для пассивного режима - в частности, если нужна возможность удалённого запуска команд).

              Comment

              • AlexUnder
                Junior Member
                • Jul 2018
                • 16

                #8
                Спасибо за помощь!

                Comment

                • AlexUnder
                  Junior Member
                  • Jul 2018
                  • 16

                  #9
                  Добрый день!
                  Во избежание создания новой темы спрошу тут.
                  Необходимо создать триггер, который перезапускает службу в зависимости от её состояния (к примеру - остановлена).
                  Редактируем конфигурационный файл (как написано в оф.документации)
                  Создаем элемент данных (для мониторинга службы), создаем триггер, пишем "net start" в операции.
                  Но триггер не срабатывает.Подскажите, пожалуйста, что я делаю не так ?
                  Скрины прилагаю.
                  Заранее благодарен!
                  Attached Files

                  Comment

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

                    #10
                    Попробую помочь, но, честно говоря, сам не очень понимаю, что у Вас там сейчас настроено.
                    Стандартная цепочка настроек: элемент данных, затем - триггер на этот элемент данных, затем - действие на срабатывание этого триггера.

                    1) Приходят ли данные в настроенный Вами элемент данных (Monitoring -> Latest data -> нужный хост; проще сориентироваться, если отметить обе галочки: "Show items without data" и "Show details")?
                    Глядя на настройки Вашего элемента данных, у меня уже возникают вопросы. Указана метрика "service.info[wuauserv,stopped]" (если я правильно разглядел на скриншоте), при этом тип информации указан как "Журнал (лог)". Вы действительно что-то видите в поступающих данных что-то с такими настройками в Latest data? Документация говорит, что для метрики "service.info" тип возвращаемых данных зависит от второго параметра, но ни в одном из случаев он не будет "Журнал (лог)". Далее, вторым параметром может быть: state (default), displayname, path, user, startup or description. У Вас же - почему-то "stopped". Вероятнее всего, при таких настройках в Latest data вместо данных будет сообщение о том, что элемент данных перешёл в неподдерживаемое состояние.
                    Скорее всего, имелось в виду "service.info[wuauserv,state]" (чтобы следить за состоянием службы), в этом случае возвращаться будет целое беззнаковое значение ("0" для "Running").

                    2) Срабатывает ли настроенный для этого элемента данных триггер? К сожалению, в приложенных Вами скриншотах триггер вообще не показан.
                    Я обычно в такой ситуации формулирую условие триггера примерно так:
                    {ZABBIX_TEST:service.info[wuauserv,state].max(#2)}=0
                    чтобы триггер переходил в состояние ПРОБЛЕМА когда значение "ноль" приходит второй раз подряд.
                    Соответственно, нужно убедиться, что срабатывает триггер (Monitoring -> Triggers).

                    3) Далее на срабатывание триггера уже навешивается конкретное действие. Тут, вроде, всё настроено верно; тем не менее - ещё пара замечаний:
                    а) в условиях действия упомянуты: "Важность триггеров = Чрезвычайная" и "Группа элементов данных содержит wuauserv". Как я сказал, Вашего триггера я не вижу; но, надеюсь, что важность у него именно такая. А вот в свойствах элемента данных видно, что он относится лишь к группе элементов данных "Processes" и никаким другим, а это название ("Processes") не содержит строки "wuauserv". Видимо, надо либо добавить такую группу элементов данных, либо подкорректировать условие Действия.
                    б) на вкладке Действия "Операции" в графе "Список целей" указан конкретный хост (узел сети). Для тестирования это сойдёт, но для реальной жизни, когда хостов с таким триггером много, практичнее указывать в качестве таргета "Current host" (чтобы действие выполнялось именно на том хосте, где сработал триггер).
                    в) кроме того, у Вас ещё и для операции задано дополнительное условие ("Событие подтверждено = Подтверждено"). Т.е. при таких настройках перезапускаться должно будет не сразу после срабатывания триггера, а лишь после того, как кто-то на это событие поставит подтверждение.

                    Comment

                    • AlexUnder
                      Junior Member
                      • Jul 2018
                      • 16

                      #11
                      Kos, Спасибо большое) "Открыли глаза" на многие нюансы.
                      Настроил по вашим поправкам.Но вот новая проблема:
                      1384:20180727:160055.804 active check configuration update from [192.168.77.91:10051] started to fail (cannot connect to [[192.168.77.91]:10051]: (null))
                      1384:20180727:160156.913 active check configuration update from [192.168.77.91:10051] is working again
                      Это я вижу в логах рабочей станции. Порты открыты, сервер работает.
                      Может дело в конфиге:

                      # This is a configuration file for Zabbix agent service (Windows)
                      # To get more information about Zabbix, visit http://www.zabbix.com

                      ############ GENERAL PARAMETERS #################

                      ### Option: LogType
                      # Specifies where log messages are written to:
                      # system - Windows event log
                      # file - file specified with LogFile parameter
                      # console - standard output
                      #
                      # Mandatory: no
                      # Default:
                      # LogType=file

                      ### Option: LogFile
                      # Log file name for LogType 'file' parameter.
                      #
                      # Mandatory: no
                      # Default:
                      # LogFile=

                      LogFile=c:\program files\zabbix\zabbix_agentd.log

                      ### Option: LogFileSize
                      # Maximum size of log file in MB.
                      # 0 - disable automatic log rotation.
                      #
                      # Mandatory: no
                      # Range: 0-1024
                      # Default:
                      LogFileSize=10

                      ### Option: DebugLevel
                      # Specifies debug level:
                      # 0 - basic information about starting and stopping of Zabbix processes
                      # 1 - critical information
                      # 2 - error information
                      # 3 - warnings
                      # 4 - for debugging (produces lots of information)
                      # 5 - extended debugging (produces even more information)
                      #
                      # Mandatory: no
                      # Range: 0-5
                      # Default:
                      # DebugLevel=3

                      ### Option: SourceIP
                      # Source IP address for outgoing connections.
                      #
                      # Mandatory: no
                      # Default:
                      # SourceIP=

                      ### Option: EnableRemoteCommands
                      # Whether remote commands from Zabbix server are allowed.
                      # 0 - not allowed
                      # 1 - allowed
                      #
                      # Mandatory: no
                      # Default:
                      EnableRemoteCommands=1

                      ### Option: LogRemoteCommands
                      # Enable logging of executed shell commands as warnings.
                      # 0 - disabled
                      # 1 - enabled
                      #
                      # Mandatory: no
                      # Default:
                      # LogRemoteCommands=0

                      ##### Passive checks related

                      ### Option: Server
                      # List of comma delimited IP addresses, optionally in CIDR notation, or hostnames of Zabbix servers.
                      # Incoming connections will be accepted only from the hosts listed here.
                      # If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally and '::/0' will allow any IPv4 or IPv6 address.
                      # '0.0.0.0/0' can be used to allow any IPv4 address.
                      # Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.domain
                      #
                      # Mandatory: no
                      # Default:
                      # Server=

                      Server=192.168.77.91

                      ### Option: ListenPort
                      # Agent will listen on this port for connections from the server.
                      #
                      # Mandatory: no
                      # Range: 1024-32767
                      # Default:
                      # ListenPort=10050

                      ### Option: ListenIP
                      # List of comma delimited IP addresses that the agent should listen on.
                      # First IP address is sent to Zabbix server if connecting to it to retrieve list of active checks.
                      #
                      # Mandatory: no
                      # Default:
                      # ListenIP=0.0.0.0

                      ### Option: StartAgents
                      # Number of pre-forked instances of zabbix_agentd that process passive checks.
                      # If set to 0, disables passive checks and the agent will not listen on any TCP port.
                      #
                      # Mandatory: no
                      # Range: 0-100
                      # Default:
                      # StartAgents=3

                      ##### Active checks related

                      ### Option: ServerActive
                      # List of comma delimited IPort (or hostnameort) pairs of Zabbix servers for active checks.
                      # If port is not specified, default port is used.
                      # IPv6 addresses must be enclosed in square brackets if port for that host is specified.
                      # If port is not specified, square brackets for IPv6 addresses are optional.
                      # If this parameter is not specified, active checks are disabled.
                      # Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]
                      #
                      # Mandatory: no
                      # Default:
                      # ServerActive=

                      ServerActive=192.168.77.91

                      ### Option: Hostname
                      # Unique, case sensitive hostname.
                      # Required for active checks and must match hostname as configured on the server.
                      # Value is acquired from HostnameItem if undefined.
                      #
                      # Mandatory: no
                      # Default:
                      # Hostname=


                      ### Option: HostnameItem
                      # Item used for generating Hostname if it is undefined. Ignored if Hostname is defined.
                      # Does not support UserParameters or aliases.
                      #
                      # Mandatory: no
                      # Default:
                      # HostnameItem=system.hostname

                      ### Option: HostMetadata
                      # Optional parameter that defines host metadata.
                      # Host metadata is used at host auto-registration process.
                      # An agent will issue an error and not start if the value is over limit of 255 characters.
                      # If not defined, value will be acquired from HostMetadataItem.
                      #
                      # Mandatory: no
                      # Range: 0-255 characters
                      # Default:
                      HostMetadata=Windows 21df83bf21bf0be663090bb8d412855


                      ### Option: HostMetadataItem
                      # Optional parameter that defines an item used for getting host metadata.
                      # Host metadata is used at host auto-registration process.
                      # During an auto-registration request an agent will log a warning message if
                      # the value returned by specified item is over limit of 255 characters.
                      # This option is only used when HostMetadata is not defined.
                      #
                      # Mandatory: no
                      # Default:
                      HostMetadataItem=21df83bf21bf0be663090bb8d412855

                      ### Option: RefreshActiveChecks
                      # How often list of active checks is refreshed, in seconds.
                      #
                      # Mandatory: no
                      # Range: 60-3600
                      # Default:
                      # RefreshActiveChecks=120

                      ### Option: BufferSend
                      # Do not keep data longer than N seconds in buffer.
                      #
                      # Mandatory: no
                      # Range: 1-3600
                      # Default:
                      # BufferSend=5

                      ### Option: BufferSize
                      # Maximum number of values in a memory buffer. The agent will send
                      # all collected data to Zabbix server or Proxy if the buffer is full.
                      #
                      # Mandatory: no
                      # Range: 2-65535
                      # Default:
                      # BufferSize=100

                      ### Option: MaxLinesPerSecond
                      # Maximum number of new lines the agent will send per second to Zabbix Server
                      # or Proxy processing 'log', 'logrt' and 'eventlog' active checks.
                      # The provided value will be overridden by the parameter 'maxlines',
                      # provided in 'log', 'logrt' or 'eventlog' item keys.
                      #
                      # Mandatory: no
                      # Range: 1-1000
                      # Default:
                      # MaxLinesPerSecond=20

                      ############ ADVANCED PARAMETERS #################

                      ### Option: Alias
                      # Sets an alias for an item key. It can be used to substitute long and complex item key with a smaller and simpler one.
                      # Multiple Alias parameters may be present. Multiple parameters with the same Alias key are not allowed.
                      # Different Alias keys may reference the same item key.
                      # For example, to retrieve paging file usage in percents from the server:
                      # Alias=pg_usageerf_counter[\Paging File(_Total)\% Usage]
                      # Now shorthand key pg_usage may be used to retrieve data.
                      # Aliases can be used in HostMetadataItem but not in HostnameItem or PerfCounter parameters.
                      #
                      # Mandatory: no
                      # Range:
                      # Default:

                      ### Option: Timeout
                      # Spend no more than Timeout seconds on processing.
                      #
                      # Mandatory: no
                      # Range: 1-30
                      # Default:
                      # Timeout=3

                      ### Option: PerfCounter
                      # Syntax: <parameter_name>,"<perf_counter_path>",<period>
                      # Defines new parameter <parameter_name> which is an average value for system performance counter <perf_counter_path> for the specified time period <period> (in seconds).
                      # For example, if you wish to receive average number of processor interrupts per second for last minute, you can define new parameter "interrupts" as following:
                      # PerfCounter = interrupts,"\Processor(0)\Interrupts/sec",60
                      # Please note double quotes around performance counter path.
                      # Samples for calculating average value will be taken every second.
                      # You may run "typeperf -qx" to get list of all performance counters available in Windows.
                      #
                      # Mandatory: no
                      # Range:
                      # Default:

                      ### Option: Include
                      # You may include individual files in the configuration file.
                      #
                      # Mandatory: no
                      # Default:
                      # Include=

                      # Include=c:\zabbix\zabbix_agentd.userparams.conf
                      # Include=c:\zabbix\zabbix_agentd.conf.d\
                      # Include=c:\zabbix\zabbix_agentd.conf.d\*.conf

                      ####### USER-DEFINED MONITORED PARAMETERS #######

                      ### Option: UnsafeUserParameters
                      # Allow all characters to be passed in arguments to user-defined parameters.
                      # The following characters are not allowed:
                      # \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
                      # Additionally, newline characters are not allowed.
                      # 0 - do not allow
                      # 1 - allow
                      #
                      # Mandatory: no
                      # Range: 0-1
                      # Default:
                      # UnsafeUserParameters=0


                      ### Option: UserParameter
                      # User-defined parameter to monitor. There can be several user-defined parameters.
                      # Format: UserParameter=<key>,<shell command>
                      #
                      # Mandatory: no
                      # Default:
                      # UserParameter=




                      ####### TLS-RELATED PARAMETERS #######

                      ### Option: TLSConnect
                      # How the agent should connect to server or proxy. Used for active checks.
                      # Only one value can be specified:
                      # unencrypted - connect without encryption
                      # psk - connect using TLS and a pre-shared key
                      # cert - connect using TLS and a certificate
                      #
                      # Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
                      # Default:
                      # TLSConnect=unencrypted

                      ### Option: TLSAccept
                      # What incoming connections to accept.
                      # Multiple values can be specified, separated by comma:
                      # unencrypted - accept connections without encryption
                      # psk - accept connections secured with TLS and a pre-shared key
                      # cert - accept connections secured with TLS and a certificate
                      #
                      # Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
                      # Default:
                      # TLSAccept=unencrypted

                      ### Option: TLSCAFile
                      # Full pathname of a file containing the top-level CA(s) certificates for
                      # peer certificate verification.
                      #
                      # Mandatory: no
                      # Default:
                      # TLSCAFile=

                      ### Option: TLSCRLFile
                      # Full pathname of a file containing revoked certificates.
                      #
                      # Mandatory: no
                      # Default:
                      # TLSCRLFile=

                      ### Option: TLSServerCertIssuer
                      # Allowed server certificate issuer.
                      #
                      # Mandatory: no
                      # Default:
                      # TLSServerCertIssuer=

                      ### Option: TLSServerCertSubject
                      # Allowed server certificate subject.
                      #
                      # Mandatory: no
                      # Default:
                      # TLSServerCertSubject=

                      ### Option: TLSCertFile
                      # Full pathname of a file containing the agent certificate or certificate chain.
                      #
                      # Mandatory: no
                      # Default:
                      # TLSCertFile=

                      ### Option: TLSKeyFile
                      # Full pathname of a file containing the agent private key.
                      #
                      # Mandatory: no
                      # Default:
                      # TLSKeyFile=

                      ### Option: TLSPSKIdentity
                      # Unique, case sensitive string used to identify the pre-shared key.
                      #
                      # Mandatory: no
                      # Default:
                      # TLSPSKIdentity=

                      ### Option: TLSPSKFile
                      # Full pathname of a file containing the pre-shared key.
                      #
                      # Mandatory: no
                      # Default:
                      # TLSPSKFile=



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

                      p.s.: В
                      Latest data элемент данных периодически опрашивает агента, но безрезультатно.

                      Comment

                      • AlexUnder
                        Junior Member
                        • Jul 2018
                        • 16

                        #12
                        Для выполнения вышеперечисленных манипуляций сервер должен опрашивать агента?
                        Остальные элементы данных корректно собирают информацию.
                        Last edited by AlexUnder; 27-07-2018, 12:22.

                        Comment

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

                          #13
                          Code:
                          1384:20180727:160055.804 active check configuration update from [192.168.77.91:10051] started to fail (cannot connect to [[192.168.77.91]:10051]: (null))
                          1384:20180727:160156.913 active check configuration update from [192.168.77.91:10051] is working again
                          Это трудно комментировать - здесь видно лишь, что попытка агента достучаться до сервера не удалась, а повторная через минуту - уже удалась. Причиной может быть что угодно - например, сеть или высокая занятость сервера. Если это не происходит регулярно, то и фиг с ним; если же возникает постоянно - то нужно разбираться. Поснимать, например, трафик между агентом и сервером - со стороны агента (захватывая его WireShark-ом) и со стороны сервера (хватая, скажем, tcpdump-ом), сравнить между собой - всё ли доходит, кто сбрасывает соединение... Может, какое сетевое оборудование по дороге шалит.

                          Может дело в конфиге:
                          Нормальный конфиг. Единственное замечание: при выставленном параметре "HostMetadata=" параметр "HostMetadataItem=" будет игнорироваться (но это не критично).

                          В Latest data элемент данных периодически опрашивает агента, но безрезультатно.
                          А "безрезультатно" - это как? Нет данных за выбранный диапазон времени, есть ошибка, вообще такой элемент данных в Latest data отсутствует?

                          Для выполнения вышеперечисленных манипуляций сервер должен опрашивать агента?
                          Если тип в свойствах элемента данных указан "Zabbix агент", то используется пассивный режим: сервер опрашивает агента. Если же, как на Вашем скриншоте, указано: "Zabbix агент (активный)", - то используется активный режим. В этом режиме уже сам агент с некоторым интервалом (заданным в конфиге параметром "RefreshActiveChecks=") обращается к серверу, чтобы забрать или обновить список тех метрик, за которыми он должен следить, а затем уже сам ими и занимается, периодически отсылая на сервер результаты своих проверок.
                          Активный режим более эффективен, т.к., во-первых, разгружает сервер от регулярного опроса всех агентов, а во-вторых - за одно TCP-соединение можно передать не одно значение одной метрики, а целую "пачку" (а как дополнительный бонус - если не удалось передать, то данные на какое-то время буферизируются агентом и передадутся позже).
                          Но для активного режима работы необходимо, чтобы имя агента (он его пишет в свой лог при старте) точно, с учётом регистра букв, совпадало с именем хоста в веб-интерфейсе Zabbix-а (кажется, в русском переводе это поле называется "техническое имя узла сети", в отличие от "видимого имени"). В случае, когда агент работает на Windows, а в его конфиг-файле параметры "Hostname=" и "HostnameItem=" не заданы (как это и есть по умолчанию), агент использует
                          NetBIOS имя хоста ограниченное 15 символами и только в ВЕРХНЕМ РЕГИСТРЕ - вне зависимости от длины и символов нижнего/верхнего регистра реального имени хоста.
                          Остальные элементы данных корректно собирают информацию.
                          Остальные элементы данных используют активный режим работы агента? Если да - то с режимом всё ОК (и все имена, о которых я писал выше, тоже ОК), и надо сосредоточиться только на отдельном элементе данных. Не забыть, как я писал, проставить в фильтре в Latest data обе галочки. Бывает, иногда просто агент ещё не успел забрать новую конфигурацию для активных проверок (но, как правило, для этого достаточно подождать несколько минут).
                          Last edited by Kos; 27-07-2018, 14:47.

                          Comment

                          • sadman
                            Senior Member
                            • Dec 2010
                            • 1611

                            #14
                            Дополню еще разок: агент может не выполнять действия по причине отсутствия у него прав. В Windows, например, он выполняется под аккаунтом LocalSystem, который не имеет прав на доступ к сети, например. Т.е. система тупо придавит все попытки взаимодействовать с WMI, который ходит на удаленную машину. Так у проблемы "несрабатывания" может появиться неочевидная (если не знать внутренних механизмов работы ОС) причина..

                            Comment

                            • AlexUnder
                              Junior Member
                              • Jul 2018
                              • 16

                              #15
                              Спасибо!
                              Originally posted by Kos
                              А "безрезультатно" - это как? Нет данных за выбранный диапазон времени, есть ошибка, вообще такой элемент данных в Latest data отсутствует?
                              Скрины прикрепил.
                              К слову, telnet 10050 на сервер не проходит.
                              На хосте множество элементов данных, в том числе активных агентов, информацию по ним успешно собирается. Что-то мне досказывает, что я сам допустил ошибку в настройке (на всякий случай приложу скрины всей настройки на сервере)
                              В данный момент служба стоит, логи на хосте пустые.
                              p.s.: Прошу прощения, что очень долго "мусолю" топик, но уж очень нужно, чтобы все это дело заработало

                              Ссылки на Latest data:




                              Ссылки на настройку:





                              https://fastpic.co/image/hNPXv0
                              https://fastpic.co/image/hNP6hJ
                              https://fastpic.co/image/hNPClz
                              https://fastpic.co/image/hNPLCn
                              Last edited by AlexUnder; 30-07-2018, 06:48.

                              Comment

                              Working...