@@ -18,13 +18,13 @@ import (
18
18
)
19
19
20
20
var (
21
- listenAddress = kingpin .Flag ("web.listen-address" , "The address to listen on for HTTP requests." ).Default (":9275" ).String ()
22
- nrpeServerAddress = kingpin .Flag ("nrpe-server-address" , "The address of the NRPE server." ).Required ().String ()
21
+ listenAddress = kingpin .Flag ("web.listen-address" , "The address to listen on for HTTP requests." ).Default (":9275" ).String ()
23
22
)
24
23
25
24
// Collector type containing issued command and a logger
26
25
type Collector struct {
27
26
command string
27
+ target string
28
28
logger log.Logger
29
29
}
30
30
@@ -61,7 +61,7 @@ func collectCommandMetrics(cmd string, conn net.Conn, logger log.Logger) (Comman
61
61
// Collect dials nrpe-server and issues given command, recording metrics based on the result.
62
62
func (c * Collector ) Collect (ch chan <- prometheus.Metric ) {
63
63
// Connect to NRPE server
64
- conn , err := net .Dial ("tcp" , * nrpeServerAddress )
64
+ conn , err := net .Dial ("tcp" , c . target )
65
65
if err != nil {
66
66
level .Error (c .logger ).Log ("msg" , "Error dialing NRPE server" , "err" , err )
67
67
return
@@ -92,22 +92,28 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) {
92
92
}
93
93
94
94
// NewCollector returns new collector with logger and given command
95
- func NewCollector (command string , logger log.Logger ) * Collector {
95
+ func NewCollector (command , target string , logger log.Logger ) * Collector {
96
96
return & Collector {
97
97
command : command ,
98
+ target : target ,
98
99
logger : logger ,
99
100
}
100
101
}
101
102
102
103
func handler (w http.ResponseWriter , r * http.Request , logger log.Logger ) {
103
104
params := r .URL .Query ()
105
+ target := params .Get ("target" )
106
+ if target == "" {
107
+ http .Error (w , "Target parameter is missing" , 400 )
108
+ return
109
+ }
104
110
cmd := params .Get ("command" )
105
111
if cmd == "" {
106
112
http .Error (w , "Command parameter is missing" , 400 )
107
113
return
108
114
}
109
115
registry := prometheus .NewRegistry ()
110
- collector := NewCollector (cmd , logger )
116
+ collector := NewCollector (cmd , target , logger )
111
117
registry .MustRegister (collector )
112
118
h := promhttp .HandlerFor (registry , promhttp.HandlerOpts {})
113
119
h .ServeHTTP (w , r )
@@ -130,10 +136,7 @@ func main() {
130
136
<body>
131
137
<h1>NRPE Exporter</h1>
132
138
<p><a href="/metrics">Metrics</a></p>
133
- <form action="/export">
134
- <label>NRPE Command:</label> <input type="text" name="command" placeholder="check_load" value="check_load">
135
- <input type="submit" value="Submit">
136
- </form>
139
+ <p><a href="/export?command=check_load&target=127.0.0.1:5666">check_load against localhost:5666</a></p>
137
140
</body>
138
141
</html>` ))
139
142
})
0 commit comments