VAST Data monitors API

Monitors are analytics reports that can provide insight into capacity utilization and cluster performance. Top performer analytics are performance metrics of the n most active client users, views, client hosts, vips, vip pools and cnodes.

OpenAPI Specification

vastdata-monitors-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  description: VAST Management API definition
  title: VAST API Swagger Schema activedirectory monitors API
  version: '1.0'
security:
- ApiToken: []
tags:
- description: Monitors are analytics reports that can provide insight into capacity utilization and cluster performance. Top performer analytics are performance metrics of the n most active client users, views, client hosts, vips, vip pools and cnodes.
  name: monitors
paths:
  /monitors/:
    get:
      description: This endpoint lists properties of predefined analytics reports.
      operationId: monitors_list
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Monitor'
                title: Monitor
                type: array
          description: Monitor information
      summary: List Monitors
      tags:
      - monitors
    post:
      description: This endpoint defines a custom analytics report.
      operationId: monitors_create
      requestBody:
        content:
          application/json:
            schema:
              properties:
                aggregation:
                  description: If data granularity is minutes, hours or days, the data is aggregated. This parameter selects which aggregation function to use.
                  enum:
                  - avg
                  - min
                  - max
                  - latency_weighted_average
                  - stddev
                  - sum
                  type: string
                from_time:
                  description: Start time of period to report. e.g. 2021-01-15T13:41:52Z
                  type: string
                granularity:
                  description: 'Data granularity: seconds (raw), minutes (five minute aggregated samples), hours (hourly aggregated samples), or days (daily aggregated samples)'
                  type: string
                name:
                  description: A name for the monitor.
                  type: string
                object_ids:
                  description: Specific objects to include in the report, specified as a comma separated list of object IDs.
                  type: string
                object_type:
                  description: The type of object to monitor.
                  enum:
                  - cluster
                  - cnode
                  - dnode
                  - nvram
                  - replicationstream
                  - ssd
                  type: string
                prop_list:
                  description: A list of metrics to query. To get the full list of metrics, use GET /metrics/.
                  type: string
                time_frame:
                  description: 'Default time frame to report over. Examples: 2h (2 hours), 1D (1 Day), 10m (10 minutes), 1M (1 month)'
                  type: string
                to_time:
                  description: End time of period to report. e.g. 2021-01-15T13:41:52Z
                  type: string
              required:
              - object_type
              type: object
        x-originalParamName: MonitorAddParams
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Monitor'
          description: ''
      summary: Create Custom Analytics Report (aka Monitor)
      tags:
      - monitors
  /monitors/ad_hoc_query/:
    get:
      description: This endpoint queries VMS for analytics.
      operationId: monitors_ad_hoc_query
      parameters:
      - description: The type of object to monitor.
        in: query
        name: object_type
        required: true
        schema:
          enum:
          - cluster
          - cnode
          - dnode
          - nvram
          - replicationstream
          - ssd
          type: string
      - description: Start time of report. e.g. 2021-01-15T13:41:52Z
        in: query
        name: from_time
        schema:
          type: string
      - description: End time of report. e.g. 2021-01-15T13:41:52Z
        in: query
        name: to_time
        schema:
          type: string
      - description: Time frame to report. Specify as an integer followed by 'm' (minutes) 'h' (hours), 'D' (days) ,'W' (weeks) or 'M' (months) 'Y' (years). e.g. 10m
        in: query
        name: time_frame
        schema:
          type: string
      - description: Specify a list of IDs of objects of the specified object_type to filter the report on those specific objects.
        in: query
        name: object_ids
        schema:
          items:
            type: integer
          type: array
      - description: A list of metrics to query. To get the full list of metrics, use GET /metrics/.
        in: query
        name: prop_list
        schema:
          items:
            type: string
          type: array
      - description: 'Data granularity: seconds (raw), minutes (five minute aggregated samples), hours (hourly aggregated samples), or days (daily aggregated samples)'
        in: query
        name: granularity
        schema:
          type: string
      - description: If granularity is minutes, hours or days, the data is aggregated. This parameter selects which aggregation function to use.
        in: query
        name: aggregation
        schema:
          enum:
          - avg
          - min
          - max
          - latency_weighted_average
          - stddev
          - sum
          type: string
      - in: query
        name: format_data
        schema:
          default: false
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorData'
          description: ''
      summary: Query Analytics with Ad Hoc Query Parameters
      tags:
      - monitors
  /monitors/topn/:
    get:
      description: This endpoint queries VMS for top performer data. It can return performance metrics for the most active client users, views, client hosts, vips, vip pools and cnodes.
      operationId: monitors_topn
      parameters:
      - description: Filters results by category of performers. Supported for users, clients and views only.
        in: query
        name: key
        required: true
        schema:
          enum:
          - user
          - client
          - view
          - vip
          - vippool
          - cnode
          - volume
          type: string
      - description: Filters results by a specified performance metric
        in: query
        name: type
        required: true
        schema:
          enum:
          - bw
          - iops
          - md_iops
          - latency
          - rows
          type: string
      - description: The maximum number of top performers in each category to return in the response
        in: query
        name: count
        schema:
          type: integer
      - description: The timestamp for which to display data. For example, 2023-12-06T13:10:03Z. If not passed, the most recent sampling is returned.
        in: query
        name: timestamp
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopNData'
          description: ''
      summary: Query Top Performer Data
      tags:
      - monitors
  /monitors/{id}/:
    delete:
      description: This endpoint deletes an analytics report.
      operationId: monitors_delete
      parameters:
      - description: Monitor ID
        in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Deleted
      summary: Delete Monitor (aka Analytics Report)
      tags:
      - monitors
    get:
      description: This endpoint returns the properties of a specified analytics report.
      operationId: monitors_read
      parameters:
      - description: Monitor ID
        in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Monitor'
          description: ''
      summary: Return Details of an Analytics Report
      tags:
      - monitors
    patch:
      description: This endpoint partially modifies the specified monitor.
      operationId: monitors_partial_update
      parameters:
      - description: Monitor ID
        in: path
        name: id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                aggregation:
                  description: If data granularity is minutes, hours or days, the data is aggregated. This parameter selects which aggregation function to use.
                  enum:
                  - avg
                  - min
                  - max
                  - latency_weighted_average
                  - stddev
                  - sum
                  type: string
                from_time:
                  description: Start time of period to report. e.g. 2021-01-15T13:41:52Z
                  type: string
                granularity:
                  description: 'Data granularity: seconds (raw), minutes (five minute aggregated samples), hours (hourly aggregated samples), or days (daily aggregated samples)'
                  type: string
                object_ids:
                  description: Specific objects to include in the report, specified as a comma separated list of object IDs.
                  type: string
                prop_list:
                  description: A list of metrics to query. To get the full list of metrics, use GET /metrics/.
                  type: string
                to_time:
                  description: End time of period to report. e.g. 2021-01-15T13:41:52Z
                  type: string
              type: object
        x-originalParamName: MonitorModifyParams
      responses:
        '200':
          description: ''
      summary: Modify Analytics Report
      tags:
      - monitors
  /monitors/{id}/query/:
    get:
      description: This endpoint queries for analytics, based on a defined monitor.
      operationId: monitors_query
      parameters:
      - description: Monitor ID, to specify the analytics you want to query.
        in: path
        name: id
        required: true
        schema:
          type: string
      - description: Start time for the report. e.g. 2021-01-15T13:41:52Z
        in: query
        name: from_time
        schema:
          type: string
      - description: End time for the report. e.g. 2021-01-15T13:41:52Z
        in: query
        name: to_time
        schema:
          type: string
      - description: Time frame to report. Specify as an integer followed by 'm' (minutes) 'h' (hours), 'D' (days) ,'W' (weeks) or 'M' (months) 'Y' (years). e.g. 10m
        in: query
        name: time_frame
        schema:
          type: string
      - description: 'Data granularity: seconds (raw), minutes (five minute aggregated samples), hours (hourly aggregated samples), or days (daily aggregated samples)'
        in: query
        name: granularity
        schema:
          type: string
      - description: If granularity is minutes, hours or days, the data is aggregated. This parameter selects which aggregation function to use.
        in: query
        name: aggregation
        schema:
          enum:
          - avg
          - min
          - max
          - latency_weighted_average
          - stddev
          - sum
          type: string
      - in: query
        name: format_data
        schema:
          default: false
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorData'
          description: ''
      summary: Query Analytics using Defined Analytics Report (aka Monitor)
      tags:
      - monitors
components:
  schemas:
    MonitorData:
      properties:
        data:
          description: list of data samples, each sample in form of [timestamp, obj_id, *data]
          type: object
        object_ids:
          description: list of object ids that appears in the query results
          type: object
        prop_list:
          description: list of metrics that appears in the result
          type: object
      type: object
    Monitor:
      properties:
        aggregation:
          description: Aggregation function. avg, min, max etc.
          type: string
        exclude_patterns:
          items:
            type: string
          type: array
        from_time:
          format: date-time
          type: string
          x-format: datetime2display
        granularity:
          description: Data granularity
          type: string
        id:
          type: integer
          x-cli-header: ID
        limit:
          type: integer
        metrics_exposure:
          description: Monitor's metrics exposure
          type: string
        monitor_type:
          description: Monitor type (predefined, custom, etc)
          type: string
        name:
          description: Monitor name
          type: string
        object_ids:
          description: Only query metrics on these objects (optional)
          type: object
        object_type:
          description: Object type
          type: string
        prop_list:
          description: Only query these metrics (optional)
          type: object
        query_aggregation:
          description: Special aggregations to apply on query, e.g intersampling
          type: string
        time_frame:
          description: Time frame to use
          type: string
        to_time:
          format: date-time
          type: string
          x-format: datetime2display
      type: object
    TopNData:
      type: object
  securitySchemes:
    ApiToken:
      description: Send current valid API token in an Authorization header with format Api-Token <token>.
      in: header
      name: ApiToken
      type: apiKey
    basicAuth:
      description: Basic authentication using VMS user name and password
      scheme: basic
      type: http