Analytics(分析)数据集使用以下属性。除 suspended 以外的所有其他属性都不可变。
|
可用数据集:
ad.avglatency
ad.avglatency[op]
ad.avglatency[result]
ad.binds
ad.binds[hostname]
ad.binds[result]
ad.ops
ad.ops[op]
ad.ops[result]
arc.accesses[hit/miss]
arc.l2_accesses[hit/miss]
arc.l2_size
arc.size
arc.size[component]
cpu.utilization
cpu.utilization[mode]
dnlc.accesses[hit/miss]
fc.bytes
fc.ops
ftp.kilobytes
http.reqs
io.bytes
io.bytes[op]
io.disks[utilization=95][disk]
io.ops
io.ops[disk]
io.ops[op]
iscsi.bytes
iscsi.ops
metacap.bytesused
metacap.percentused
ndmp.diskkb
nfs2.ops
nfs2.ops[op]
nfs3.ops
nfs3.ops[op]
nfs4.ops
nfs4.ops[op]
nfs4-1.ops
nfs4-1.bytes
nic.kilobytes
nic.kilobytes[device]
nic.kilobytes[direction]
sftp.kilobytes
smb.ops
smb.ops[op]
列出所有配置的 Analytic 数据集。
请求示例:
GET /api/analytics/v1/datasets HTTP/1.1 Authorization: Basic Tm8gcGVla2luZyE= Host: zfs-storage.example.com:215 Accept: application/json
结果示例:
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 237 X-Zfssa-Analytics-Api: 1.0 { "datasets": [{ "dataset": "dataset-000", "href": "/api/analytics/v1/datasets/arc.accesses[hit/miss]", "name": "arc.accesses[hit/miss]" }, { "dataset": "dataset-001", "href": "/api/analytics/v1/datasets/arc.l2_accesses[hit/miss]", "name": "arc.l2_accesses[hit/miss]", }, { "dataset": "dataset-002", "href": "/api/analytics/v1/datasets/arc.l2_size", "name": "arc.l2_size", }, { "dataset": "dataset-003", "href": "/api/analytics/v1/datasets/arc.size", "name": "arc.size", }, { "dataset": "dataset-004", "href": "/api/analytics/v1/datasets/arc.size[component]", "name": "arc.size[component]", }, { ... }] }
获取指定的数据集的属性。
请求示例:
GET /api/analytics/v1/datasets/nfs4.ops HTTP/1.1 Authorization: Basic Tm8gcGVla2luZyE= Host: zfs-storage.example.com:215 Accept: application/json
结果示例:
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 237 X-Zfssa-Analytics-Api: 1.0 { "dataset": { "activity": "none", "dataset": "dataset-030", "explanation": "NFSv4 operations per second", "grouping": "Protocol", "href": "/api/analytics/v1/datasets/nfs4.ops", "incore": 296128, "name": "nfs4.ops", "size": 53211540, "suspended": false } }
创建新的数据集。
请求示例:
POST /api/analytics/v1/datasets HTTP/1.1 X-Auth-User: root X-Auth-Key: password Content-Type: application/json Content-Length: 26 {"statistic": "test.sine"}
结果示例:
HTTP/1.1 201 Created Content-Type: application/json Content-Length: 200 Location: /api/analytics/v1/datasets/test.sine { "dataset":{ "href": "/api/analytics/v1/datasets", "name": "test.sine", "grouping": "Test", "explanation": "sine per second", "incore": 34752, "size": 31912, "suspended": false, "activity": "none" } }
修改数据集命令用于暂停或恢复单个数据集的数据收集。
暂停请求示例:
POST /api/analytics/v1/datasets/nfs4.ops {"suspended":true}
恢复请求示例:
POST /api/analytics/v1/datasets/nfs4.ops {"suspended":false}
结果示例:
HTTP/1.1 202 Accepted Content-Type: application/json Content-Length: 228 X-Zfssa-Analytics-Api: 1.0 { "dataset" { ... "suspended": false } }
销毁数据集。
请求示例:
DELETE /api/analytics/v1/datasets/test.sine HTTP/1.1
结果示例:
HTTP/1.1 204 No Content X-Zfssa-Analytics-Api: 1.0
保存数据集。
请求示例:
PUT /api/analytics/v1/datasets/nfs4.ops/data
结果示例:
HTTP/1.1 202 Accepted
下表显示了在删改数据集时使用的查询参数。
|
请求示例:
以下示例删除 nfs4.ops 数据集中的所有每秒、每分钟和每小时数据。每天、每周、每月或每年收集的数据保留在数据集中。
DELETE /api/analytics/v1/datasets/nfs4.ops/data?granularity=hour
结果示例:
HTTP/1.1 204 No Content
请求示例:
以下示例删除 nfs4.ops 数据集中在指定的 endtime 之前收集的所有每秒、每分钟和每小时数据。
DELETE /api/analytics/v1/datasets/nfs4.ops/data?granularity=hour&endtime=20130910T00:00:00
从处于活动状态的 Analytic(分析)数据集返回数据。支持检索每秒的数据和细粒度数据。
下表显示了用于获取数据集数据的基于时间的查询参数。
|
start 时间不能是将来时间。如果收集数据所需的秒数会导致数据返回时间晚于当前时间,服务器将等待各个样例收集完毕,然后再返回数据。
要检索细粒度数据,请使用 span 和 granularity 参数的组合。使用了 span 和 granularity 时,将忽略 seconds 参数。如果 span 和 granularity 中的任一参数输入不正确,则会忽略此请求并改用 seconds 参数。如果请求不正确或不受支持,将显示错误消息 "Input span and granularity are not supported"。
span 和 granularity 参数可以按如下方式进行组合:
如果 span 为 minute,则 granularity 只能是 minute。
如果 span 为 hour,则 granularity 可以是 minute 或 hour。
如果 span 为 day,则 granularity 可以是 minute、hour 或 day。
如果 span 为 week,则 granularity 可以是 hour、day 或 week。
如果 span 为 month,则 granularity 可以是 day、week 或 month。
如果 span 为 year,则 granularity 可以是 week、month 或 year。
下表显示了返回的数据集数据属性。
|
用于收集两秒实时数据的请求示例:
GET /api/analytics/v1/datasets/io.ops[op]/data?start=now&seconds=2 HTTP/1.1 Authorization: Basic Tm8gcGVla2luZyE= Host: zfs-storage.example.com:215 Accept: text/x-yaml
结果示例:
HTTP/1.1 200 OK Content-Type: text/x-yaml X-Zfssa-Analytics-Api: 1.0 Transfer-Encoding: chunked { "data": [ { "sample": 457642682, "data": { "data": [ { "key": "write", "value": 199 } ], "value": 199 }, "startTime": "20200818T18:43:47", "samples": 457642683 }, { "sample": 457642683, "data": { "data": [ { "key": "write", "value": 289 } ], "value": 289 }, "startTime": "20200818T18:43:48", "samples": 457642684 } ] }
用于收集一周内每一天的数据的请求示例:
GET /api/analytics/v1/datasets/io.ops[op]/data?start=20200811T15:00:00&granularity=day&span=week HTTP/1.1 Authorization: Basic Tm8gcGVla2luZyE= Host: zfs-storage.example.com:215 Accept: text/x-yaml
以下请求报告 io.ops[op] 数据集是“按操作类型细分的每秒 I/O 操作数”(读取或写入):
GET /api/analytics/v1/datasets/io.ops[op]
结果示例。为简洁起见,省略了七个输出样例中的五个:
HTTP/1.1 200 OK Content-Type: text/x-yaml X-Zfssa-Analytics-Api: 1.0 Transfer-Encoding: chunked { "data": [ { "sample": 457197423, "data": { "max": 3156, "data": [ { "max": 588, "key": "read", "value": 6, "min": 0 }, { "max": 3156, "key": "write", "value": 45, "min": 0 } ], "value": 52, "min": 0 }, "startTime": "20200811T15:00:00", "samples": 457644011 }, { "sample": 457283823, "data": { "max": 3675, "data": [ { "max": 588, "key": "read", "value": 6, "min": 0 }, { "max": 3675, "key": "write", "value": 45, "min": 0 } ], "value": 52, "min": 0 }, "startTime": "20200812T15:00:23", "samples": 457644011 } ] }
还可以使用 sample 值作为 start 值。以下请求的结果是来自指定的一秒样例的数据:
GET /api/analytics/v1/datasets/io.ops[op]/data?start=457642682 HTTP/1.1