Ad Widget

Collapse

Regexp в имени

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Tahoma
    Junior Member
    • Oct 2016
    • 16

    #1

    Regexp в имени

    Доброго времени суток!
    Прошу помощи в решении проблемы. Обвешиваю триггерами коммутатор DGS-3120. Создал обнаружение вида:
    discovery[{#SNMPVALUE},.1.3.6.1.2.1.2.2.1.2]

    Добавил прототип элементов c именем:
    Alias of interface {#SNMPVALUE}

    И в итоге получаю табличку вида:
    Alias of interface D-Link DGS-3120-24SC R4.00.015 Port 1 on Unit 1
    Alias of interface D-Link DGS-3120-24SC R4.00.015 Port 3 on Unit 1
    Alias of interface D-Link DGS-3120-24SC R4.00.015 Port 4 on Unit 1

    и т.д.

    Вопрос:
    Можно ли как-нибудь удалять определенную запись в этих именах, чтобы не было 'D-Link DGS-3120-24SC R4.00.015'?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    В правиле обнаружения есть закладка "Filters", куда можно прописать своё регулярное выражение. Не подходит?

    Comment

    • sadman
      Senior Member
      • Dec 2010
      • 1611

      #3
      ТС хочет из имени интерфейса подстроку удалить, как я понял, а не определенные записи целиком.

      Comment

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

        #4
        Originally posted by sadman
        ТС хочет из имени интерфейса подстроку удалить, как я понял, а не определенные записи целиком.
        Если так - то нет, нельзя. Но можно сделать как-то так (пример из моего шаблона для коммутаторов Juniper):
        Attached Files

        Comment

        • Tahoma
          Junior Member
          • Oct 2016
          • 16

          #5
          Originally posted by Kos
          Если так - то нет, нельзя. Но можно сделать как-то так (пример из моего шаблона для коммутаторов Juniper):
          Подойдет для этой DGSки, но есть старые SNRки, где ifName тоже кривой.

          А в исходниках не поможете найти, где идет это преобразование?
          Допустим есть у меня имя:
          Alias of interface {#SNMPVALUE}.todel('Port')
          а ещё лучше
          Alias of interface {#SNMPVALUE.todel('Port')}

          Обнаруживаю todel и из строки SNMPVALUE удаляю все в плоть до первого входящего Port.

          Вот в www\zabbix\include\classes\macros\CMacrosResolver. php есть кусок:
          PHP Code:
          public function resolveItemNames(array $items) {
          ...
          foreach (
          $expanded_keys as $key => $expanded_key) {
                          if (
          $item_key_parser->parse($expanded_key) == CParser::PARSE_SUCCESS) {
                              foreach (
          $macro_values[$key] as $macro => &$value) {
                                  if ((
          $param $item_key_parser->getParam($macro[1] - 1)) !== null) {
                                      
          $value $param;
                                  }
                              }
                              unset(
          $value);
                          }
                      }
          ... 
          $param содержит выводимые значения, но, похоже, обрабатывается только макрос $1, ну или полного вывода строки я не нашел.

          Comment

          Working...