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.
    • 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.