From 570cbc3eabbaf2e998e7ed13d995c57c01863382 Mon Sep 17 00:00:00 2001 From: Alexey Bezhan Date: Wed, 24 Apr 2019 11:23:27 +0100 Subject: [PATCH] Add statsd_exporter to app PaaS startup scripts `statsd_exporter` is only started if `STATSD_HOST` is set to `localhost`. --- scripts/run_app_paas.sh | 13 +++++++++++++ scripts/run_multi_worker_app_paas.sh | 17 +++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/scripts/run_app_paas.sh b/scripts/run_app_paas.sh index a4416e56f..201bc186e 100755 --- a/scripts/run_app_paas.sh +++ b/scripts/run_app_paas.sh @@ -69,10 +69,20 @@ function start_aws_logs_agent { echo "AWS logs agent pid: ${AWSLOGS_AGENT_PID}" } +function start_statsd_exporter { + echo "Starting statsd exporter..." + exec ./scripts/statsd_exporter --web.listen-address=":${PORT}" --statsd.listen-udp=":8125" --statsd.mapping-config=statsd_mapping.yml & + STATSD_EXPORTER_PID=$! + echo "Statsd exporter pid: ${STATSD_EXPORTER_PID}" +} + function run { while true; do kill -0 ${APP_PID} 2&>/dev/null || break kill -0 ${AWSLOGS_AGENT_PID} 2&>/dev/null || start_aws_logs_agent + if [ "${STATSD_HOST}" == "localhost" ]; then + kill -0 ${STATSD_EXPORTER_PID} 2&>/dev/null || start_statsd_exporter + fi sleep 1 done } @@ -84,6 +94,9 @@ check_params trap "on_exit" EXIT configure_aws_logs +if [ "${STATSD_HOST}" == "localhost" ]; then + start_statsd_exporter +fi # The application has to start first! start_application "$@" diff --git a/scripts/run_multi_worker_app_paas.sh b/scripts/run_multi_worker_app_paas.sh index 6824923ea..25a95c452 100755 --- a/scripts/run_multi_worker_app_paas.sh +++ b/scripts/run_multi_worker_app_paas.sh @@ -84,23 +84,33 @@ function send_signal_to_celery_processes { } function start_application { + echo "Starting application..." eval "$@" get_celery_pids echo "Application process pids: "${APP_PIDS} } function start_aws_logs_agent { + echo "Starting aws logs agent..." exec aws logs push --region eu-west-1 --config-file /home/vcap/app/awslogs.conf & AWSLOGS_AGENT_PID=$! echo "AWS logs agent pid: ${AWSLOGS_AGENT_PID}" } function start_logs_tail { + echo "Starting logs tail..." exec tail -n0 -f ${LOGS_DIR}/app.log.json & LOGS_TAIL_PID=$! echo "tail pid: ${LOGS_TAIL_PID}" } +function start_statsd_exporter { + echo "Starting statsd exporter..." + exec ./scripts/statsd_exporter --web.listen-address=":${PORT}" --statsd.listen-udp=":8125" --statsd.mapping-config=statsd_mapping.yml & + STATSD_EXPORTER_PID=$! + echo "Statsd exporter pid: ${STATSD_EXPORTER_PID}" +} + function ensure_celery_is_running { if [ "${APP_PIDS}" = "" ]; then echo "There are no celery processes running, this container is bad" @@ -116,6 +126,7 @@ function ensure_celery_is_running { echo "Killing awslogs_agent and tail" kill -9 ${AWSLOGS_AGENT_PID} kill -9 ${LOGS_TAIL_PID} + kill -9 ${STATSD_EXPORTER_PID} exit 1 fi @@ -132,6 +143,9 @@ function run { done kill -0 ${AWSLOGS_AGENT_PID} 2&>/dev/null || start_aws_logs_agent kill -0 ${LOGS_TAIL_PID} 2&>/dev/null || start_logs_tail + if [ "${STATSD_HOST}" == "localhost" ]; then + kill -0 ${STATSD_EXPORTER_PID} 2&>/dev/null || start_statsd_exporter + fi sleep 1 done } @@ -143,6 +157,9 @@ check_params trap "on_exit" EXIT configure_aws_logs +if [ "${STATSD_HOST}" == "localhost" ]; then + start_statsd_exporter +fi # The application has to start first! start_application "$@"