-
-
Save eloo/a06d7c70ff2a841b7bb98cd322b851b9 to your computer and use it in GitHub Desktop.
# Set the command-line arguments to pass to the server. | |
ARGS='-web.listen-address=:9100 -collector.diskstats.ignored-devices="^(ram|loop|fd)\\d+$"' | |
# Prometheus-node-exporter supports the following options: | |
# -collector.diskstats.ignored-devices="^(ram|loop|fd|(h|s|v|xv)d[a-z])\\d+$": Regexp of devices to ignore for diskstats. | |
# -collector.filesystem.ignored-mount-points="^/(sys|proc|dev)($|/)": Regexp of mount points to ignore for filesystem collector. | |
# -collector.ipvs.procfs="/proc": procfs mountpoint. | |
# -collector.megacli.command="megacli": Command to run megacli. | |
# -collector.ntp.server="": NTP server to use for ntp collector. | |
# -collector.textfile.directory="": Directory to read text files with metrics from. | |
# -collectors.enabled="diskstats,filesystem,loadavg,meminfo,stat,textfile,time,netdev,netstat": Comma-separated list of collectors to use. | |
# -collectors.print=false: If true, print available collectors and exit. | |
# -debug.memprofile-file="": Write memory profile to this file upon receipt of SIGUSR1. | |
# -log.level=info: Only log messages with the given severity or above. Valid levels: [debug, info, warn, error, fatal, panic]. | |
# -web.listen-address=":9100": Address on which to expose metrics and web interface. | |
# -web.telemetry-path="/metrics": Path under which to expose metrics. | |
#!/bin/sh | |
### BEGIN INIT INFO | |
# Provides: Node exporter | |
# Required-Start: $local_fs $network $named $time $syslog | |
# Required-Stop: $local_fs $network $named $time $syslog | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Description: Node exporter for prometheus written in Go | |
### END INIT INFO | |
DAEMON=/opt/prometheus/node_exporter | |
NAME=node_exporter | |
USER=prometheus | |
PIDFILE=/var/run/prometheus/$NAME.pid | |
LOGFILE=/var/log/prometheus/$NAME.log | |
ARGS="" | |
[ -r /etc/default/$NAME ] && . /etc/default/$NAME | |
do_start_prepare() | |
{ | |
mkdir -p `dirname $PIDFILE` || true | |
mkdir -p `dirname $LOGFILE` || true | |
chown -R $USER: `dirname $LOGFILE` | |
chown -R $USER: `dirname $PIDFILE` | |
} | |
do_start_cmd() | |
{ | |
do_start_prepare | |
echo -n "Starting daemon: "$NAME | |
start-stop-daemon --chuid $USER -C --background --start --quiet --pidfile $PIDFILE --make-pidfile --exec $DAEMON -- $ARGS >> $LOGFILE 2>&1 | |
echo "." | |
} | |
do_stop_cmd() | |
{ | |
echo -n "Stopping daemon: "$NAME | |
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE | |
rm $PIDFILE | |
echo "." | |
} | |
uninstall() { | |
echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] " | |
local SURE | |
read SURE | |
if [ "$SURE" = "yes" ]; then | |
stop | |
rm -f "$PIDFILE" | |
echo "Notice: log file was not removed: '$LOGFILE'" >&2 | |
update-rc.d -f <NAME> remove | |
rm -fv "$0" | |
fi | |
} | |
status() { | |
printf "%-50s" "Checking $NAME..." | |
if [ -f $PIDFILE ]; then | |
PID=$(cat $PIDFILE) | |
if [ -z "$(ps axf | grep ${PID} | grep -v grep)" ]; then | |
printf "%s\n" "The process appears to be dead but pidfile still exists" | |
else | |
echo "Running, the PID is $PID" | |
fi | |
else | |
printf "%s\n" "Service not running" | |
fi | |
} | |
case "$1" in | |
start) | |
do_start_cmd | |
;; | |
stop) | |
do_stop_cmd | |
;; | |
status) | |
status | |
;; | |
uninstall) | |
uninstall | |
;; | |
restart) | |
stop | |
start | |
;; | |
*) | |
echo "Usage: $1 {start|stop|status|restart|uninstall}" | |
exit 1 | |
esac | |
exit 0 |
#!/bin/sh | |
### BEGIN INIT INFO | |
# Provides: Prometheus | |
# Required-Start: $local_fs $network $named $time $syslog | |
# Required-Stop: $local_fs $network $named $time $syslog | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Description: Prometheus - Monitoring system & time series database | |
### END INIT INFO | |
WORKING_DIR=/opt/prometheus | |
DAEMON=$WORKING_DIR/prometheus | |
NAME=prometheus | |
USER=prometheus | |
PIDFILE=/var/run/prometheus/$NAME.pid | |
LOGFILE=/var/log/prometheus/$NAME.log | |
ARGS="" | |
do_start_prepare() | |
{ | |
mkdir -p `dirname $PIDFILE` || true | |
mkdir -p `dirname $LOGFILE` || true | |
chown -R $USER: `dirname $LOGFILE` | |
chown -R $USER: `dirname $PIDFILE` | |
} | |
do_start_cmd() | |
{ | |
do_start_prepare | |
echo -n "Starting daemon: "$NAME | |
start-stop-daemon --chdir $WORKING_DIR --chuid $USER -C --background --start --quiet --pidfile $PIDFILE --make-pidfile --exec $DAEMON -- $ARGS >> $LOGFILE 2>&1 | |
echo "." | |
} | |
do_stop_cmd() | |
{ | |
echo -n "Stopping daemon: "$NAME | |
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE | |
rm $PIDFILE | |
echo "." | |
} | |
uninstall() { | |
echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] " | |
local SURE | |
read SURE | |
if [ "$SURE" = "yes" ]; then | |
stop | |
rm -f "$PIDFILE" | |
echo "Notice: log file was not removed: '$LOGFILE'" >&2 | |
update-rc.d -f <NAME> remove | |
rm -fv "$0" | |
fi | |
} | |
status() { | |
printf "%-50s" "Checking $NAME..." | |
if [ -f $PIDFILE ]; then | |
PID=$(cat $PIDFILE) | |
if [ -z "$(ps axf | grep ${PID} | grep -v grep)" ]; then | |
printf "%s\n" "The process appears to be dead but pidfile still exists" | |
else | |
echo "Running, the PID is $PID" | |
fi | |
else | |
printf "%s\n" "Service not running" | |
fi | |
} | |
case "$1" in | |
start) | |
do_start_cmd | |
;; | |
stop) | |
do_stop_cmd | |
;; | |
status) | |
status | |
;; | |
uninstall) | |
uninstall | |
;; | |
restart) | |
stop | |
start | |
;; | |
*) | |
echo "Usage: $1 {start|stop|status|restart|uninstall}" | |
exit 1 | |
esac | |
exit 0 |
Noob question, sorry. Do I just copy these to /etc/init.d/?
Do I need to change the file extensions or something? Do I need to change the chmod?
Noob question, sorry. Do I just copy these to /etc/init.d/?
Do I need to change the file extensions or something? Do I need to change the chmod?
normally you would simply move it to /etc/init.d/ and drop the extensions
to enable it chmod +x the file
so it would result in something like this (for the node_exporter script)
-rwxr-xr-x 1 root root 2.1K Dec 7 2016 node_exporter*
Thank you!
I did this, but I'm getting the following for prometheus(.init.d):
root@marsboard:/etc/init.d# chmod +x prometheus
root@marsboard:/etc/init.d# service prometheus start
chown: invalid spec: 'prometheus:'
chown: invalid spec: 'prometheus:'
Starting daemon: prometheus.
root@marsboard:/etc/init.d#
If I try to restart:
root@marsboard:/etc/init.d# service prometheus restart
/etc/init.d/prometheus: 86: /etc/init.d/prometheus: stop: not found
/etc/init.d/prometheus: 87: /etc/init.d/prometheus: start: not found
my prometheus has the following settings:
-rwxr-xr-x 1 root root 1994 Oct 31 18:59 prometheus
chown: invalid spec: but I'm running as root and the file is root:root...
The service is not starting, neither node_export or prometheus
Both of them work if I run them from /opt/prometheus
and /opt/node_exporter
respectively with ./prometheus &
or /.node_exporter &
:
10998 pts/0 00:00:15 prometheus
11052 pts/0 00:00:11 node_exporter
11085 pts/0 00:00:00 ps
What am I missing here?
Aah, user for the script is prometheus and I'm running as root. changed the script user to root and i didnt get the chown errors...
I still get the start and stop errors though... and the service is not running...
ok, changed the start and stop in restart case to do_start_cmd and do_stop_cmd as @tmikulin suggested so I got rid of the start and stop errors. now prometheus seems to start, but not node_exporter...
the scripts are only for starting the binary using init.d (autostart)
you still need to download the binary manually and so on.
so you need the prometheus binary in /opt/prometheus as prometheus and the config besides it
Current node_exporter does not use single dash ('-') style parameters.
Hi,
with: "sudo node_exporter restart" I get
stop: missing job name
Try
stop --help' for more information. start: missing job name Try
start --help' for more information.I just changed the case section:
restart)
stop
start
restart)
do_stop_cmd
do_start_cmd
and it works.