From 9df381b2722ae2f9fe73cb258b4fdc29225ff944 Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Thu, 20 Mar 2014 15:23:57 -0600 Subject: [PATCH] Updated for functional agent .deb (initial push) --- debian/control | 2 +- debian/install | 2 + debian/mon-agent.init | 2 +- debian/postinst | 9 +++- debian/postrm | 4 ++ etc/mon-agent/supervisor.conf | 49 +++++++++++---------- monagent/checks/libs/httplib2/__init__.pyc | Bin 59704 -> 0 bytes monagent/checks/libs/httplib2/iri2uri.pyc | Bin 3895 -> 0 bytes monagent/checks/libs/httplib2/socks.pyc | Bin 17531 -> 0 bytes setup.py | 2 +- 10 files changed, 42 insertions(+), 28 deletions(-) delete mode 100644 monagent/checks/libs/httplib2/__init__.pyc delete mode 100644 monagent/checks/libs/httplib2/iri2uri.pyc delete mode 100644 monagent/checks/libs/httplib2/socks.pyc diff --git a/debian/control b/debian/control index b4dc9efb..abd52e23 100644 --- a/debian/control +++ b/debian/control @@ -12,6 +12,6 @@ Package: mon-agent Priority: extra Section: default Architecture: all -Depends: python (>= 2.6), python-tornado (>= 2.3), supervisor (>= 3.0), adduser, sysstat, python-pexpect +Depends: python (>= 2.6), python-tornado (>= 2.3), supervisor (>= 3.0), adduser, sysstat, python-pexpect, python-requests (>= 0.8.2) Description: Monitoring Agent Used to send metrics from the host system to a centralized collection point. diff --git a/debian/install b/debian/install index 67870e1c..f4a992d7 100644 --- a/debian/install +++ b/debian/install @@ -1 +1,3 @@ etc/mon-agent/supervisor.conf etc/mon-agent +monagent/conf.d/*.example etc/mon-agent/conf.d +monagent/checks.d/*.py etc/mon-agent/checks.d diff --git a/debian/mon-agent.init b/debian/mon-agent.init index fff44fb0..f23d07d3 100755 --- a/debian/mon-agent.init +++ b/debian/mon-agent.init @@ -48,7 +48,7 @@ check_status() { grep $NAME | grep -c RUNNING) supervisor_config_programs=$(grep -v pup $SUPERVISOR_FILE | - grep -c '\[program:') + grep -c '^\[program:') if [ "$datadog_supervisor_processes" -ne "$supervisor_config_programs" ]; then echo "$supervisor_processes" diff --git a/debian/postinst b/debian/postinst index 0e82dd3e..8c451c9f 100755 --- a/debian/postinst +++ b/debian/postinst @@ -7,13 +7,20 @@ case "$1" in update-rc.d mon-agent defaults adduser --system mon-agent --disabled-login --shell /bin/sh --no-create-home --quiet usermod -d /usr/share/datadog/agent mon-agent + mkdir -p /var/log/mon-agent + [ ! -e /usr/bin/mon-agent ] && ln -s /usr/share/pyshared/monagent/agent.py /usr/bin/mon-agent + [ ! -e /etc/mon-agent/config.py ] && ln -s /usr/share/pyshared/monagent/config.py /etc/mon-agent/config.py + [ ! -e /usr/bin/dogstatsd ] && ln -s /usr/share/pyshared/tests/test_dogstatsd.py /usr/bin/dogstatsd + [ ! -d /etc/dd-agent ] && ln -s /etc/monagent /etc/dd-agent + chmod +x /usr/share/pyshared/monagent/agent.py + chmod +x /usr/share/pyshared/tests/test_dogstatsd.py chown root:root /etc/init.d/mon-agent chown -R mon-agent:root /etc/mon-agent chown -R mon-agent:root /var/log/mon-agent chown -R root:root /usr/share/pyshared/monagent/ chown -h root:root /usr/bin/dogstatsd chown -h root:root /usr/bin/mon-agent - chown -h root:root /usr/bin/dd-forwarder +# chown -h root:root /usr/bin/dd-forwarder set +e diff --git a/debian/postrm b/debian/postrm index d76b741b..26b814bc 100755 --- a/debian/postrm +++ b/debian/postrm @@ -4,6 +4,10 @@ set -e if [ "$1" = purge ]; then update-rc.d mon-agent remove deluser mon-agent + [ -h /usr/bin/mon-agent ] && rm /usr/bin/mon-agent + [ -h /etc/mon-agent/config.py ] && rm /etc/mon-agent/config.py + [ -h /usr/bin/dogstatsd ] && rm /usr/bin/dogstatsd + fi exit 0 diff --git a/etc/mon-agent/supervisor.conf b/etc/mon-agent/supervisor.conf index 16b68c6a..890d1921 100644 --- a/etc/mon-agent/supervisor.conf +++ b/etc/mon-agent/supervisor.conf @@ -27,31 +27,32 @@ startsecs=2 user=mon-agent environment=LC_ALL=POSIX,PYTHONPATH='/usr/share/datadog/agent/checks/libs:$PYTHONPATH' -[program:forwarder] -command=/usr/bin/dd-forwarder -stdout_logfile=NONE -stderr_logfile=NONE -startsecs=3 -priority=998 -user=mon-agent +#[program:forwarder] +#command=/usr/bin/dd-forwarder +#stdout_logfile=NONE +#stderr_logfile=NONE +#startsecs=3 +#priority=998 +#user=mon-agent -[program:dogstatsd] -command=/usr/bin/dogstatsd --use-local-forwarder -stdout_logfile=NONE -stderr_logfile=NONE -startsecs=3 -priority=998 -user=mon-agent +#[program:dogstatsd] +#command=/usr/bin/dogstatsd --use-local-forwarder +#stdout_logfile=NONE +#stderr_logfile=NONE +#startsecs=3 +#priority=998 +#user=mon-agent -[program:pup] -command=python /usr/share/datadog/agent/pup/pup.py -stdout_logfile=NONE -stderr_logfile=NONE -startsecs=1 -priority=998 -user=dd-agent -exitcodes=0 -environment=PYTHONPATH="/usr/share/datadog/agent:$PYTHONPATH", +#[program:pup] +#command=python /usr/share/datadog/agent/pup/pup.py +#stdout_logfile=NONE +#stderr_logfile=NONE +#startsecs=1 +#priority=998 +#user=dd-agent +#exitcodes=0 +#environment=PYTHONPATH="/usr/share/datadog/agent:$PYTHONPATH", [group:mon-agent] -programs=forwarder,collector,dogstatsd,pup +#programs=forwarder,collector,dogstatsd,pup +programs=collector diff --git a/monagent/checks/libs/httplib2/__init__.pyc b/monagent/checks/libs/httplib2/__init__.pyc deleted file mode 100644 index fbf119db8ecd043385255b70d3b9e983339e1d68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59704 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 diff --git a/setup.py b/setup.py index ffe8cd93..87851b4b 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ setup( name="Monitoring Agent", version="0.1", packages=find_packages(), - install_requires = [ 'python-memcache', 'python-yaml', 'python-simplejson', 'python-psutil'], + install_requires = [ 'python-memcache', 'python-yaml', 'python-simplejson', 'python-psutil', 'python-tornado' ], entry_points={ 'console_scripts': [ 'monagent = monagent.agent:main'