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