Contadores de rendimiento
El Counter Manager de ONTAP mantiene amplia información sobre el rendimiento de cada sistema ONTAP. Exporta estos datos como un conjunto de contadores de rendimiento puede utilizar para evaluar el rendimiento del sistema ONTAP y ayudarle a alcanzar sus objetivos de rendimiento.
Acceda a los contadores de rendimiento de ONTAP
Puede acceder a los contadores de rendimiento de ONTAP usando dos API diferentes así como a través de la interfaz de línea de comandos de ONTAP.
La API DE REST de ONTAP es la opción preferida y estratégica al automatizar la administración de sus implementaciones de ONTAP. |
API ONTAPI
La API ONTAAPI está disponible con el SDK de capacidad de gestión de redes de NetApp. Al utilizar ONTAPI, los contadores de rendimiento se definen dentro de una colección de objetos. Cada objeto corresponde a un componente físico o virtual del sistema. Puede haber una o varias instancias de cada objeto de acuerdo con la configuración del sistema.
Por ejemplo, si el sistema ONTAP tiene cuatro discos físicos, habrá cuatro instancias de disk
objeto, cada uno con su propio conjunto de contadores de rendimiento. Puede utilizar ONTAPI para acceder a los contadores individuales de cada instancia de disco.
API REST de ONTAP
A partir de ONTAP 9.11.1, también puede acceder a los datos de rendimiento mediante la API DE REST. En este caso, los contadores de rendimiento se organizan en tablas equivalentes a los objetos ONTAPI. Cada fila de tabla equivale a una instancia de un objeto ONTAPI .
Por ejemplo, si el sistema ONTAP tiene cuatro discos físicos, el disk
la tabla contendrá cuatro filas. Se puede acceder a cada una de las filas individualmente e incluye su propio conjunto de contadores de rendimiento disponibles como campos o columnas en la fila.
Prepare para usar la API DE REST
Debe prepararse antes de usar la API DE REST de ONTAP para acceder a los contadores de rendimiento.
Contadores de rendimiento organizados en tablas
Un subconjunto de los objetos de ONTAPI está disponible a través de la API REST de ONTAP y se presenta como tablas. Por ejemplo, el objeto ONTAPI hostadapter se presenta a través de LA API REST como la tabla host_adpeter. Cada adaptador de host del sistema está en una fila con su propio conjunto de contadores de rendimiento.
Nombre de la instancia | Contadores de rendimiento | |||||
---|---|---|---|---|---|---|
host_adaptador_1 |
total_read_ops_1 |
total_write_ops_1 |
bytes_read_1 |
bytes_written_1 |
max_link_data_rate_1 |
rscn_count_1 |
host_adaptador_2 |
total_read_ops_2 |
total_write_ops_2 |
bytes_read_2 |
bytes_written_2 |
max_link_data_rate_2 |
rscn_count_2 |
host_adaptador_3 |
total_read_ops_3 |
total_write_ops_3 |
bytes_read_3 |
bytes_written_3 |
max_link_data_rate_3 |
rscn_count_3 |
Resumen de los extremos de REST
Hay cuatro extremos principales disponibles para acceder a los contadores de rendimiento de ONTAP y las tablas relacionadas.
Cada uno de los extremos REST proporciona acceso de sólo lectura y sólo admite el método HTTP GET. Consulte "Referencia de API" si quiere más información. |
-
/cluster/contador/mesas
Devuelve un conjunto de tablas de contadores y sus definiciones de esquema.
-
/cluster/contador/tablas/{name}
Devuelve información acerca de una sola tabla de contadores con nombre.
-
/cluster/counter/tables/{counter_name}/rows
Devuelve un conjunto de filas de una tabla de contadores con nombre.
-
/cluster/counter/tables/{counter_name}/rows/{id}
Devuelve una fila específica de una tabla de contadores con nombre.
Migrar desde ONAPI a la API DE REST
NetApp proporciona un amplio soporte para migrar el código de automatización desde ONAPI a la API DE REST de ONTAP. Esto incluye documentación de asignación para identificar la tabla de contadores de rendimiento equivalente disponible en la API DE REST para un objeto ONTAPI determinado.
Puede acceder a la documentación actual "Asignación de contador de rendimiento de ONTAP" en línea. También hay un selector de versiones disponible para acceder a versiones anteriores de la documentación basada en la versión de ONTAP.
Comience con la API DE REST de ONTAP
Los siguientes ejemplos ilustran cómo se utiliza la API DE REST para acceder a los contadores de rendimiento de ONTAP. Esto incluye recuperar una lista de las tablas disponibles y explorar la estructura de tablas.
Antes de empezar
Revise la siguiente información antes de utilizar los ejemplos.
Necesitará una cuenta de administrador de ONTAP con la contraseña.
Necesitará la dirección IP de administración del clúster configurada para el sistema ONTAP.
Todos los ejemplos incluidos a continuación sólo se pueden utilizar para recuperar información con el método GET de HTTP.
Cada ejemplo de curva incluye una o más variables como se indican con capitales y texto entre corchetes. Asegúrese de sustituir estas variables por valores reales, según corresponda a su entorno.
La secuencia de ejemplos a continuación muestra cómo usar los extremos DE REST disponibles para recuperar los contadores de rendimiento. Consulte Resumen de los extremos de REST si quiere más información.
Ejemplo 1: Todas las tablas de contadores de rendimiento
Es posible usar esta llamada de API DE REST para detectar todas las tablas disponibles del gestor de contadores.
Ejemplo de curl
curl --request GET --user admin:<PASSWORD> 'https://<ONTAP_IP_ADDRESS>/api/cluster/counter/tables'
Ejemplo de resultado JSON
{
"records": [
{
"name": "copy_manager",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/copy_manager"
}
}
},
{
"name": "copy_manager:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/copy_manager%3Aconstituent"
}
}
},
{
"name": "disk",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/disk"
}
}
},
{
"name": "disk:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/disk%3Aconstituent"
}
}
},
{
"name": "disk:raid_group",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/disk%3Araid_group"
}
}
},
{
"name": "external_cache",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/external_cache"
}
}
},
{
"name": "fcp",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/fcp"
}
}
},
{
"name": "fcp:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/fcp%3Anode"
}
}
},
{
"name": "fcp_lif",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/fcp_lif"
}
}
},
{
"name": "fcp_lif:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/fcp_lif%3Anode"
}
}
},
{
"name": "fcp_lif:port",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/fcp_lif%3Aport"
}
}
},
{
"name": "fcp_lif:svm",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/fcp_lif%3Asvm"
}
}
},
{
"name": "fcvi",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/fcvi"
}
}
},
{
"name": "headroom_aggregate",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/headroom_aggregate"
}
}
},
{
"name": "headroom_cpu",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/headroom_cpu"
}
}
},
{
"name": "host_adapter",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/host_adapter"
}
}
},
{
"name": "iscsi_lif",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/iscsi_lif"
}
}
},
{
"name": "iscsi_lif:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/iscsi_lif%3Anode"
}
}
},
{
"name": "iscsi_lif:svm",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/iscsi_lif%3Asvm"
}
}
},
{
"name": "lif",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/lif"
}
}
},
{
"name": "lif:svm",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/lif%3Asvm"
}
}
},
{
"name": "lun",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/lun"
}
}
},
{
"name": "lun:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/lun%3Aconstituent"
}
}
},
{
"name": "lun:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/lun%3Anode"
}
}
},
{
"name": "namespace",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/namespace"
}
}
},
{
"name": "namespace:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/namespace%3Aconstituent"
}
}
},
{
"name": "nfs_v4_diag",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/nfs_v4_diag"
}
}
},
{
"name": "nic_common",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/nic_common"
}
}
},
{
"name": "nvmf_lif",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/nvmf_lif"
}
}
},
{
"name": "nvmf_lif:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/nvmf_lif%3Aconstituent"
}
}
},
{
"name": "nvmf_lif:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/nvmf_lif%3Anode"
}
}
},
{
"name": "nvmf_lif:port",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/nvmf_lif%3Aport"
}
}
},
{
"name": "object_store_client_op",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/object_store_client_op"
}
}
},
{
"name": "path",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/path"
}
}
},
{
"name": "processor",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/processor"
}
}
},
{
"name": "processor:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/processor%3Anode"
}
}
},
{
"name": "qos",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/qos"
}
}
},
{
"name": "qos:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/qos%3Aconstituent"
}
}
},
{
"name": "qos:policy_group",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/qos%3Apolicy_group"
}
}
},
{
"name": "qos_detail",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/qos_detail"
}
}
},
{
"name": "qos_detail_volume",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/qos_detail_volume"
}
}
},
{
"name": "qos_volume",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/qos_volume"
}
}
},
{
"name": "qos_volume:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/qos_volume%3Aconstituent"
}
}
},
{
"name": "qtree",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/qtree"
}
}
},
{
"name": "qtree:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/qtree%3Aconstituent"
}
}
},
{
"name": "svm_cifs",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_cifs"
}
}
},
{
"name": "svm_cifs:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_cifs%3Aconstituent"
}
}
},
{
"name": "svm_cifs:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_cifs%3Anode"
}
}
},
{
"name": "svm_nfs_v3",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_nfs_v3"
}
}
},
{
"name": "svm_nfs_v3:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_nfs_v3%3Aconstituent"
}
}
},
{
"name": "svm_nfs_v3:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_nfs_v3%3Anode"
}
}
},
{
"name": "svm_nfs_v4",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_nfs_v4"
}
}
},
{
"name": "svm_nfs_v41",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_nfs_v41"
}
}
},
{
"name": "svm_nfs_v41:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_nfs_v41%3Aconstituent"
}
}
},
{
"name": "svm_nfs_v41:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_nfs_v41%3Anode"
}
}
},
{
"name": "svm_nfs_v42",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_nfs_v42"
}
}
},
{
"name": "svm_nfs_v42:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_nfs_v42%3Aconstituent"
}
}
},
{
"name": "svm_nfs_v42:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_nfs_v42%3Anode"
}
}
},
{
"name": "svm_nfs_v4:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_nfs_v4%3Aconstituent"
}
}
},
{
"name": "svm_nfs_v4:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/svm_nfs_v4%3Anode"
}
}
},
{
"name": "system",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/system"
}
}
},
{
"name": "system:constituent",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/system%3Aconstituent"
}
}
},
{
"name": "system:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/system%3Anode"
}
}
},
{
"name": "token_manager",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/token_manager"
}
}
},
{
"name": "volume",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/volume"
}
}
},
{
"name": "volume:node",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/volume%3Anode"
}
}
},
{
"name": "volume:svm",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/volume%3Asvm"
}
}
},
{
"name": "wafl",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/wafl"
}
}
},
{
"name": "wafl_comp_aggr_vol_bin",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/wafl_comp_aggr_vol_bin"
}
}
},
{
"name": "wafl_hya_per_aggregate",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/wafl_hya_per_aggregate"
}
}
},
{
"name": "wafl_hya_sizer",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/wafl_hya_sizer"
}
}
}
],
"num_records": 71,
"_links": {
"self": {
"href": "/api/cluster/counter/tables"
}
}
}
Ejemplo 2: Información de alto nivel sobre una tabla específica
Puede usar esta llamada de la API DE REST para mostrar la descripción y los metadatos de una tabla específica. El resultado incluye el propósito de la tabla y el tipo de datos que contiene cada contador de rendimiento. La tabla host_adapter se utiliza en este ejemplo.
Ejemplo de curl
curl --request GET --user admin:<PASSWORD> 'https://<ONTAP_IP_ADDRESS>/api/cluster/counter/tables/host_adapter'
Ejemplo de resultado JSON
{
"name": "host_adapter",
"description": "The host_adapter table reports activity on the Fibre Channel, Serial Attached SCSI, and parallel SCSI host adapters the storage system uses to connect to disks and tape drives.",
"counter_schemas": [
{
"name": "bytes_read",
"description": "Bytes read through a host adapter",
"type": "rate",
"unit": "per_sec"
},
{
"name": "bytes_written",
"description": "Bytes written through a host adapter",
"type": "rate",
"unit": "per_sec"
},
{
"name": "max_link_data_rate",
"description": "Max link data rate in Kilobytes per second for a host adapter",
"type": "raw",
"unit": "kb_per_sec"
},
{
"name": "node.name",
"description": "System node name",
"type": "string",
"unit": "none"
},
{
"name": "rscn_count",
"description": "Number of RSCN(s) received by the FC HBA",
"type": "raw",
"unit": "none"
},
{
"name": "total_read_ops",
"description": "Total number of reads on a host adapter",
"type": "rate",
"unit": "per_sec"
},
{
"name": "total_write_ops",
"description": "Total number of writes on a host adapter",
"type": "rate",
"unit": "per_sec"
}
],
"_links": {
"self": {
"href": "/api/cluster/counter/tables/host_adapter"
}
}
}
Ejemplo 3: Todas las filas de una tabla específica
Puede usar esta llamada a la API DE REST para ver todas las filas de una tabla. Esto indica qué instancias de los objetos de Counter Manager existen.
Ejemplo de curl
curl --request GET --user admin:<PASSWORD> 'https://<ONTAP_IP_ADDRESS>/api/cluster/counter/tables/host_adapter/rows'
Ejemplo de resultado JSON
{
"records": [
{
"id": "dmp-adapter-01",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/host_adapter/rows/dmp-adapter-01"
}
}
},
{
"id": "dmp-adapter-02",
"_links": {
"self": {
"href": "/api/cluster/counter/tables/host_adapter/rows/dmp-adapter-02"
}
}
}
],
"num_records": 2,
"_links": {
"self": {
"href": "/api/cluster/counter/tables/host_adapter/rows"
}
}
}
Ejemplo 4: Fila única en una tabla específica
Es posible usar esta llamada de API DE REST para ver valores de contadores de rendimiento para una instancia de gestor de contadores específica de la tabla. En este ejemplo, se solicitan los datos de rendimiento de uno de los adaptadores de host.
Ejemplo de curl
curl --request GET --user admin:<PASSWORD> 'https://<ONTAP_IP_ADDRESS>/api/cluster/counter/tables/host_adapter/rows/dmp-adapter-01'
Ejemplo de resultado JSON
{
"counter_table": {
"name": "host_adapter"
},
"id": "dmp-adapter-01",
"properties": [
{
"name": "node.name",
"value": "dmp-node-01"
}
],
"counters": [
{
"name": "total_read_ops",
"value": 25098
},
{
"name": "total_write_ops",
"value": 48925
},
{
"name": "bytes_read",
"value": 1003799680
},
{
"name": "bytes_written",
"value": 6900961600
},
{
"name": "max_link_data_rate",
"value": 0
},
{
"name": "rscn_count",
"value": 0
}
],
"_links": {
"self": {
"href": "/api/cluster/counter/tables/host_adapter/rows/dmp-adapter-01"
}
}
}