Los sistemas operativos Data ONTAP implementan el comando stats mediante el cual podemos monitorizar estadísticas de una controladora NetApp listando un número elevado de valores estadísticos tales como operaciones por segundo sobre un volumen o LUN, operaciones por protocolo (NFS, CIFS, iSCSI, FC), valores de latencia, valores sobre los discos físicos, interfaces de red, etc.
Netapp> stats The following commands are available; for more information type "stats help" explain list start stop help show stats help - Display command help. stats list - List available objects, instances, counters or presets in system. stats explain - Explain available objects or counters in system. stats show - Show all or selected statistics with formatting. stats start - Start background statistic collection. stats stop - Stop all background operations and discard results. Netapp>
Accediendo a la controladora en modo “admin”, modo predeterminado cuando iniciamos la sesión SSH, los objetos disponibles para consultar estadísticas se pueden obtener con el comando stats list objects. En realidad las estadísticas se consultan sobre instancias de esta lista de objetos puesto que en cada controladora encontramos varios discos, volúmenes, procesadores,…:
Netapp> stats list objects Objects: logical_replication_source aggregate lun audit_ng ndmp cifs nfsv3 disk processor dump qtree ext_cache_obj quota ext_cache raid fcp spinhi hostadapter system ifnet target iscsi_conn vfiler iscsi_lif volume iscsi avoa logical_replication_destination Netapp>
Si necesitamos estadísticas más avanzadas podemos listar los objetos de la misma forma accediendo previamente al modo de diagnóstico con el comando priv set diag.
Para cada instancia de cualquier objeto monitorizado existen un conjunto de contadores que son los que contienen la información que podemos interpretar. El número total de contadores para todos los objetos lo podemos obtener con el comando stats list counters. Si queremos listar todas las instancias del sistema podemos usar el comando stats list instances o en el caso concreto de instancias de un mismo objeto podemos usar stats list instances “nombre_objeto”.
Todos los parámetros y sus detalles para este interesante comando los podemos encontrar en esta sección de las NetApp Manual Pages. Veamos a continuación algunos ejemplos de uso:
1) Estadísticas para el agregado aggr0: stats show -i 1 -c aggregate:aggr0
Con este comando estamos indicando que se nos muestren todos los contadores del objeto aggregate para la instancia aggr0 en intervalos de un segundo (-i 1 ) con una salida en formato columnas (-c ). Si queremos una salida con intervalos mayores aumentaremos el valor del parámetro –i. Para una salida en formato registros usaremos –r en vez de –c.
En este caso la lista de contadores para el objeto aggregate es la siguiente:
instance_name: node_name: total_transfers: user_reads: user_writes: cp_reads: user_read_blocks: user_write_blocks: cp_read_blocks:
Conocidos los posibles contadores podemos combinarlos para obtener solamente aquellos datos que nos sean relevantes construyendo los comandos de la siguiente forma:
Netapp> stats show -i 1 -c aggregate:aggr0:user_reads Instance user_reads /s aggr0 154 aggr0 150 aggr0 101 aggr0 166 aggr0 236 Netapp>
En el ejemplo solamente listamos el contador user_reads de la instancia que ya conocemos. Si necesitamos más columnas las podemos anidar de la siguiente forma:
stats show -i 1 -c aggregate:aggr0:user_reads aggregate:aggr0:user_writes
Netapp> stats show -i 1 -c aggregate:aggr0:user_reads aggregate:aggr0:user_writes Instance user_reads user_writes /s /s aggr0 1515 27 aggr0 1854 5 aggr0 1469 0 aggr0 1435 0 aggr0 1746 8 Netapp>
Para cada contador que necesitemos listar indicaremos la “ruta nominativa” OBJETO:INSTANCIA:CONTADOR, todos ellos separados por un espacio. Con esta característica podemos listar instancias de objetos iguales o distintos y con instancias iguales o distintas todo ello con sus correspondientes contadores:
stats show -i 1 -c aggregate:aggr0:user_reads cifs:cifs:cifs_read_ops
Netapp> stats show -i 1 -c aggregate:aggr0:user_reads cifs:cifs:cifs_read_ops Instance user_reads /s Instance cifs_read_op /s aggr0 73 cifs 0 aggr0 657 cifs 3 aggr0 86 cifs 67 aggr0 78 cifs 4 Netapp>
En este ejemplo listamos las estadísticas de lectura para los usuarios sobre el agregado aggr0 y a su vez las operaciones de lectura de cifs.
2) Estadísticas para el protocolo fcp (útil para entornos donde se estén usando LUNs Fibre Channel): stats show -i 1 -c fcp
Netapp> stats show -i 1 -c fcp Instance instance_nam node_name fcp_ops fcp_latency fcp_write_da fcp_read_dat /s ms b/s b/s fcp fcp 37 0.79 192587 13060 fcp fcp 18 0.33 71600 16792 fcp fcp 67 0.90 491592 52200 fcp fcp 102 1.05 290192 67792 fcp fcp 63 0.63 191976 31112 Netapp>
3) Estadísticas de un interfaz virtual denominado Ig0: stats show -i 1 -c ifnet:Ig0
Netapp> stats show -i 1 -c ifnet:Ig0 Instance instance_nam node_name recv_packets recv_errors send_packets send_errors collisions recv_data send_data recv_drop_pa /s /s /s /s /s b/s b/s /s Ig0 Ig0 25 0 10 0 0 2869 1596 0 Ig0 Ig0 8 0 1 0 0 586 98 0 Ig0 Ig0 9 0 3 0 0 680 714 0 Ig0 Ig0 13 0 2 0 0 1460 316 0 Netapp>
Podemos filtrar los contadores, como hemos visto anteriormente, por ejemplo para ver los paquetes enviados y recibidos: stats show -i 1 -c ifnet:Ig0:send_packets ifnet:Ig0:recv_packets
Netapp> stats show -i 1 -c ifnet:Ig0:send_packets ifnet:Ig0:recv_packets Instance send_packets recv_packets /s /s Ig0 8 17 Ig0 1 10 Ig0 2 10 Ig0 2 6 Ig0 2 10 Netapp>
4) Estadísticas del procesador: stats show -i 1 -c processor
Por cada núcleo de un socket de CPU se genera una instancia. Si tenemos un socket de 4 cores entonces tendremos 4 instancias que en general se denominan processor0, processor1, processor2 y processor3. En este caso nos puede interesar el porcentaje de ocupación de cada núcleo así que podemos usar el comando de la siguiente forma:
stats show -i 1 -c processor:processor0:processor_busy processor:processor1:processor_busy processor:processor2:processor_busy processor:processor3:processor_busy
Netapp> stats show -i 1 -c processor:processor0:processor_busy processor:processor1:processor_busy processor:processor2:processor_busy processor:processor3:processor_busy Instance processor_bu % processor0 2 processor1 2 processor2 1 processor3 1 processor0 7 processor1 10 processor2 8 processor3 7 Netapp>
5) Estadísticas sobre un volumen:
Datos leídos en b/s: stats show -i 1 -c volume:DATA_ONTAP:read_data
Datos escritos en b/s: stats show -i 1 -c volume:DATA_ONTAP:write_data
Latencia de escritura en micro segundos: stats show -i 1 -c volume:DATA_ONTAP:write_latency
Latencia de lectura en micro segundos: stats show -i 1 -c volume:DATA_ONTAP:read_latency
Número total de operaciones por segundo: stats show -i 1 -c volume:DATA_ONTAP:total_ops
Estos contadores son muy parecidos a los de las LUNs. En ese caso el objeto es LUN y el nombre de la instancia se compone de su ruta seguido del número de serie:
stats show -i 1 -c lun:/vol/Oracle_Datafiles/Oradata01—gNnt$BGuauj:write_data
6) Por último veamos algunos ejemplos de contadores del objeto system que nos muestran valores globales:
IOPS de FCP: stats show -i 1 -c system:system:fcp_ops
IOPS de NFS: stats show -i 1 -c system:system:nfs_ops
IOPS de CIFS: stats show -i 1 -c system:system:cifs_ops
IOPS de lectura: stats show -i 1 -c system:system:read_ops
IOPS de escritura: stats show -i 1 -c system:system:write_ops
KB/s de datos leídos: stats show -i 1 -c system:system:disk_data_read
KB/s de datos escritos: stats show -i 1 -c system:system:disk_data_written
Para finalizar esta entrada comentar que existen los denominados presets, ubicados en la ruta /etc/stats/preset, que son archivos XML que contienen estructuras combinadas de instancias y contadores con un formato de salida definido y que nos ayuda a agrupar toda aquella información estadística necesaria con solo especificar el parámetro -p #nombre_preset. La estructura básica de estos archivos es la siguiente:
<?xml VERSION = «1.0» ?>
<preset>
<object name=»nombre»>
</object> </preset>
Para conocer más detalles y ejemplos de presets podemos consultar esta sección de las NetApp Manual Pages.
This Post by David Solé Pérez is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License