tree 863266d1ea144814c6dc1369f3d5abe0fdb4896d
parent dae94a28e213f03f4b6cad59b20b6931165a4b62
author Aleš Komárek <github@newt.cz> 1480090812 +0100
committer Filip Pytloun <filip@pytloun.cz> 1480090812 +0100

Stacklight (#29)

* Split plugins

* Fix

* Fix config

* Reverse merge dicts

* Remote collecting

* Use Node instead of URL in plugin http_write

Configuring an http_write plugin with a <URL> block is deprecated. <Node> is to
be used instead.

This commit fixes this, removing this message in the collectd logs:

    write_http plugin: Legacy <URL> block found. Please use <Node> instead.

* Salt-mine remote_check support fixed

* Make the RabbitMQ collectd plugin more robust

The plugin crashed when it was running before the RabbitMQ server was
provisioned with queues, exchanges and so on.

* Revert "Use Node instead of URL in plugin http_write"

* Install the python-simplejson package

This package is required to use collectd Python plugins.

* Make hostname configurable (#9)

Make hostname configurable

* Fix include statements in the Python template

* Docs fix

* Docs fixes

* Improve Elasticsearch collectd plugin

This change modifies the Elastcisearch plugin to retrieve the cluster
metrics only from the node that is the elected master. This avoids
sending and storing duplicated metrics into InfluxDB.

* Fix configuration of the local endpoint checks

As the name tells it, the checks are executed locally.

* Fix monitoring of the collectd process itself

* Add vrrp Python plugin

* Fix Python plugins launching external processes

Without this change, Python plugins running external processes never
get the return code. See the collectd code [1] for the details.

[1] https://github.com/collectd/collectd/blob/master/contrib/python/getsigchld.py

* Make haproxy emit backend_servers_percent metrics

This commit changes the haproxy plugin code to emit backend_servers_percent
metrics. The code from StackLight MOS is used for that.

* Add Glusterfs Python plugin

* Collect more metrics from glusterfs

* Fix the execution of gluster command

* Rename glusterfs_peer metric to glusterfs_peer_state

* Extend GlusterFS metrics

This change collects volume-based metrics from GlusterFS.

* Add nginx check plugin

* Add Contrail Python modules

Now using normalized attributes names

* Revert to camel-case attributes names

* Implement the remote collectd service

This change refactors the collectd formula to be able to install
another collectd instance in charge of running the remote plugins.

* Support remote_collector in cluster mode
