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.
  • H
    H
    hsvt
    wrote on last edited by
    #2

    Неужели никто не использует мониторинг на агентах вида {instance} ?

    Number of output packets on interface {instance}
    Net.Interface.PacketsOut(*)
    

    Какой нужен Instance Discovery и filter для того, чтобы в графиках получить нужный СПИСОК интерфейсов со статистикой?

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

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

      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;
      
      }
      
      1 Reply Last reply
      0
      • 2
        2
        2c2i
        wrote on last edited by
        #4

        Но судя по nxget blabla Agent.SupportedLists, subagent lmsensors не предоставляет никакого LMSensors.ValueList, то есть чтобы сделать как вы хотите, нужно либо пропатчить сабагент, либо через ExternalList в конфиге агента определить этот список(костыльно)

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

          @2c2i said in LMsensors:

          Но судя по nxget blabla Agent.SupportedLists, subagent lmsensors не предоставляет никакого LMSensors.ValueList, то есть чтобы сделать как вы хотите, нужно либо пропатчить сабагент, либо через ExternalList в конфиге агента определить этот список(костыльно)

          Спасибо, кстати в моём nxagentd.conf (Хотя версия последняя RC) вообще не было упоминания о ExternalList. Нашёл только тут - https://www.netxms.org/documentation/adminguide/agent-management.html

          Вы скриптом только lo фильтруете ?

          1 Reply Last reply
          0
          • 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