OLD | NEW |
1 // Prober is an HTTP prober that periodically sends out HTTP requests to specifi
ed | 1 // Prober is an HTTP prober that periodically sends out HTTP requests to specifi
ed |
2 // endpoints and reports if the returned results match the expectations. The res
ults | 2 // endpoints and reports if the returned results match the expectations. The res
ults |
3 // of the probe, including latency, are recored in InfluxDB using the Carbon pro
tocol. | 3 // of the probe, including latency, are recored in InfluxDB using the Carbon pro
tocol. |
4 // See probers.json as an example of the config file format. | 4 // See probers.json as an example of the config file format. |
5 package main | 5 package main |
6 | 6 |
7 import ( | 7 import ( |
8 "encoding/json" | 8 "encoding/json" |
9 "flag" | 9 "flag" |
10 "fmt" | 10 "fmt" |
11 "io" | 11 "io" |
12 "io/ioutil" | 12 "io/ioutil" |
13 "net" | 13 "net" |
14 "net/http" | 14 "net/http" |
15 "os" | 15 "os" |
16 "strings" | 16 "strings" |
17 "time" | 17 "time" |
18 | 18 |
| 19 "github.com/golang/glog" |
19 "github.com/rcrowley/go-metrics" | 20 "github.com/rcrowley/go-metrics" |
20 ) | 21 ) |
21 | 22 |
22 import ( | |
23 "github.com/golang/glog" | |
24 ) | |
25 | |
26 var ( | 23 var ( |
27 config = flag.String("config", "probers.json,buildbots.json", "Comma
separated names of prober config files.") | 24 config = flag.String("config", "probers.json,buildbots.json", "Comma
separated names of prober config files.") |
28 prefix = flag.String("prefix", "prober", "Prefix to add to all probe
r values sent to Carbon.") | 25 prefix = flag.String("prefix", "prober", "Prefix to add to all probe
r values sent to Carbon.") |
29 carbon = flag.String("carbon", "localhost:2003", "Address of Carbon
server and port.") | 26 carbon = flag.String("carbon", "localhost:2003", "Address of Carbon
server and port.") |
30 apikeyFlag = flag.String("apikey", "", "The API Key used to make issue t
racker requests. Only for local testing.") | 27 apikeyFlag = flag.String("apikey", "", "The API Key used to make issue t
racker requests. Only for local testing.") |
31 runEvery = flag.Duration("run_every", 1*time.Minute, "How often to run
the probes.") | 28 runEvery = flag.Duration("run_every", 1*time.Minute, "How often to run
the probes.") |
32 | 29 |
33 // bodyTesters is a mapping of names to functions that test response bod
ies. | 30 // bodyTesters is a mapping of names to functions that test response bod
ies. |
34 bodyTesters = map[string]BodyTester{ | 31 bodyTesters = map[string]BodyTester{ |
35 "buildbotJSON": testBuildbotJSON, | 32 "buildbotJSON": testBuildbotJSON, |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 glog.Infof("Num Issues: %s - %d", issue.Name, jsonResp["
totalResults"]) | 203 glog.Infof("Num Issues: %s - %d", issue.Name, jsonResp["
totalResults"]) |
207 if err == nil && resp.Body != nil { | 204 if err == nil && resp.Body != nil { |
208 resp.Body.Close() | 205 resp.Body.Close() |
209 } | 206 } |
210 } | 207 } |
211 } | 208 } |
212 } | 209 } |
213 | 210 |
214 func main() { | 211 func main() { |
215 flag.Parse() | 212 flag.Parse() |
| 213 defer glog.Flush() |
216 go monitorIssueTracker() | 214 go monitorIssueTracker() |
217 glog.Infoln("Looking for Carbon server.") | 215 glog.Infoln("Looking for Carbon server.") |
218 addr, err := net.ResolveTCPAddr("tcp", *carbon) | 216 addr, err := net.ResolveTCPAddr("tcp", *carbon) |
219 if err != nil { | 217 if err != nil { |
220 glog.Fatalln("Failed to resolve the Carbon server: ", err) | 218 glog.Fatalln("Failed to resolve the Carbon server: ", err) |
221 } | 219 } |
222 glog.Infoln("Found Carbon server.") | 220 glog.Infoln("Found Carbon server.") |
223 | 221 |
224 // We have two sets of metrics, one for the probes and one for the probe | 222 // We have two sets of metrics, one for the probes and one for the probe |
225 // server itself. | 223 // server itself. |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 glog.Errorf("Body test failed. %#v", probe) | 285 glog.Errorf("Body test failed. %#v", probe) |
288 probe.failure.Update(1) | 286 probe.failure.Update(1) |
289 continue | 287 continue |
290 } | 288 } |
291 | 289 |
292 probe.failure.Update(0) | 290 probe.failure.Update(0) |
293 probe.latency.Update(d) | 291 probe.latency.Update(d) |
294 } | 292 } |
295 } | 293 } |
296 } | 294 } |
OLD | NEW |