-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathapm.go
More file actions
153 lines (138 loc) · 4.79 KB
/
apm.go
File metadata and controls
153 lines (138 loc) · 4.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
package mackerel
import (
"context"
"net/url"
"strconv"
)
// HTTPServerStats represents HTTP server statistics
type HTTPServerStats struct {
Method string `json:"method"`
Route string `json:"route"`
TotalMillis float64 `json:"totalMillis"`
AverageMillis float64 `json:"averageMillis"`
ApproxP95Millis float64 `json:"approxP95Millis"`
ErrorRatePercentage float64 `json:"errorRatePercentage"`
RequestCount int64 `json:"requestCount"`
}
// HTTPServerStatsPageConnection represents a paginated response of HTTP server statistics
type HTTPServerStatsPageConnection struct {
Results []*HTTPServerStats `json:"results"`
HasNextPage bool `json:"hasNextPage"`
}
// ListHTTPServerStatsParam represents parameters for listing HTTP server statistics
type ListHTTPServerStatsParam struct {
ServiceName string
From int64
To int64
ServiceNamespace *string
Environment *string
Version *string
OrderColumn *string
OrderDirection *string
Method *string
Route *string
Page *int
PerPage *int
}
// ListHTTPServerStats retrieves HTTP server statistics
func (c *Client) ListHTTPServerStats(param *ListHTTPServerStatsParam) (*HTTPServerStatsPageConnection, error) {
return c.ListHTTPServerStatsContext(context.Background(), param)
}
// ListHTTPServerStatsContext is like [ListHTTPServerStats].
func (c *Client) ListHTTPServerStatsContext(ctx context.Context, param *ListHTTPServerStatsParam) (*HTTPServerStatsPageConnection, error) {
params := url.Values{}
params.Set("serviceName", param.ServiceName)
params.Set("from", strconv.FormatInt(param.From, 10))
params.Set("to", strconv.FormatInt(param.To, 10))
if param.ServiceNamespace != nil {
params.Set("serviceNamespace", *param.ServiceNamespace)
}
if param.Environment != nil {
params.Set("environment", *param.Environment)
}
if param.Version != nil {
params.Set("version", *param.Version)
}
if param.OrderColumn != nil {
params.Set("orderColumn", *param.OrderColumn)
}
if param.OrderDirection != nil {
params.Set("orderDirection", *param.OrderDirection)
}
if param.Method != nil {
params.Set("method", *param.Method)
}
if param.Route != nil {
params.Set("route", *param.Route)
}
if param.Page != nil {
params.Set("page", strconv.Itoa(*param.Page))
}
if param.PerPage != nil {
params.Set("perPage", strconv.Itoa(*param.PerPage))
}
return requestGetWithParamsContext[HTTPServerStatsPageConnection](ctx, c, "/api/v0/apm/http-server-stats", params)
}
// DbQueryStats represents database query statistics
type DbQueryStats struct {
Query string `json:"query"`
ExecutionCount int64 `json:"executionCount"`
TotalMillis float64 `json:"totalMillis"`
AverageMillis float64 `json:"averageMillis"`
ApproxP95Millis float64 `json:"approxP95Millis"`
}
// DbQueryStatsPageConnection represents a paginated response of database query statistics
type DbQueryStatsPageConnection struct {
Results []*DbQueryStats `json:"results"`
HasNextPage bool `json:"hasNextPage"`
}
// ListDbQueryStatsParam represents parameters for listing database query statistics
type ListDbQueryStatsParam struct {
ServiceName string
From int64
To int64
ServiceNamespace *string
Environment *string
Version *string
Query *string
OrderColumn *string
OrderDirection *string
Page *int
PerPage *int
}
// ListDbQueryStats retrieves database query statistics
func (c *Client) ListDbQueryStats(param *ListDbQueryStatsParam) (*DbQueryStatsPageConnection, error) {
return c.ListDbQueryStatsContext(context.Background(), param)
}
// ListDbQueryStatsContext is like [ListDbQueryStats].
func (c *Client) ListDbQueryStatsContext(ctx context.Context, param *ListDbQueryStatsParam) (*DbQueryStatsPageConnection, error) {
params := url.Values{}
params.Set("serviceName", param.ServiceName)
params.Set("from", strconv.FormatInt(param.From, 10))
params.Set("to", strconv.FormatInt(param.To, 10))
if param.ServiceNamespace != nil {
params.Set("serviceNamespace", *param.ServiceNamespace)
}
if param.Environment != nil {
params.Set("environment", *param.Environment)
}
if param.Version != nil {
params.Set("version", *param.Version)
}
if param.Query != nil {
params.Set("query", *param.Query)
}
if param.OrderColumn != nil {
params.Set("orderColumn", *param.OrderColumn)
}
if param.OrderDirection != nil {
params.Set("orderDirection", *param.OrderDirection)
}
if param.Page != nil {
params.Set("page", strconv.Itoa(*param.Page))
}
if param.PerPage != nil {
params.Set("perPage", strconv.Itoa(*param.PerPage))
}
return requestGetWithParamsContext[DbQueryStatsPageConnection](ctx, c, "/api/v0/apm/db-query-stats", params)
}