Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Cálculo de memoria a través de SNMP

    Scheduled Pinned Locked Moved Español
    13 Posts 2 Posters 2.4k Views
    Loading More Posts
    • 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.
    • J
      javcasta
      last edited by

      Hola

      Desde la shell de un Debian con cliente snmp instalado:

      Para el total de memoria RAM:

      snmpget -v1 -c public 10.168.0.254 .1.3.6.1.4.1.2021.4.5.0
      

      Para la RAM en uso:

      snmpget -v1 -c public 192.168.0.254 .1.3.6.1.4.1.2021.4.6.0
      

      operador@debian0:~$ snmpget -v1 -c public 192.168.0.254 .1.3.6.1.4.1.2021.4.6.0
      iso.3.6.1.4.1.2021.4.6.0 = INTEGER: 882296
      operador@debian0:~$ snmpget -v1 -c public 192.168.0.254 .1.3.6.1.4.1.2021.4.5.0
      iso.3.6.1.4.1.2021.4.5.0 = INTEGER: 3036060

      Salu2

      Javier Castañón
      Técnico de comunicaciones, soporte y sistemas.

      Mi web: https://javcasta.com/

      Soporte scripting/pfSense https://javcasta.com/soporte/

      1 Reply Last reply Reply Quote 0
      • D
        Danixu86
        last edited by

        Sigue sin cuadrarme, ya que el que pones como memoria en uso da un número muy bajo. Haciendo cálculos sería como un 1% en lugar del que muestra el dashboard, además de que se acerca más a lo que da como libre el comando top.

        Un saludo.

        1 Reply Last reply Reply Quote 0
        • J
          javcasta
          last edited by

          Hola

          Sí, acabo de hacer pruebas con otro pfSense y no me cuadra a mi tampoco el snmpget… para la ram total y en uso.

          Habrá que documentarse algo más con snmp :)

          Salu2

          Javier Castañón
          Técnico de comunicaciones, soporte y sistemas.

          Mi web: https://javcasta.com/

          Soporte scripting/pfSense https://javcasta.com/soporte/

          1 Reply Last reply Reply Quote 0
          • D
            Danixu86
            last edited by

            Es raro porque he encontrado un script para sacar la información de la memoria en FreeBSD y la información que muestra se acerca más a la que saco yo por snmp que a la que muestra el dashboard:

            SYSTEM MEMORY INFORMATION:
            mem_wire:        1022111744 (    974MB) [ 12%] Wired: disabled for paging out
            mem_active:  +    343109632 (    327MB) [  4%] Active: recently referenced
            mem_inactive:+   6808539136 (   6493MB) [ 82%] Inactive: recently not referenced
            mem_cache:   +     38961152 (     37MB) [  0%] Cached: almost avail. for allocation
            mem_free:    +     80510976 (     76MB) [  0%] Free: fully available for allocation
            mem_gap_vm:  +            0 (      0MB) [  0%] Memory gap: UNKNOWN
            -------------- ------------ ----------- ------
            mem_all:     =   8293232640 (   7909MB) [100%] Total real memory managed
            mem_gap_sys: +    224112640 (    213MB)        Memory gap: Kernel?!
            -------------- ------------ -----------
            mem_phys:    =   8517345280 (   8122MB)        Total real memory available
            mem_gap_hw:  +     72589312 (     69MB)        Memory gap: Segment Mappings?!
            -------------- ------------ -----------
            mem_hw:      =   8589934592 (   8192MB)        Total real memory installed
            
            SYSTEM MEMORY SUMMARY:
            mem_used:        1661923328 (   1584MB) [ 19%] Logically used memory
            mem_avail:   +   6928011264 (   6607MB) [ 80%] Logically available memory
            -------------- ------------ ----------- ------
            mem_total:   =   8589934592 (   8192MB) [100%] Logically total memory
            

            mientras que mi script dice:

            OK: Total: 8317720kb - Free: 93708kb - Cache: 6674860kb - Percent: 18.62%
            

            Ambos coinciden, porque 18.62% redondeado es el 19% que da el script local para la memoria lógica utilizada.

            A lo mejor el dashboard no muestra la memoria libre real o tiene en cuenta algún dato extra…

            Un saludo.

            EDIT: Miento, viéndolos juntos he visto que tampoco cuadra al 100%... aún así se acerca más que el 17% que dice el dashboard.

            EDIT2:
            Rebuscando he visto:
            iso.3.6.1.4.1.2021.4.5.0: muestra la memoria real disponible (un poco menos que la instalada)
            iso.3.6.1.4.1.2021.4.15.0: muestra la memoria lógica disponible

            Si hacemos la relación sale:
            (8317720 - 6674860) / 8317720 * 100 = 19,75%, que si redondea hacia abajo sería un 19% mientras que la libre (100-19.75=80.25) sería un 80%. Esto ya si coincidiría con los datos que da el script interno.

            1 Reply Last reply Reply Quote 0
            • J
              javcasta
              last edited by

              Hola.

              He leido un hilo (del 2013)

              http://serverfault.com/questions/495835/how-can-i-get-freenas-and-pfsense-to-report-more-using-snmp

              After much research on this I discovered what the problem was. Both pfSense and FreeNAS provide SNMP support through the FreeBSD begemot SNMP daemon (bsnmpd). In order to provide memory usage, CPU usage, and Load Average information, the begemot SNMP daemon needs to have an additional module, snmp_ucd.so loaded.

              I found the following forum thread explaining to load snmp_ucd.so, however it was not present on my two systems.

              To resolve this, I created a virtual machine and installed FreeBSD 8.3 on it. Inside this virtual machine, I used the FreeBSD Ports system to download and build the required snmp_ucd.so library using:

              cd /usr/ports/net-mgmt/bsnmp-ucd
              make all install clean
              cd /usr/ports/net-mgmt/bsnmptools
              make all install clean

              After that, I used scp to copy /usr/local/lib/snmp_ucd.so from the FreeBSD virtual machine to both my pfSense server as well as my FreeNAS server.

              Resumiendo: Que el begemot SNMP daemon de pfSense (al menos en el 2013) para cáculo de cpu y ram necesita el módulo snmp_ucd.

              ¿Y cómo carga el módulo? Construyendolo en otra máquina FreeBSD (que se corresponda a la versión de pfSense), compilandolo y despues copiandolo donde corresponda en el pfSense …

              Por ahora no tengo tiempo para probar esto, ya comentaré si lo hago o veo otra solución

              Salu2

              Javier Castañón
              Técnico de comunicaciones, soporte y sistemas.

              Mi web: https://javcasta.com/

              Soporte scripting/pfSense https://javcasta.com/soporte/

              1 Reply Last reply Reply Quote 0
              • D
                Danixu86
                last edited by

                Pufff, eso se sale por mucho del nivel de modificación al que quiero llegar en este box. Si hago modificaciones de este tipo no creo que sean capaces de reconstruirlo algún día sin mi ayuda (hasta un simple script es mucho ya  ;D).

                De todas formas es interesante saberlo…

                ¡¡Un saludo!!

                1 Reply Last reply Reply Quote 0
                • J
                  javcasta
                  last edited by

                  Hola

                  No todo es SNMP. Se puede vía NRPE (Nagios: ejecución remota de plugin ) obtener esos datos: RAM en uso, etc.

                  Hay un paquete en pfSense 2.3.2_1: nrpe ( https://github.com/pfsense/FreeBSD-ports/commits/devel/net-mgmt/pfSense-pkg-nrpe )

                  Pero, claro, ya necesitas tener NSclient o NRPE/Nagios core fuera de pfsense …

                  Más trabajo, ... sobre esto ando documentandome, Nagios es un mundo, parece ser el estandar de facto para monitorizar redes y dispositivos de redes, aunque pfSense en su doc ( https://doc.pfsense.org/index.php/SNMP_Daemon ), recomienda http://www.cacti.net/ open y free.

                  Salu2

                  Javier Castañón
                  Técnico de comunicaciones, soporte y sistemas.

                  Mi web: https://javcasta.com/

                  Soporte scripting/pfSense https://javcasta.com/soporte/

                  1 Reply Last reply Reply Quote 0
                  • D
                    Danixu86
                    last edited by

                    Hola,

                    El nagios es un referente en cuanto a monitorización, porque tiene bastantes plugins hechos por la comunidad y es fácil de configurar (además de versátil). Además, añadir monitorizaciones nuevas es tan fácil como hacerse un script y ejecutarlo a través de NRPE.
                    Llevo tiempo usándolo y en este caso también lo estoy usando, lo que pasa es que el plugin de checkeo de memoria no está incluido en el paquete de plugins, por lo que ya hay que andar descargándolo y copiándolo. Antes de que se me dañara el pfSense ya lo tenía puesto, pero por lo que te comento de que quiero modificar lo menos posible el Box, no quiero volver a añadirlo y estoy intentándolo por otras formas.

                    Otro que también me gustó mucho es el Zabbix. Como pro tenía que instalabas el agente y muchísimas métricas se autoconfiguraban, por lo que la puesta en marcha era fácil. La contra es que tiene muchos menos plugins que el nagios.

                    Un saludo.

                    1 Reply Last reply Reply Quote 0
                    • J
                      javcasta
                      last edited by

                      Hola.

                      Desde un Debian, una forma de obtener la memoria total y usada de un pfSense

                      root@debian0:/home/user2# sshpass -p unaclave  ssh -t root@192.168.0.254 grep memory /var/run/dmesg.boot
                      real memory  = 8589934592 (8192 MB)
                      avail memory = 8172339200 (7793 MB)
                      Connection to 192.168.0.254 closed.

                      Salu2

                      Javier Castañón
                      Técnico de comunicaciones, soporte y sistemas.

                      Mi web: https://javcasta.com/

                      Soporte scripting/pfSense https://javcasta.com/soporte/

                      1 Reply Last reply Reply Quote 0
                      • D
                        Danixu86
                        last edited by

                        Lo miraré, porque crear un usuario si se puede y mantenerlo al recuperar con un fichero de configuración.

                        Gracias!!

                        1 Reply Last reply Reply Quote 0
                        • J
                          javcasta
                          last edited by

                          Hola

                          Otra forma de obtener el % de memoria ram usada, que he implementado mirando el código de:

                          https://github.com/pfsense/pfsense/blob/master/src/usr/local/www/includes/functions.inc.php#L36

                          [2.3.2-RELEASE][root@pfsense.localdomain]/scripts: echo php -r "require('/etc/inc/functions.inc');echo '% Memoria usada = '.round(get_single_sysctl('vm.stats.vm.v_page_count')-get_single_sysctl('vm.stats.vm.v_inactive_count')-get_single_sysctl('vm.stats.vm.v_cache_count')-get_single_sysctl('vm.stats.vm.v_free_count'))*100/get_single_sysctl('vm.stats.vm.v_page_count').' ';"
                          % Memoria usada = 8.2853002576452

                          El comando vía shell

                          echo `php -r "require('/etc/inc/functions.inc');echo '% Memoria usada = '.round(get_single_sysctl('vm.stats.vm.v_page_count')-get_single_sysctl('vm.stats.vm.v_inactive_count')-get_single_sysctl('vm.stats.vm.v_cache_count')-get_single_sysctl('vm.stats.vm.v_free_count'))*100/get_single_sysctl('vm.stats.vm.v_page_count').' ';"`
                          
                          

                          Y me coincide el 8% con el valos del widget del dashboard.

                          Salu2

                          Javier Castañón
                          Técnico de comunicaciones, soporte y sistemas.

                          Mi web: https://javcasta.com/

                          Soporte scripting/pfSense https://javcasta.com/soporte/

                          1 Reply Last reply Reply Quote 0
                          • J
                            javcasta
                            last edited by

                            Hola

                            La forma anterior de obtener la memoria ram usada, de forma más simplificada:

                            echo `php -r "require('/usr/local/www/includes/functions.inc.php');echo mem_usage();"`
                            

                            [2.3.2-RELEASE][root@pfsense.localdomain]/scripts: echo php -r "require('/usr/local/www/includes/functions.inc.php');echo mem_usage();"
                            8

                            Redondeando sin decimales ;)

                            Salu2

                            Javier Castañón
                            Técnico de comunicaciones, soporte y sistemas.

                            Mi web: https://javcasta.com/

                            Soporte scripting/pfSense https://javcasta.com/soporte/

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post
                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.