9
9
"net/url"
10
10
"strings"
11
11
"sync"
12
+ "time"
12
13
13
14
"github.com/influxdb/telegraf/internal"
14
15
"github.com/influxdb/telegraf/plugins/inputs"
@@ -119,7 +120,8 @@ func (h *HttpJson) gatherServer(
119
120
acc inputs.Accumulator ,
120
121
serverURL string ,
121
122
) error {
122
- resp , err := h .sendRequest (serverURL )
123
+ resp , responseTime , err := h .sendRequest (serverURL )
124
+
123
125
if err != nil {
124
126
return err
125
127
}
@@ -141,6 +143,9 @@ func (h *HttpJson) gatherServer(
141
143
delete (jsonOut , tag )
142
144
}
143
145
146
+ if responseTime >= 0 {
147
+ jsonOut ["response_time" ] = responseTime
148
+ }
144
149
f := internal.JSONFlattener {}
145
150
err = f .FlattenJSON ("" , jsonOut )
146
151
if err != nil {
@@ -164,11 +169,11 @@ func (h *HttpJson) gatherServer(
164
169
// Returns:
165
170
// string: body of the response
166
171
// error : Any error that may have occurred
167
- func (h * HttpJson ) sendRequest (serverURL string ) (string , error ) {
172
+ func (h * HttpJson ) sendRequest (serverURL string ) (string , float64 , error ) {
168
173
// Prepare URL
169
174
requestURL , err := url .Parse (serverURL )
170
175
if err != nil {
171
- return "" , fmt .Errorf ("Invalid server URL \" %s\" " , serverURL )
176
+ return "" , - 1 , fmt .Errorf ("Invalid server URL \" %s\" " , serverURL )
172
177
}
173
178
174
179
params := url.Values {}
@@ -180,19 +185,21 @@ func (h *HttpJson) sendRequest(serverURL string) (string, error) {
180
185
// Create + send request
181
186
req , err := http .NewRequest (h .Method , requestURL .String (), nil )
182
187
if err != nil {
183
- return "" , err
188
+ return "" , - 1 , err
184
189
}
185
190
191
+ start := time .Now ()
186
192
resp , err := h .client .MakeRequest (req )
187
193
if err != nil {
188
- return "" , err
194
+ return "" , - 1 , err
189
195
}
190
- defer resp .Body .Close ()
191
196
192
197
defer resp .Body .Close ()
198
+ responseTime := time .Since (start ).Seconds ()
199
+
193
200
body , err := ioutil .ReadAll (resp .Body )
194
201
if err != nil {
195
- return string (body ), err
202
+ return string (body ), responseTime , err
196
203
}
197
204
198
205
// Process response
@@ -203,10 +210,10 @@ func (h *HttpJson) sendRequest(serverURL string) (string, error) {
203
210
http .StatusText (resp .StatusCode ),
204
211
http .StatusOK ,
205
212
http .StatusText (http .StatusOK ))
206
- return string (body ), err
213
+ return string (body ), responseTime , err
207
214
}
208
215
209
- return string (body ), err
216
+ return string (body ), responseTime , err
210
217
}
211
218
212
219
func init () {
0 commit comments