monitor_metrics_definitions.go raw

   1  package linodego
   2  
   3  import (
   4  	"context"
   5  )
   6  
   7  // MonitorMetricsDefinition represents an ACLP MetricsDefinition object
   8  type MonitorMetricsDefinition struct {
   9  	AvailableAggregateFunctions []AggregateFunction `json:"available_aggregate_functions"`
  10  	Dimensions                  []MonitorDimension  `json:"dimensions"`
  11  	IsAlertable                 bool                `json:"is_alertable"`
  12  	Label                       string              `json:"label"`
  13  	Metric                      string              `json:"metric"`
  14  	MetricType                  MetricType          `json:"metric_type"`
  15  	ScrapeInterval              string              `json:"scrape_interval"`
  16  	Unit                        MetricUnit          `json:"unit"`
  17  }
  18  
  19  // MetricType is an enum object for MetricType
  20  type MetricType string
  21  
  22  const (
  23  	MetricTypeCounter   MetricType = "counter"
  24  	MetricTypeHistogram MetricType = "histogram"
  25  	MetricTypeGauge     MetricType = "gauge"
  26  	MetricTypeSummary   MetricType = "summary"
  27  )
  28  
  29  // MetricUnit is an enum object for Unit
  30  type MetricUnit string
  31  
  32  const (
  33  	MetricUnitCount              MetricUnit = "count"
  34  	MetricUnitPercent            MetricUnit = "percent"
  35  	MetricUnitByte               MetricUnit = "byte"
  36  	MetricUnitSecond             MetricUnit = "second"
  37  	MetricUnitBitsPerSecond      MetricUnit = "bits_per_second"
  38  	MetricUnitMillisecond        MetricUnit = "millisecond"
  39  	MetricUnitKB                 MetricUnit = "KB"
  40  	MetricUnitMB                 MetricUnit = "MB"
  41  	MetricUnitGB                 MetricUnit = "GB"
  42  	MetricUnitRate               MetricUnit = "rate"
  43  	MetricUnitBytesPerSecond     MetricUnit = "bytes_per_second"
  44  	MetricUnitPercentile         MetricUnit = "percentile"
  45  	MetricUnitRatio              MetricUnit = "ratio"
  46  	MetricUnitOpsPerSecond       MetricUnit = "ops_per_second"
  47  	MetricUnitIops               MetricUnit = "iops"
  48  	MetricUnitKiloBytesPerSecond MetricUnit = "kilo_bytes_per_second"
  49  	MetricUnitSessionsPerSecond  MetricUnit = "sessions_per_second"
  50  	MetricUnitPacketsPerSecond   MetricUnit = "packets_per_second"
  51  	MetricUnitKiloBitsPerSecond  MetricUnit = "kilo_bits_per_second"
  52  )
  53  
  54  // MonitorDimension represents an ACLP MonitorDimension object
  55  type MonitorDimension struct {
  56  	DimensionLabel string   `json:"dimension_label"`
  57  	Label          string   `json:"label"`
  58  	Values         []string `json:"values"`
  59  }
  60  
  61  // ListMonitorMetricsDefinitionByServiceType lists metric definitions
  62  func (c *Client) ListMonitorMetricsDefinitionByServiceType(ctx context.Context, serviceType string, opts *ListOptions) ([]MonitorMetricsDefinition, error) {
  63  	e := formatAPIPath("monitor/services/%s/metric-definitions", serviceType)
  64  	return getPaginatedResults[MonitorMetricsDefinition](ctx, c, e, opts)
  65  }
  66