Install statsd using debian package
diff --git a/statsd/conf/default b/statsd/conf/default
deleted file mode 100644
index 8414d9b..0000000
--- a/statsd/conf/default
+++ /dev/null
@@ -1,11 +0,0 @@
-description "statsd"
-author "etsy"
-
-start on startup
-stop on shutdown
-
-script
- chdir /srv/statsd
-
- exec sudo -u statsd /srv/statsd/scripts/start
-end script
diff --git a/statsd/conf/init b/statsd/conf/init
deleted file mode 100644
index cafbe1f..0000000
--- a/statsd/conf/init
+++ /dev/null
@@ -1,158 +0,0 @@
-#! /bin/sh
-### BEGIN INIT INFO
-# Provides: statsd
-# Required-Start: $network $local_fs
-# Required-Stop:
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-### END INIT INFO
-
-# Do NOT "set -e"
-
-PATH=$PATH:/usr/local/bin:/usr/bin:/bin
-NODE_BIN=$(which nodejs||which node)
-
-if [ ! -x "$NODE_BIN" ]; then
- echo "Can't find executable nodejs or node in PATH=$PATH"
- exit 1
-fi
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-DESC="StatsD"
-NAME=statsd
-DAEMON=$NODE_BIN
-DAEMON_ARGS="/srv/statsd/statsd/stats.js /etc/statsd/localConfig.js 2>&1 >> /var/log/statsd/statsd.log "
-PIDFILE=/var/run/$NAME.pid
-SCRIPTNAME=/etc/init.d/$NAME
-CHDIR="/srv/statsd"
-
-# Exit if the package is not installed
-# [ -x "$DAEMON" ] || exit 0
-
-# Read configuration variable file if it is present
-[ -r /etc/default/$NAME ] && . /etc/default/$NAME
-
-# Load the VERBOSE setting and other rcS variables
-. /lib/init/vars.sh
-
-# Define LSB log_* functions.
-# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
-. /lib/lsb/init-functions
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
-# Return
-# 0 if daemon has been started
-# 1 if daemon was already running
-# 2 if daemon could not be started
-start-stop-daemon --start --quiet -m --pidfile $PIDFILE --startas $DAEMON --background --test > /dev/null \
-|| return 1
-start-stop-daemon --start --quiet -m --pidfile $PIDFILE --startas $DAEMON --background --chdir $CHDIR -- \
-$DAEMON_ARGS > /dev/null 2> /var/log/$NAME-stderr.log \
-|| return 2
-# Add code here, if necessary, that waits for the process to be ready
-# to handle requests from services started subsequently which depend
-# on this one. As a last resort, sleep for some time.
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
-# Return
-# 0 if daemon has been stopped
-# 1 if daemon was already stopped
-# 2 if daemon could not be stopped
-# other if a failure occurred
-start-stop-daemon --stop --quiet --retry=0/0/KILL/5 --pidfile $PIDFILE
-RETVAL="$?"
-[ "$RETVAL" = 2 ] && return 2
-# Wait for children to finish too if this is a daemon that forks
-# and if the daemon is only ever run from this initscript.
-# If the above conditions are not satisfied then add some other code
-# that waits for the process to drop all resources that could be
-# needed by services started subsequently. A last resort is to
-# sleep for some time.
-start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
-[ "$?" = 2 ] && return 2
-# Many daemons don't delete their pidfiles when they exit.
-rm -f $PIDFILE
-return "$RETVAL"
-}
-
-#
-# Function that sends a SIGHUP to the daemon/service
-#
-do_reload() {
-#
-# If the daemon can reload its configuration without
-# restarting (for example, when it is sent a SIGHUP),
-# then implement that here.
-#
-start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
-return 0
-}
-
-case "$1" in
- start)
-[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
-do_start
-case "$?" in
-0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-esac
-;;
- stop)
-[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
-do_stop
-case "$?" in
-0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-esac
-;;
- #reload|force-reload)
-#
-# If do_reload() is not implemented then leave this commented out
-# and leave 'force-reload' as an alias for 'restart'.
-#
-#log_daemon_msg "Reloading $DESC" "$NAME"
-#do_reload
-#log_end_msg $?
-#;;
- restart|force-reload)
-#
-# If the "reload" option is implemented then remove the
-# 'force-reload' alias
-#
-log_daemon_msg "Restarting $DESC" "$NAME"
-do_stop
-case "$?" in
-0|1)
-do_start
-case "$?" in
-0) log_end_msg 0 ;;
-1) log_end_msg 1 ;; # Old process is still running
-*) log_end_msg 1 ;; # Failed to start
-esac
-;;
-*)
-# Failed to stop
-log_end_msg 1
-;;
-esac
-;;
- status)
- status_of_proc $DAEMON "$NAME"
- ;;
- *)
-echo "Usage: $SCRIPTNAME {start|stop|restart|status|force-reload}" >&2
-exit 3
-;;
-esac
-
-:
diff --git a/statsd/conf/start b/statsd/conf/start
deleted file mode 100644
index 7cba342..0000000
--- a/statsd/conf/start
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-PATH=$PATH:/usr/local/bin:/usr/bin:/bin
-NODE_BIN=$(which nodejs||which node)
-
-if [ ! -x "$NODE_BIN" ]; then
-echo "Can't find executable nodejs or node in PATH=$PATH"
- exit 1
-fi
-
-$NODE_BIN /srv/statsd/stats.js /etc/statsd/localConfig.js 2>&1 >> /var/log/statsd/statsd.log
diff --git a/statsd/conf/localConfig.js b/statsd/files/localConfig.js
similarity index 100%
rename from statsd/conf/localConfig.js
rename to statsd/files/localConfig.js
diff --git a/statsd/files/supervisor.conf b/statsd/files/supervisor.conf
index 2c7090c..48d53fd 100644
--- a/statsd/files/supervisor.conf
+++ b/statsd/files/supervisor.conf
@@ -1,7 +1,7 @@
{%- set service = salt['pillar.get']('supervisor:server:service:'+service_name) %}
[program:{{ service_name }}]
-command=node /srv/statsd/statsd/stats.js /etc/statsd/localConfig.js
-user=statsd
+command=/usr/bin/nodejs /usr/share/statsd/stats.js /etc/statsd/localConfig.js
+user=_statsd
stdout_logfile=/var/log/statsd/application.log
stderr_logfile=/var/log/statsd/error.log
autostart=true
diff --git a/statsd/map.jinja b/statsd/map.jinja
index e434f68..12f486c 100644
--- a/statsd/map.jinja
+++ b/statsd/map.jinja
@@ -1,27 +1,19 @@
{% set server = salt['grains.filter_by']({
- 'Arch': {
- 'pkgs': ['statsd'],
- 'service': 'statsd',
- 'config_prefix': '/etc/statsd/',
- 'service_location': '/etc/init.d/statsd',
- 'source': 'https://github.com/etsy/statsd.git',
- 'config': "".join(('/etc/statsd/','localConfig.js'),),
- },
'Debian': {
'pkgs': ['statsd'],
+ 'pkgs_backend_amqp': ['statsd-backend-amqp'],
+ 'pkgs_backend_opentsdb': ['statsd-backend-opentsdb'],
'service': 'statsd',
'config_prefix': '/etc/statsd/',
- 'service_location': '/etc/init.d/statsd',
- 'source': 'https://github.com/etsy/statsd.git',
'config': "".join(('/etc/statsd/','localConfig.js'),),
},
'RedHat': {
'pkgs': ['statsd'],
+ 'pkgs_backend_amqp': ['statsd-backend-amqp'],
+ 'pkgs_backend_opentsdb': ['statsd-backend-opentsdb'],
'service': 'statsd',
'config_prefix': '/etc/statsd/conf.d/',
- 'service_location': '/etc/init.d/statsd',
- 'source': 'https://github.com/etsy/statsd.git',
'config': "".join(('/etc/statsd/','localConfig.js'),),
}
}, merge=salt['pillar.get']('statsd:server')) %}
diff --git a/statsd/server.sls b/statsd/server.sls
index 329ddb3..e6ff6de 100644
--- a/statsd/server.sls
+++ b/statsd/server.sls
@@ -1,91 +1,51 @@
{%- from "statsd/map.jinja" import server with context %}
{%- if server.enabled %}
-include:
-- nodejs
-- git
+statsd_pkgs:
+ pkg.installed:
+ - names: {{ server.pkgs }}
-statsd_user:
- user.present:
- - name: statsd
- - system: True
- - home: /srv/statsd
+/var/log/statsd:
+ file.directory:
+ - user: _statsd
+ - group: _statsd
+ - mode: 775
- require:
- - git: {{ server.source }}
- - pkg: nodejs_packages
-
-{{ server.source }}:
- git.latest:
- - target: /srv/statsd/statsd
- - require:
- - pkg: git_packages
-
-{% set conf = "".join((server.config_prefix,'localConfig.js'),) %}
-
-{#
-{{ server.service_location }}:
- file.managed:
- - source: salt://statsd/conf/init
- - user: root
- - group: root
- - mode: 744
- - template: jinja
-
-{{ server.service }}:
- service.running:
- - enable: true
- - require:
- - file: {{ server.service_location }}
- - watch:
- - file: {{ server.config }}
- - cmd: install_statsd_deps
-#}
-
-/etc/statsd:
- file.directory
-
-install_statsd_deps:
- cmd.run:
- - name: npm install
- - cwd: /srv/statsd/statsd/
- - unless: test -e /srv/statsd/statsd/node_modules
- - require:
- - git: {{ server.source }}
+ - pkg: statsd_pkgs
+ - require_in:
+ - service: {{ server.service }}
{{ server.config }}:
file.managed:
- - source: salt://statsd/conf/localConfig.js
+ - source: salt://statsd/files/localConfig.js
- user: root
- group: root
- mode: 644
- template: jinja
-/var/log/statsd:
- file.directory:
- - user: statsd
- - group: statsd
- - mode: 777
- - require:
- - user: statsd
+{{ server.service }}:
+ service.running:
+ - enable: true
+ - watch:
+ - file: {{ server.config }}
+ - pkg: statsd_pkgs
{%- if server.backend.engine == 'amqp' %}
-#statsd_amqp_package:
-# npm.installed:
-# - name: statsd-amqp-backend
+statsd_backend_pkgs:
+ pkg.installed:
+ - names: {{ server.pkgs_backend_amqp }}
+ - watch_in:
+ - service: {{ server.service }}
-install_package:
- cmd.run:
- - name: npm install statsd-amqp-backend
+{%- elif server.backend.engine == 'opentsdb' %}
+
+statsd_backend_pkgs:
+ pkg.installed:
+ - names: {{ server.pkgs_backend_opentsdb }}
+ - watch_in:
+ - service: {{ server.service }}
{%- endif %}
-{%- if server.backend.engine == 'opentsdb' %}
-
-install_package:
- cmd.run:
- - name: npm install statsd-opentsdb-backend
-
{%- endif %}
-
-{%- endif %}
\ No newline at end of file