Ad Widget

Collapse

Как создать LLD zabbix_sender

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • testik777
    Member
    • Dec 2014
    • 31

    #1

    Как создать LLD zabbix_sender

    выкладываю рабочий способ создания правила обнаружения через zabbix_sender+ЭД (тип zabbix траппер). В инете точные инструкции найти не смог, особенно долго пришлось разбираться в каком формате нужно заббиксу скормить данные для правила обнаружения, выяснить это смог только через лог заббикса с debuglevel=4.
    Скрипт для sender'a написан на cmd. Предлагаю добавить эту статью в вики и пополнить ее скриптами на других языках (т.к. cmd это не универсально).
    Code:
    @echo off
    @setlocal ENABLEDELAYEDEXPANSION EnableExtensions
    FOR /d %%a IN (1a 2b 3c 4d 5e 6f j) DO (
    rem echo {"data":[{"{#TEST}":"%%a"}]}
    zabbix_sender.exe -c "zabbix_agentd.win.conf"  -k trap5 -o {\"data\":[{\"{#TEST}\":\"%%a\"}]}
    zabbix_sender.exe -c "zabbix_agentd.win.conf" -k trap[%%a] -o "данные для прототипа ЭД"
    )
    В заббиксе создаем Правило обнаружение

    фильтр как обычно

    В итоге после запуска скрипта должно получиться
    Last edited by testik777; 18-10-2016, 12:13.
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Заявка на успех. Только в следующий раз начинайте с документации - ее читать не так утомительно, как лог 4-го уровня отладки: https://www.zabbix.com/documentation...ых

    Еще бы неплохо было пример из жизни привести - где это использовать и почему лучше, чем остальные способы.

    Comment

    • testik777
      Member
      • Dec 2014
      • 31

      #3
      Originally posted by sadman
      Заявка на успех. Только в следующий раз начинайте с документации - ее читать не так утомительно, как лог 4-го уровня отладки: https://www.zabbix.com/documentation...ых

      Еще бы неплохо было пример из жизни привести - где это использовать и почему лучше, чем остальные способы.
      я читал эту часть, но в ней не все нюансы отображены, из кода на перле далеко не следует, что строка для данных в sender должна выглядить именно так {\"data\":[{\"{#макрос}\":\"данные\"}]} и что заббикс нормально это воспримет в цикле, т.е. ему не обязательно данные дать одной строкой в формате {\"data\":[{\"{#макрос}\":\"данные\", \"{#макрос}\":\"данные\", \"{#макрос}\":\"данные\"}]} (что на cmd я даже не прдставляю как сделать), а можно просто данные несколькими строками {\"data\":[{\"{#макрос}\":\"данные\"}]} через цикл дать.
      И это можно было выяснить только через просмотр лога то, как сервер принимает эти данные и сравнить их с логом от правил обнаружения обычных активных проверок.

      а нужно это тем кто хочет настроить работу заббикса так, чтобы заббикс-агент службой не вешать, а отправлять данные за НАТ. Пример я этот привел просто для описания возможностей zabbix-sendera
      Last edited by testik777; 26-05-2015, 10:33.

      Comment

      • yukra
        Senior Member
        • Apr 2013
        • 1359

        #4
        Originally posted by testik777
        я читал эту часть, но в ней не все нюансы отображены, из кода на перле далеко не следует, что строка для данных в sender должна выглядить именно так {\"data\":[{\"{#макрос}\":\"данные\"}]} и что заббикс нормально это воспримет в цикле, т.е. ему не обязательно данные дать одной строкой в формате {\"data\":[{\"{#макрос}\":\"данные\", \"{#макрос}\":\"данные\", \"{#макрос}\":\"данные\"}]} (что на cmd я даже не прдставляю как сделать), а можно просто данные несколькими строками {\"data\":[{\"{#макрос}\":\"данные\"}]} через цикл дать.
        И это можно было выяснить только через просмотр лога то, как сервер принимает эти данные и сравнить их с логом от правил обнаружения обычных активных проверок.
        Формат можно узнать через zabbix_get -s <IP> -k 'vfs.fs.discovery' например, то, что данные можно слать не одной строкой, предполагает формат json
        Insignificant whitespace is allowed before or after any token. The whitespace characters are: character
        tabulation (U+0009), line feed (U+000A), carriage return (U+000D), and space (U+0020). Whitespace is not
        allowed within any token, except that space is allowed in strings.
        http://www.ecma-international.org/pu...T/ECMA-404.pdf

        Originally posted by testik777
        а нужно это тем кто хочет настроить работу заббикса так, чтобы заббикс-агент службой не вешать, а отправлять данные за НАТ
        Use the Force, Luke

        Comment

        • sadman
          Senior Member
          • Dec 2010
          • 1611

          #5
          Originally posted by yukra
          Use the Force, Luke
          Да не, свой резон в этом есть.
          Например - подвеситься на роутер какой-нить. Не мутить с toolchain и дикими манипуляциями в области прошивки, а быстро накидаться на sh. zabbix_sender же тоже вроде бы можно имитировать простой telnet-like засылкой данных.

          Comment

          • testik777
            Member
            • Dec 2014
            • 31

            #6
            Originally posted by yukra
            Формат можно узнать через zabbix_get -s <IP> -k 'vfs.fs.discovery'
            ну и получаешь что-то типа {"data":[{"{#FSNAME}":"A:","{#FSTYPE}":"UNKNOWN"},{"{#FSNAM E}":"C:","{#FSTYPE}":"NTFS"},{"{#FSNAME}":"D:","{# FSTYPE}":"CDFS"}]}

            а потом медитируешь почему такая строка в zabbix-sender не канает. и нигде кроме лога выкопать не получиться , что оказывается если в sender такую строку запихнуть то на сервер она придет в виде {"data:[{"{#FSNAME}:A:,{#FSTYPE}:UNKNOWN},{{#FSNAME}:C:,{# FSTYPE}:NTFS},{#FSTYPE}:CDFS"}]}, на что сервак резонно отвечает no json format. Мелкие нюансы, но именно на них куча времени уходит
            Last edited by testik777; 26-05-2015, 11:11.

            Comment

            • yukra
              Senior Member
              • Apr 2013
              • 1359

              #7
              Originally posted by testik777
              ну и получаешь что-то типа {"data":[{"{#FSNAME}":"A:","{#FSTYPE}":"UNKNOWN"},{"{#FSNAM E}":"C:","{#FSTYPE}":"NTFS"},{"{#FSNAME}":"D:","{# FSTYPE}":"CDFS"}]}

              а потом медитируешь почему такая строка в zabbix-sender не канает. и нигде кроме лога выкопать не получиться , что оказывается если в sender такую строку запихнуть то на сервер она придет в виде {"data:[{"{#FSNAME}:A:,{#FSTYPE}:UNKNOWN},{{#FSNAME}:C:,{# FSTYPE}:NTFS},{#FSTYPE}:CDFS"}]}, на что сервак резонно отвечает no json format. Мелкие нюансы, но именно на них куча времени уходит
              Вы меня заинтриговали и я таки заморочился:
              Code:
              [root@zabbix ~]# zabbix_sender  -z zabbix -s zabbix -k test.json -o '{"data":[{"{#FSNAME}":"A:","{#FSTYPE}":"UNKNOWN"},{"{#FSNAM E}":"C:","{#FSTYPE}":"NTFS"},{"{#FSNAME}":"D:","{# FSTYPE}":"CDFS"}]}'
              info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000042"
              sent: 1; skipped: 0; total: 1
              [root@zabbix ~]# mysql zabbix -e 'select value from items, history_text where items.itemid = history_text.itemid and items.key_ like "test.json" limit 1\G'
              *************************** 1. row ***************************
              value: {"data":[{"{#FSNAME}":"A:","{#FSTYPE}":"UNKNOWN"},{"{#FSNAM E}":"C:","{#FSTYPE}":"NTFS"},{"{#FSNAME}":"D:","{# FSTYPE}":"CDFS"}]}
              [root@zabbix ~]#
              Так что проблема медитировали вы судя по всему над экранированием в винде, а не над нюансами заббикс-сендера.

              Comment

              • testik777
                Member
                • Dec 2014
                • 31

                #8
                Originally posted by yukra
                Вы меня заинтриговали и я таки заморочился:
                Code:
                [root@zabbix ~]# zabbix_sender  -z zabbix -s zabbix -k test.json -o '{"data":[{"{#FSNAME}":"A:","{#FSTYPE}":"UNKNOWN"},{"{#FSNAM E}":"C:","{#FSTYPE}":"NTFS"},{"{#FSNAME}":"D:","{# FSTYPE}":"CDFS"}]}'
                info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000042"
                sent: 1; skipped: 0; total: 1
                [root@zabbix ~]# mysql zabbix -e 'select value from items, history_text where items.itemid = history_text.itemid and items.key_ like "test.json" limit 1\G'
                *************************** 1. row ***************************
                value: {"data":[{"{#FSNAME}":"A:","{#FSTYPE}":"UNKNOWN"},{"{#FSNAM E}":"C:","{#FSTYPE}":"NTFS"},{"{#FSNAME}":"D:","{# FSTYPE}":"CDFS"}]}
                [root@zabbix ~]#
                Так что проблема медитировали вы судя по всему над экранированием в винде, а не над нюансами заббикс-сендера.
                Возможно, однако, если посмотреть мой изначальный пример, я бы не мог использовать конструкцию с одинарными кавычками ('{"data"...}]}'), т.к. они бы экранировали подстановку переменных.

                Comment

                Working...