Metadata-Version: 1.1
Name: collectd-systemd
Version: 0.0.1
Summary: Collectd plugin to monitor systemd services
Home-page: https://github.com/mbachry/collectd-systemd/
Author: Marcin Bachry
Author-email: hegel666@gmail.com
License: MIT
Description: ================
        collectd-systemd
        ================
        
        .. image:: https://travis-ci.org/mbachry/collectd-systemd.svg?branch=master
            :alt: Build status
            :target: https://travis-ci.org/mbachry/collectd-systemd
        
        .. image:: https://coveralls.io/repos/github/mbachry/collectd-systemd/badge.svg?branch=master
            :alt: Coverage
            :target: https://coveralls.io/github/mbachry/collectd-systemd?branch=master
        
        A `collectd`_ plugin which checks if given `systemd`_ services are one of
        * state "running"
        * state "reloading"
        * state "dead" with a service type is "oneshot"
        in each of these cases it sends sends `graphite`_ metrics of ``1.0``.
        Otherwise it will send a ``0.0`` value.
        
        
        The plugin is particularly useful together with `grafana's alerting`_.
        
        .. _collectd: https://collectd.org/
        .. _systemd: https://www.freedesktop.org/wiki/Software/systemd/
        .. _graphite: https://graphite.readthedocs.io/en/latest/overview.html
        .. _grafana's alerting: https://github.com/grafana/grafana/issues/2209
        
        Quick start
        -----------
        
        Make sure Python dbus bindings are installed in your system:
        
        * Debian/Ubuntu: ``sudo apt-get install python-dbus``
        
        * Fedora/CentOS: ``sudo yum install dbus-python``
        
        Copy ``collectd_systemd.py`` to collectd Python plugin directory
        (usually ``/usr/lib64/collectd/python/`` or
        ``/usr/lib/collectd/python/``). Add following snippet do
        ``/etc/collectd.conf``::
        
            LoadPlugin python
        
            <Plugin python>
                ModulePath "/usr/lib64/collectd/python"
                Import "collectd_systemd"
        
                <Module collectd_systemd>
                    Service sshd nginx postgresql
                    Service httpd
                </Module>
            </Plugin>
        
        If your service has dash in the name, you need to wrap that name in double
        quotes::
        
            <Module collectd_systemd>
                Service "celery-bots" "gunicorn-data"
            </Module>
        
        Restart collectd daemon and open grafana web ui. Add a new graph with
        following query::
        
            aliasSub(collectd.*.systemd-*.gauge-running, '.+systemd-(.+)\..+', '\1')
        
        You should see all configured systemd services in the graph. Now it's
        enough to add an alert for values lower than ``1.0`` to be paged when
        services are down.
        
        Configuration
        -------------
        
        Following configuration options are supported:
        
        * ``Service``: one or more systemd services to monitor. Separate
          multiple services with spaces. Multiple services lines can
          be specified when they will be concatinated.
        
        * ``Interval``: check interval. It's ok to keep the default (60 seconds)
        
        * ``Verbose``: enable verbose logging (off by default)
        
        Running tests
        -------------
        
        Install tox using pip or Linux package manager.
        
        Type ``tox`` to run tests.
        
        Selinux
        -------
        On Redhat systems some selinux policy may be needed. Create
        a file collectd_systemd.te::
        
            policy_module(collectd_systemd,0.1);
            require {
                type collectd_t;
            }
            dbus_session_client(system,collectd_t)
            init_status(collectd_t)
            init_dbus_chat(collectd_t)
            systemd_status_all_unit_files(collectd_t)
        
        Create a file collectd_systemd.pp and install it::
        
           make -f /usr/share/selinux/devel/Makefile collectd_systemd.pp
           semodule -i collectd_systemd.pp
        
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: Implementation :: CPython
