Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse
Brand Logo

NetXMS Forum

  1. Home
  2. Support (Russian)
  3. LMsensors

LMsensors

Scheduled Pinned Locked Moved Support (Russian)
15 Posts 3 Posters 59.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • 2
    2
    2c2i
    wrote on last edited by
    #6

    На линукс машинах - только lo, но тут кому как угодно.

    1 Reply Last reply
    0
    • H
      H
      hsvt
      wrote on last edited by
      #7

      Хорошо. Может кто нибудь тогда объяснит зачем столько параметров вида (*) ? Например я хочу смотреть изменение файла через File.Time.Change(*) при выборе его в DCI он уже подразумевает использование instance, но какой тогда метод Instance Discovery нужен, если в Agent.SupportedLists и Table его нет.

      И само событие DC_FILE_CHANGE подразумевает макрос %6 - Instance.

      Я что-то не совсем понимаю как можно все эти (*) использовать.

      1 Reply Last reply
      0
      • K
        K
        kozlov_ao
        wrote on last edited by
        #8

        Может кто нибудь тогда объяснит зачем столько параметров вида (*) ?

        Параметры вида (*) требуют передачи аргумента: имя файла, хоста и т.д. в качестве аргумента может использоваться и {instance} в том числе... но ни в коем случае не подразумевает его использование.

        какой тогда метод Instance Discovery нужен

        Скорее всего нужно будет использовать ExternalList

        1 Reply Last reply
        0
        • H
          H
          hsvt
          wrote on last edited by
          #9

          @kozlov_ao said in LMsensors:

          Может кто нибудь тогда объяснит зачем столько параметров вида (*) ?

          Параметры вида (*) требуют передачи аргумента: имя файла, хоста и т.д. в качестве аргумента может использоваться и {instance} в том числе... но ни в коем случае не подразумевает его использование.

          какой тогда метод Instance Discovery нужен

          Скорее всего нужно будет использовать ExternalList

          Не подразумевает, но тем не менее  при выборе любого параметра вида (*) - автоматически подставляется Description c instance (Time of last status change of file {instance}), что вводит немного в заблуждение, тем более если своих AgentLists параметры не имеют.

          Пробую.

          ExternalList = TemporaryFiles:/bin/ls -al /tmp
          ExternalList = LM:/usr/bin/sensors
          

          В DCI -> Parameter -> Select - должны они появиться ведь ? (Ессесно после перезапуска агента) через nxget в Agent.SupportedLists я их уже вижу и значения возвращают.

          На примере File.Time.Change(*) как можно применить {instance} чтобы не плодить множество DCI, а указывать нужные файлы в filter ?

          1 Reply Last reply
          0
          • K
            K
            kozlov_ao
            wrote on last edited by
            #10

            В DCI -> Parameter -> Select - должны они появиться ведь ?

            Нет. Это не монит.параметр, а список.

            через nxget в Agent.SupportedLists я их уже вижу

            Вы запрашиваете листы... и собственно получаете их.

            На примере File.Time.Change(*) как можно применить {instance} чтобы не плодить множество DCI

            Скрины во вложении. Лист настроен так:

            ExternalList = TemporaryFiles:/bin/ls -1 /tmp
            

            указывать нужные файлы в filter

            В фильтре просто прописывайте то, что нужно... например так (это один из рабочих фильтров, лень адаптировать):

            if (rindex($1,"/rom")>0) return false;
            value = AgentReadParameter($node, "FileSystem.Total(" . $1 . ")");
            return (value != null) && (value > 0);
            

            general.png

            instance.png

            1 Reply Last reply
            0
            • H
              H
              hsvt
              wrote on last edited by
              #11

              @kozlov_ao said in LMsensors:

              В DCI -> Parameter -> Select - должны они появиться ведь ?

              Нет. Это не монит.параметр, а список.

              через nxget в Agent.SupportedLists я их уже вижу

              Вы запрашиваете листы... и собственно получаете их.

              На примере File.Time.Change(*) как можно применить {instance} чтобы не плодить множество DCI

              Скрины во вложении. Лист настроен так:

              ExternalList = TemporaryFiles:/bin/ls -1 /tmp
              

              указывать нужные файлы в filter

              В фильтре просто прописывайте то, что нужно... например так (это один из рабочих фильтров, лень адаптировать):

              if (rindex($1,"/rom")>0) return false;
              value = AgentReadParameter($node, "FileSystem.Total(" . $1 . ")");
              return (value != null) && (value > 0);
              

              Благодарю.

              1 Reply Last reply
              0
              • H
                H
                hsvt
                wrote on last edited by
                #12

                @2c2i said in LMsensors:

                Если речь про интерфейсы - мы используем

                Interface {instance} input (bps)
                Net.Interface.BytesIn({instance})

                Instance discovery method = Agent List
                List name = Net.InterfaceList
                Filter script:

                use string2array;
                
                sub main(){
                	arr=string2array($1," ");
                	if (arr[5]!="lo") {
                		return %(true,arr[5],arr[5]);
                	}
                	return false;
                
                }
                

                Я добрался вновь до шаблонов с Net.Interface.BytesIn({instance}), но вот что-то функции такой не вижу string2array и естественно ничего не парситься как нужно, вы её сами написали ? Даже если просто сделать use string2array;

                Error executing script: Script compilation error (Error 16 in line 0: Requested module not found or cannot be loaded)
                

                Я тут нашёл еще примеры с индексами:

                if ($1 ~= "^([0-9]+) .*")
                {
                   return %(true, $1);  // at this point $1 contains first matching group
                }
                return false;
                

                Но и это не подходит, так как хотелось бы видеть именно имена интерфейсов ifDescr. То есть как то вырезать 4 значение из $1.

                104 10.15.10.1/32 23 000000000000 ppp93

                Еще пробовал с if inList($1," ","ppp93")

                Instance срабатывает в таком виде:

                Interface 104 10.15.10.1/32 23 CC7F00006500 ppp93 input (bps) = << ERROR >>
                
                1 Reply Last reply
                0
                • K
                  K
                  kozlov_ao
                  wrote on last edited by
                  #13

                  Про String2Array ничего не скажу. Похоже это самописный скрипт.
                  Касательно Вашего запроса по выдергиванию данных из строки:

                  test = trim(substr($1, rindex($1, " ")));
                  return test;
                  

                  где $1 - входное значение, а именно: "104 10.15.10.1/32 23 000000000000 ppp93"

                  PS: Вот тут https://wiki.netxms.org/wiki/Scripting_Guide крайне полезная информация по скриптам...

                  1 Reply Last reply
                  0
                  • 2
                    2
                    2c2i
                    wrote on last edited by
                    #14

                    string2array я в самом деле написал сам, реализация костыльная, однако может кому пригодится:

                    sub string2array(data, separator)
                    {
                    	array a;
                    	i=0;
                    	_length=length(data);
                    
                    	while(_length>0) {
                    		i=i+1;
                    		_idx=index(data,separator);
                    		if (_idx==0) {
                    			a[i]=data;
                    			break;
                    		}
                    		_length=length(data);
                    		a[i]=substr(data,0,_idx-1);
                    		data=substr(data,_idx+1);
                    	}
                       return a;
                    }
                    

                    Мне кажется что вообще функцию такого рода нужно добавить в NXSL

                    1 Reply Last reply
                    0
                    • H
                      H
                      hsvt
                      wrote on last edited by
                      #15

                      Если кому то нужно по именам интерфейсов (ifDescr)

                      idx=rindex($1, " ");
                      
                      if (idx > 0)
                      
                      {
                      name=substr($1, idx+1);
                      return %(true, name);
                      }
                      
                      return false;
                      
                      1 Reply Last reply
                      0

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better 💗

                      Register Login
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      Powered by NodeBB Contributors
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups