Hi,

I have been trying to run the current Prometheus port version 2.9.2 on
OpenBSD 6.6 and I just cannot figure out why Prometheus fails to start.
My rc.conf.local looks like this:

node_exporter_flags="--web.listen-address=localhost:9100"
prometheus_flags=""
pkg_scripts=node_exporter prometheus

That works nicely for node_exporter but prometheus is giving me this:

prometheus: level=info ts=2020-03-01T00:04:05.104Z caller=main.go:285 msg="no 
time or size retention was set so using the default time retention" duration=15d
prometheus: level=info ts=2020-03-01T00:04:05.104Z caller=main.go:321 
msg="Starting Prometheus" version="(version=2.9.2, branch=non-git, 
revision=non-git)"
prometheus: level=info ts=2020-03-01T00:04:05.104Z caller=main.go:322 
build_context="(go=go1.13.1, user=_pbu...@amd64.ports.openbsd.org, 
date=20191012-03:10:07)"
prometheus: level=info ts=2020-03-01T00:04:05.104Z caller=main.go:323 
host_details=(openbsd)
prometheus: level=info ts=2020-03-01T00:04:05.104Z caller=main.go:324 
fd_limits="(soft=128, hard=1024)"
prometheus: level=info ts=2020-03-01T00:04:05.104Z caller=main.go:325 
vm_limits="(soft=34359738368b, hard=34359738368b)"
prometheus: level=info ts=2020-03-01T00:04:05.108Z caller=main.go:640 
msg="Starting TSDB ..."
prometheus: level=info ts=2020-03-01T00:04:05.109Z caller=main.go:509 
msg="Stopping scrape discovery manager..."
prometheus: level=info ts=2020-03-01T00:04:05.109Z caller=main.go:523 
msg="Stopping notify discovery manager..."
prometheus: level=info ts=2020-03-01T00:04:05.109Z caller=main.go:545 
msg="Stopping scrape manager..."
prometheus: level=info ts=2020-03-01T00:04:05.109Z caller=main.go:519 
msg="Notify discovery manager stopped"
prometheus: level=info ts=2020-03-01T00:04:05.109Z caller=web.go:416 
component=web msg="Start listening for connections" address=localhost:9090
prometheus: level=info ts=2020-03-01T00:04:05.111Z caller=main.go:505 
msg="Scrape discovery manager stopped"
prometheus: level=info ts=2020-03-01T00:04:05.112Z caller=manager.go:743 
component="rule manager" msg="Stopping rule manager..."
prometheus: level=info ts=2020-03-01T00:04:05.112Z caller=manager.go:749 
component="rule manager" msg="Rule manager stopped"
prometheus: level=info ts=2020-03-01T00:04:05.112Z caller=notifier.go:527 
component=notifier msg="Stopping notification manager..."
prometheus: level=info ts=2020-03-01T00:04:05.112Z caller=main.go:708 
msg="Notifier manager stopped"
prometheus: level=info ts=2020-03-01T00:04:05.112Z caller=main.go:539 
msg="Scrape manager stopped"
prometheus: level=error ts=2020-03-01T00:04:05.112Z caller=main.go:717 
err="opening storage failed: mkdir data/: permission denied"


Apparently it is reading its TSDB from the built-in default "data/"
instead of what the port packager set in the rc.d script:

# cat rc.d/prometheus 
#!/bin/sh
#
# $OpenBSD: prometheus.rc,v 1.1.1.1 2018/01/10 16:26:19 claudio Exp $

daemon="/usr/local/bin/prometheus"
daemon_flags="--config.file /etc/prometheus/prometheus.yml"
daemon_flags="${daemon_flags} --storage.tsdb.path '/var/prometheus'"
daemon_user=_prometheus

. /etc/rc.d/rc.subr

pexp="${daemon}.*"
rc_bg=YES
rc_reload=NO

rc_start() {
        ${rcexec} "${daemon} ${daemon_flags} < /dev/null 2>&1 | \
                logger -p daemon.info -t prometheus"
}

rc_cmd $1


Strangely, it seems to me like the config.file option is being picked
up, otherwise it would bail out even earlier. rcctl seems to recognize
the flags:

# rcctl -d start prometheus 
doing _rc_parse_conf
doing _rc_quirks
prometheus_flags empty, using default >--config.file 
/etc/prometheus/prometheus.yml --storage.tsdb.path '/var/prometheus'<
doing _rc_parse_conf /var/run/rc.d/prometheus
doing _rc_quirks
doing rc_check
prometheus
doing rc_start
doing _rc_wait start
No home directory /nonexistent!
Logging in with home = "/".
doing rc_check
doing _rc_write_runfile
(ok)


When I run prometheus manually like this, it starts fine:

su -l -s /bin/sh _prometheus -c 'prometheus 
--config.file=/etc/prometheus/prometheus.yml 
--storage.tsdb.path=/var/prometheus'


I am running out of ideas what to do here. It looks like an issue with
the rc.d script?

Fabian

Reply via email to