github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/dis/v2/monitors/GetStreamMonitor.go (about) 1 package monitors 2 3 import ( 4 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 5 "github.com/opentelekomcloud/gophertelekomcloud/internal/extract" 6 ) 7 8 type GetStreamMonitorOpts struct { 9 // Name of the stream to be queried. 10 // Maximum: 60 11 StreamName string 12 // Stream monitoring metric. 13 // (Either label or label_list must be specified. 14 // If both label_list and label are specified, label_list prevails.) 15 // - total_put_bytes_per_stream: total input traffic (byte) 16 // - total_get_bytes_per_stream: total output traffic (byte) 17 // - total_put_records_per_stream: total number of input records 18 // - total_get_records_per_stream: total number of output records 19 // - total_put_req_latency: average processing time of upload requests (millisecond) 20 // - total_get_req_latency: average processing time of download requests (millisecond) 21 // - total_put_req_suc_per_stream: number of successful upload requests 22 // - total_get_req_suc_per_stream: number of successful download requests 23 // - traffic_control_put: number of rejected upload requests due to flow control 24 // - traffic_control_get: number of rejected download requests due to flow control 25 // Enumeration values: 26 // total_put_bytes_per_stream 27 // total_get_bytes_per_stream 28 // total_put_records_per_stream 29 // total_get_records_per_stream 30 // total_put_req_latency 31 // total_get_req_latency 32 // total_put_req_suc_per_stream 33 // total_get_req_suc_per_stream 34 // traffic_control_put 35 // traffic_control_get 36 Label string `q:"label,omitempty"` 37 // List of labels separated by commas (,) to query multiple labels in batches. 38 // (Either label or label_list must be set. 39 // If both label_list and label exist, label_list prevails.) 40 LabelList string `q:"label_list,omitempty"` 41 // Monitoring start time, which is a 10-digit timestamp. 42 StartTime int64 `q:"start_time"` 43 // Monitoring end time, which is a 10-digit timestamp. 44 EndTime int64 `q:"end_time"` 45 } 46 47 func GetStreamMonitor(client *golangsdk.ServiceClient, opts GetStreamMonitorOpts) (*GetStreamMonitorResponse, error) { 48 url, err := golangsdk.NewURLBuilder().WithEndpoints("streams", opts.StreamName, "metrics").WithQueryParams(&opts).Build() 49 if err != nil { 50 return nil, err 51 } 52 53 // GET /v2/{project_id}/streams/{stream_name}/metrics 54 raw, err := client.Get(client.ServiceURL(url.String()), nil, nil) 55 if err != nil { 56 return nil, err 57 } 58 59 var res GetStreamMonitorResponse 60 err = extract.Into(raw.Body, &res) 61 return &res, err 62 } 63 64 type GetStreamMonitorResponse struct { 65 // Data object. 66 Metrics Metrics `json:"metrics,omitempty"` 67 // List of monitored data objects. 68 MetricsList []Metrics `json:"metrics_list,omitempty"` 69 } 70 71 type Metrics struct { 72 // Monitoring data. 73 DataPoints []DataPoint `json:"data_points,omitempty"` 74 // Metric 75 Label string `json:"label,omitempty"` 76 } 77 78 type DataPoint struct { 79 // Timestamp. 80 Timestamp int64 `json:"timestamp,omitempty"` 81 // Monitoring value corresponding to the timestamp. 82 Value int64 `json:"value,omitempty"` 83 }