Contadores de desempenho
O ONTAP Counter Manager mantém informações abrangentes sobre o desempenho de cada sistema ONTAP. Ele exporta esses dados como um conjunto de contadores de desempenho que você pode usar para avaliar o desempenho do seu sistema ONTAP e ajudar a atingir suas metas de desempenho.
Acesse os contadores de desempenho do ONTAP
Você pode acessar os contadores de desempenho do ONTAP usando duas APIs diferentes, bem como através da interface de linha de comando do ONTAP.
A API REST do ONTAP é a opção preferida e estratégica ao automatizar a administração de implantações do ONTAP. |
API ONTAPI
A API ONTAPI está disponível com o SDK de gerenciamento de rede da NetApp. Ao usar ONTAPI, os contadores de desempenho são definidos dentro de uma coleção de objetos. Cada objeto corresponde a um componente físico ou virtual do sistema. Pode haver uma ou mais instâncias de cada objeto com base na configuração do sistema.
Por exemplo, se o seu sistema ONTAP tiver quatro discos físicos, haverá quatro instâncias do disk
objeto, cada uma com seu próprio conjunto de contadores de desempenho. Você pode usar o ONTAPI para acessar os contadores individuais para cada instância de disco.
API REST do ONTAP
A partir do ONTAP 9.11,1, você também pode acessar os dados de desempenho por meio da API REST. Neste caso, os contadores de desempenho são organizados em tabelas que são equivalentes aos objetos ONTAPI. Cada linha de tabela é equivalente a uma instância de um objeto ONTAPI.
Por exemplo, se o seu sistema ONTAP tiver quatro discos físicos, a disk
tabela conterá quatro linhas. Cada uma das linhas pode ser acessada individualmente e inclui seu próprio conjunto de contadores de desempenho disponíveis como campos ou colunas na linha.
Prepare-se para usar a API REST
Você deve se preparar antes de usar a API REST do ONTAP para acessar os contadores de desempenho.
Contadores de desempenho organizados em tabelas
Um subconjunto dos objetos ONTAPI está disponível através da API REST do ONTAP e apresentado como tabelas. Por exemplo, o objeto ONTAPI hostadapter é apresentado através da API REST como a tabela host_adpater. Cada adaptador de host no sistema é uma linha com seu próprio conjunto de contadores de desempenho.
Nome da instância | Contadores de desempenho | |||||
---|---|---|---|---|---|---|
host_adapter_1 |
total_read_ops_1 |
total_write_ops_1 |
bytes_read_1 |
bytes_written_1 |
max_link_data_rate_1 |
rscn_count_1 |
host_adapter_2 |
total_read_ops_2 |
total_write_ops_2 |
bytes_read_2 |
bytes_written_2 |
max_link_data_rate_2 |
rscn_count_2 |
host_adapter_3 |
total_read_ops_3 |
total_write_ops_3 |
bytes_read_3 |
bytes_written_3 |
max_link_data_rate_3 |
rscn_count_3 |
Resumo dos pontos finais REST
Existem quatro pontos finais principais disponíveis para acessar os contadores de desempenho do ONTAP e tabelas relacionadas.
Cada um dos pontos finais REST fornece acesso somente leitura e suporta apenas o método HTTP GET. Consulte "Referência da API" para obter mais informações. |
-
/cluster/contador/tabelas
Retorna uma coleção de tabelas de contador e suas definições de esquema.
-
/cluster/counter/tables/(nome)
Retorna informações sobre uma única tabela de contador nomeada.
-
/cluster/counter/tables/ [nome_contador]/linhas
Retorna uma coleção de linhas de uma tabela de contador nomeada.
-
*/cluster/counter/tables//counter_name/rows/
Retorna uma linha específica de uma tabela de contador nomeada.
Migração do ONTAPI para a API REST
O NetApp oferece suporte extensivo para migrar seu código de automação do ONTAPI para a API REST do ONTAP. Isso inclui a documentação de mapeamento para identificar a tabela de contador de desempenho equivalente disponível na API REST para um determinado objeto ONTAPI.
Você pode acessar a documentação atual "Mapeamento do contador de desempenho do ONTAP" on-line. Há também um seletor de versão disponível para acessar versões anteriores da documentação com base na versão ONTAP.
Comece a usar a API REST do ONTAP
Os exemplos a seguir ilustram como usar a API REST para acessar os contadores de desempenho do ONTAP. Isso inclui recuperar uma lista das tabelas disponíveis e explorar a estrutura da tabela.
Antes de começar
Reveja as seguintes informações antes de utilizar os exemplos.
Você precisará de uma conta de administrador do ONTAP, incluindo a senha.
Você precisará do endereço IP de gerenciamento de cluster configurado para seu sistema ONTAP.
Todos os exemplos incluídos abaixo só podem ser usados para recuperar informações com o método HTTP GET.
Cada exemplo de curl inclui uma ou mais variáveis, conforme indicado com maiúsculas e texto entre colchetes. Certifique-se de substituir essas variáveis por valores reais, conforme apropriado para o seu ambiente.
A sequência de exemplos abaixo ilustra como usar os endpoints REST disponíveis para recuperar os contadores de desempenho. Consulte Resumo dos pontos finais REST para obter mais informações.
Exemplo 1: Todas as tabelas de contadores de desempenho
Você pode usar essa chamada de API REST para descobrir todas as tabelas disponíveis do gerenciador de contador.
Curl exemplo
curl --request GET --user admin:<PASSWORD> 'https://<ONTAP_IP_ADDRESS>/api/cluster/counter/tables'
Exemplo de saída 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"
}
}
}
Exemplo 2: Informações de alto nível sobre uma tabela específica
Você pode usar essa chamada de API REST para exibir a descrição e os metadados de uma tabela específica. A saída inclui a finalidade da tabela e que tipo de dados cada contador de desempenho contém. A tabela host_adapter é usada neste exemplo.
Curl exemplo
curl --request GET --user admin:<PASSWORD> 'https://<ONTAP_IP_ADDRESS>/api/cluster/counter/tables/host_adapter'
Exemplo de saída 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"
}
}
}
Exemplo 3: Todas as linhas em uma tabela específica
Você pode usar essa chamada de API REST para exibir todas as linhas de uma tabela. Isso indica que instâncias dos objetos do Counter Manager existem.
Curl exemplo
curl --request GET --user admin:<PASSWORD> 'https://<ONTAP_IP_ADDRESS>/api/cluster/counter/tables/host_adapter/rows'
Exemplo de saída 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"
}
}
}
Exemplo 4: Linha única em uma tabela específica
Você pode usar essa chamada de API REST para exibir valores de contador de desempenho para uma instância específica do gerenciador de contador na tabela. Neste exemplo, os dados de desempenho de um dos adaptadores de host são solicitados.
Curl exemplo
curl --request GET --user admin:<PASSWORD> 'https://<ONTAP_IP_ADDRESS>/api/cluster/counter/tables/host_adapter/rows/dmp-adapter-01'
Exemplo de saída 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"
}
}
}