Skip to content

Commit

Permalink
Add multiple listeners and systemd socket listener activation (promet…
Browse files Browse the repository at this point in the history
…heus#2393)

Update exporter-toolkit to v0.8.1 to enable new listener support.

Signed-off-by: Perry Naseck <[email protected]>
DaAwesomeP authored and oblitorum committed Apr 9, 2024
1 parent c5c5362 commit 11e3fd7
Showing 6 changed files with 288 additions and 32 deletions.
2 changes: 1 addition & 1 deletion examples/systemd/README.md
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@

If you are using distribution packages or the copr repository, you don't need to deal with these files!

The unit file in this directory is to be put into `/etc/systemd/system`.
The unit files (`*.service` and `*.socket`) in this directory are to be put into `/etc/systemd/system`.
It needs a user named `node_exporter`, whose shell should be `/sbin/nologin` and should not have any special privileges.
It needs a sysconfig file in `/etc/sysconfig/node_exporter`.
It needs a directory named `/var/lib/node_exporter/textfile_collector`, whose owner should be `node_exporter`:`node_exporter`.
3 changes: 2 additions & 1 deletion examples/systemd/node_exporter.service
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
[Unit]
Description=Node Exporter
Requires=node_exporter.socket

[Service]
User=node_exporter
EnvironmentFile=/etc/sysconfig/node_exporter
ExecStart=/usr/sbin/node_exporter $OPTIONS
ExecStart=/usr/sbin/node_exporter --web.systemd-socket $OPTIONS

[Install]
WantedBy=multi-user.target
8 changes: 8 additions & 0 deletions examples/systemd/node_exporter.socket
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[Unit]
Description=Node Exporter

[Socket]
ListenStream=9100

[Install]
WantedBy=sockets.target
14 changes: 7 additions & 7 deletions go.mod
Original file line number Diff line number Diff line change
@@ -22,7 +22,7 @@ require (
github.com/prometheus/client_golang v1.13.0
github.com/prometheus/client_model v0.2.0
github.com/prometheus/common v0.37.0
github.com/prometheus/exporter-toolkit v0.7.1
github.com/prometheus/exporter-toolkit v0.8.1
github.com/prometheus/procfs v0.8.0
github.com/safchain/ethtool v0.2.0
github.com/soundcloud/go-runit v0.0.0-20150630195641-06ad41a06c4a
@@ -33,7 +33,7 @@ require (

require (
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
@@ -46,16 +46,16 @@ require (
github.com/mdlayher/genetlink v1.2.0 // indirect
github.com/mdlayher/socket v0.2.3 // indirect
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973 // indirect
go.uber.org/atomic v1.7.0 // indirect
go.uber.org/multierr v1.6.0 // indirect
golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b // indirect
golang.org/x/crypto v0.0.0-20221012134737-56aed061732a // indirect
golang.org/x/net v0.0.0-20220923203811-8be639271d50 // indirect
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b // indirect
golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7 // indirect
golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1 // indirect
golang.org/x/sync v0.1.0 // indirect
golang.org/x/text v0.3.7 // indirect
google.golang.org/appengine v1.6.6 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
278 changes: 266 additions & 12 deletions go.sum

Large diffs are not rendered by default.

15 changes: 4 additions & 11 deletions node_exporter.go
Original file line number Diff line number Diff line change
@@ -39,6 +39,7 @@ import (
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/prometheus/common/version"
"github.com/prometheus/exporter-toolkit/web"
"github.com/prometheus/exporter-toolkit/web/kingpinflag"
"github.com/prometheus/node_exporter/collector"
"gopkg.in/ini.v1"

@@ -159,10 +160,6 @@ func (h *handler) innerHandler(filters ...string) (http.Handler, error) {
func main() {
flag.Parse()
var (
listenAddress = kingpin.Flag(
"web.listen-address",
"Address on which to expose metrics and web interface.",
).Default(":9100").String()
metricsPath = kingpin.Flag(
"web.telemetry-path",
"Path under which to expose metrics.",
@@ -179,10 +176,7 @@ func main() {
"collector.disable-defaults",
"Set all collectors to disabled by default.",
).Default("false").Bool()
configFile = kingpin.Flag(
"web.config",
"[EXPERIMENTAL] Path to config yaml file that can enable TLS or authentication.",
).Default("").String()
toolkitFlags = kingpinflag.AddFlags(kingpin.CommandLine, ":9100")
)

promlogConfig := &promlog.Config{}
@@ -262,9 +256,8 @@ func main() {
</html>`))
})

level.Info(logger).Log("msg", "Listening on", "address", *listenAddress)
server := &http.Server{Addr: *listenAddress}
if err := web.ListenAndServe(server, *configFile, logger); err != nil {
server := &http.Server{}
if err := web.ListenAndServe(server, toolkitFlags, logger); err != nil {
level.Error(logger).Log("err", err)
os.Exit(1)
}

0 comments on commit 11e3fd7

Please sign in to comment.