Processes plugin, config generation cleanup
diff --git a/collectd/client.sls b/collectd/client.sls
index 7056148..d4d4566 100644
--- a/collectd/client.sls
+++ b/collectd/client.sls
@@ -46,13 +46,13 @@
- makedirs: true
- user: root
-{%- set role_grains = {'collectd': {'plugin': {}}} %}
+{%- set service_grains = {'collectd': {'plugin': {}}} %}
{%- for service_name, service in pillar.items() %}
{%- if service.get('_support', {}).get('collectd', {}).get('enabled', False) %}
{%- set grains_fragment_file = service_name+'/meta/collectd.yml' %}
{%- macro load_grains_file() %}{% include grains_fragment_file %}{% endmacro %}
{%- set grains_yaml = load_grains_file()|load_yaml %}
-{%- set _dummy = role_grains.collectd.plugin.update(grains_yaml.plugin) %}
+{%- set _dummy = service_grains.collectd.plugin.update(grains_yaml.plugin) %}
{%- endif %}
{%- endfor %}
@@ -64,7 +64,7 @@
- user: root
- mode: 600
- defaults:
- role_grains: {{ role_grains|yaml }}
+ service_grains: {{ service_grains|yaml }}
- require:
- pkg: collectd_client_packages
- file: collectd_client_grains_dir
@@ -79,7 +79,7 @@
- watch:
- file: collectd_client_grain
-{%- for plugin_name, plugin in role_grains.collectd.plugin.iteritems() %}
+{%- for plugin_name, plugin in service_grains.collectd.plugin.iteritems() %}
{{ client.config_dir }}/{{ plugin_name }}.conf:
file.managed:
@@ -130,7 +130,9 @@
- template: jinja
- user: root
- group: root
- - mode: 660
+ - mode: 640
+ - defaults:
+ service_grains: {{ service_grains|yaml }}
- require:
- file: {{ client.config_dir }}
- watch_in:
diff --git a/collectd/files/collectd.conf b/collectd/files/collectd.conf
index c266c7d..8cd5be1 100644
--- a/collectd/files/collectd.conf
+++ b/collectd/files/collectd.conf
@@ -878,20 +878,9 @@
# <Node>
#</Plugin>
-{%- if pillar.get('external', {}).network_device is defined %}
-Include "{{ client.config_dir }}/plugin_snmp.conf"
-{%- endif %}
-
-{%- for plugin in client.get('plugins', []) %}
-Include "{{ client.config_dir }}/{{ plugin.name }}.conf"
+{%- for plugin_name, plugin in service_grains.collectd.plugin.iteritems() %}
+Include "{{ client.config_dir }}/{{ plugin_name }}.conf"
{%- endfor %}
-
-{%- for service in client.supported_services %}
-{%- if service in grains.roles %}
-Include "{{ client.config_dir }}/{{ service|replace('.', '_') }}.conf"
-{%- endif %}
-{%- endfor %}
-
{%- for backend_name, backend in client.backend.iteritems() %}
Include "{{ client.config_dir }}/{{ backend_name }}.conf"
{%- endfor %}
diff --git a/collectd/files/collectd.grain b/collectd/files/collectd.grain
index 36d1494..3e3b373 100644
--- a/collectd/files/collectd.grain
+++ b/collectd/files/collectd.grain
@@ -1 +1 @@
-{{ role_grains|yaml(False) }}
+{{ service_grains|yaml(False) }}
diff --git a/collectd/files/collectd_processes.conf b/collectd/files/collectd_processes.conf
new file mode 100644
index 0000000..abc1ec1
--- /dev/null
+++ b/collectd/files/collectd_processes.conf
@@ -0,0 +1,6 @@
+LoadPlugin processes
+<Plugin processes>
+ {%- for process_name, process in plugin.process.iteritems() %}
+ ProcessMatch "{{ process_name }}" "{{ process.metric }}"
+ {%- endfor %}
+</Plugin>
\ No newline at end of file
diff --git a/collectd/map.jinja b/collectd/map.jinja
index 0816db0..983cfec 100644
--- a/collectd/map.jinja
+++ b/collectd/map.jinja
@@ -1,11 +1,3 @@
-{% set supported_services = [
- 'linux.system',
- 'memcached.server',
- 'mysql.server',
- 'nginx.server',
- 'nova.compute',
- 'postgresql.server',
-] %}
{% set client = salt['grains.filter_by']({
'Arch': {
@@ -13,20 +5,17 @@
'service': 'collectd',
'config_file': '/etc/collectd.conf',
'config_dir': '/etc/collectd.d',
- 'supported_services': supported_services
},
'Debian': {
'pkgs': ['collectd-core', 'snmp'],
'service': 'collectd',
'config_file': '/etc/collectd/collectd.conf',
'config_dir': '/etc/collectd/conf.d',
- 'supported_services': supported_services
},
'RedHat': {
'pkgs': ['collectd', 'collectd-virt', 'collectd-ping', 'net-snmp'],
'service': 'collectd',
'config_file': '/etc/collectd.conf',
'config_dir': '/etc/collectd.d',
- 'supported_services': supported_services
},
}, merge=salt['pillar.get']('collectd:client')) %}
diff --git a/collectd/meta/collectd.yml b/collectd/meta/collectd.yml
index c67d99d..d98f426 100644
--- a/collectd/meta/collectd.yml
+++ b/collectd/meta/collectd.yml
@@ -1,7 +1,16 @@
-{%- if pillar.get('external', {}).network_device is defined %}
plugin:
+ collectd_processes:
+ plugin: processes
+ interval: 60
+ template: collectd/files/collectd_processes.conf
+ process:
+ collectd:
+ metric: collectd.client
+{%- if pillar.get('external', {}).network_device is defined %}
collectd_network_device:
plugin: snmp
+ interval: 60
+ template: collectd/files/collectd_snmp.conf
data:
std_traffic:
type: if_octets
@@ -18,6 +27,4 @@
- 1.3.6.1.2.1.31.1.1.1.7
- 1.3.6.1.2.1.31.1.1.1.11
host: {{ pillar.external.network_device }}
-{%- else %}
-plugin: {}
{%- endif %}
\ No newline at end of file