Break out collectd config files.

+ Trimmed down Ceph Process list
+ Added Graphite host type, consolidated all generic host types to single playbook collectd-generic (baremetal, guest, cfme, graphite, satellite6)

Change-Id: I2af61fc8dc507407dd7983e44cd3302713fd3ddd
This commit is contained in:
Alex Krzos 2016-03-10 16:07:47 -05:00
parent 9067be0953
commit f54470ee9d
15 changed files with 1230 additions and 214 deletions

View File

@ -0,0 +1,52 @@
# Installing and configuring collectd agent on other machines
Collectd configurations are built for these types of machines:
* baremetal
* guest
* cfme
* graphite/grafana
* satellite6
To install collectd agent and configure collectd to send metrics to your Graphite server, simply add the host to your ansible inventory file under the correct group.
Complete Example Inventory file:
```
[undercloud]
undercloud
[controller]
overcloud-controller-0
overcloud-controller-1
overcloud-controller-2
[compute]
overcloud-compute-0
overcloud-compute-1
[ceph]
overcloud-cephstorage-0
[baremetal]
x.x.x.x # An ip adddress or fqdn or specificed host in ~/.ssh/config
[guest]
x.x.x.x # An ip adddress or fqdn or specificed vm in ~/.ssh/config
[cfme]
x.x.x.x # An ip address of a Red Hat Cloud Forms appliance or ManageIQ appliance
[graphite]
x.x.x.x # An ip address of a Graphite/Grafana Server
[satellite6]
x.x.x.x # An ip address of a Red Hat Satellite 6 Server
```
Example run the collectd-generic playbook on the above specified cfme machine:
```
# ansible-playbook -i hosts install/collectd-generic.yml --tags "cfme"
```
Replace "cfme" with whatever machines you intend to install collectd on.
Note: Openstack host groups (undercloud, controller, compute, ceph) are ignored with the collectd-generic.yml playbook.

View File

@ -1,15 +1,19 @@
Table of Contents
=================
- [Ansible for Browbeat](#)
- [To use](#)
- [Ansible Installers](#)
- [Performance Check](#)
- [Performance Tune](#)
- [Adjust your overcloud](#)
# Ansible for Browbeat
Currently we only support Ansible 1.9.4.
Currently we support Ansible 1.9.4 within browbeat-venv and ansible 2.0 for installation.
Playbooks for:
* Install Browbeat
* Install collectd
* Install connmon
* Install graphite service
* Install grafana service
* Install grafana dashboards
* Install shaker
* Installing Browbeat, collectd, connmon, graphite, grafana, and grafana dashboards
* Check overcloud for performance issues
* Tune overcloud for performance (Experimental)
* Adjust number of workers for cinder/keystone/neutron/nova
@ -30,65 +34,64 @@ Then run gen_hosts.sh script to generate your overcloud's hosts file for ansible
```
# ./gen_hostfile.sh <undercloud-ip> ~/.ssh/config
```
**Review the hosts file the script generates.
*Review the hosts file the script generates.
## Ansible Installers:
## Ansible Installers
Install Browbeat
##### Install Browbeat
Image upload requires Ansible 2.0
```
# vi install/group_vars/all # Edit ansible vars file (Installation parameters)
# ansible-playbook -i hosts install/browbeat.yml
```
Install Collectd Agent (Requires a Graphite Server)
##### Install Collectd Agent (Requires a Graphite Server)
Prior to installing the agent, please review the install/group_vars/all to ensure the
correct params are passed
correct parameters are passed
```
# ansible-playbook -i hosts install/collectd
# ansible-playbook -i hosts install/collectd-openstack.yml
```
To install collectd on everything other than Openstack machines, view the [README for collectd-generic](README.collectd-generic.md).
Install Connmon
##### Install Connmon
Requires Ansible 2.0
```
# ansible-playbook -i hosts install/connmon.yml
```
Install graphite service
##### Install graphite service
```
# ansible-playbook -i hosts install/graphite.yml
```
Install grafana service
* Default user is admin/admin and the graphite data source will need to be defined.
##### Install grafana service
Default user is admin/admin and the graphite data source will need to be defined.
```
# ansible-playbook -i hosts install/grafana.yml
```
Install Grafana Dashboards (Requires a Grafana Server)
* Review install/group_vars/all before deploying the grafana dashboards
##### Install Grafana Dashboards (Requires a Grafana Server)
Review install/group_vars/all before deploying the grafana dashboards
```
# ansible-playbook -i hosts install/dashboards.yml
```
Install Shaker
```
# ansible-playbook -i hosts install/shaker.yml
```
## Performance Checks:
## Performance Check
Run the check playbook to identify common performance issues:
```
# ansible-playbook -i hosts check/site.yml
```
## Performance Tune:
## Performance Tune
Run the tune playbook to tune your OSPd deployed cloud for performance:
```
# ansible-playbook -i hosts tune/tune.yml
```
## Adjust your overcloud:
## Adjust your overcloud
To modify the number of workers each service is running:
```

View File

@ -1,10 +1,53 @@
---
#
# Generic Playbook to install collectd on generic machines
# Generic Playbook to install collectd on generic machine types, use tags to seperate machine type:
#
# Examples:
#
# ansible-playbook -i hosts install/collectd-generic.yml --tags="baremetal"
# ansible-playbook -i hosts install/collectd-generic.yml --tags="guest"
# ansible-playbook -i hosts install/collectd-generic.yml --tags="cfme"
# ansible-playbook -i hosts install/collectd-generic.yml --tags="graphite"
# ansible-playbook -i hosts install/collectd-generic.yml --tags="satellite6"
# ansible-playbook -i hosts install/collectd-generic.yml --tags="baremetal,guest"
#
- hosts: nodes
- hosts: baremetal
remote_user: root
vars:
config_type: baremetal
roles:
- common
- collectd-generic
tags: baremetal
- hosts: guest
remote_user: root
vars:
config_type: guest
roles:
- collectd-generic
tags: guest
- hosts: cfme
remote_user: root
vars:
config_type: cfme
roles:
- collectd-generic
tags: cfme
- hosts: graphite
remote_user: root
vars:
config_type: graphite
roles:
- collectd-generic
tags: graphite
- hosts: satellite6
remote_user: root
vars:
config_type: satellite6
roles:
- collectd-generic
tags: satellite6

View File

@ -5,6 +5,8 @@
- hosts: undercloud
remote_user: "{{ local_remote_user }}"
vars:
config_type: undercloud
roles:
- { role: common, when: collectd_undercloud }
- { role: collectd-openstack, when: collectd_undercloud }
@ -16,6 +18,8 @@
- hosts: controller
remote_user: "{{ host_remote_user }}"
vars:
config_type: controller
roles:
- { role: common, when: collectd_controller }
- { role: collectd-openstack, when: collectd_controller }
@ -27,6 +31,8 @@
- hosts: ceph
remote_user: "{{ host_remote_user }}"
vars:
config_type: ceph
roles:
- { role: common, when: collectd_ceph }
- { role: collectd-openstack, when: collectd_ceph }
@ -38,6 +44,8 @@
- hosts: compute
remote_user: "{{ host_remote_user }}"
vars:
config_type: compute
roles:
- { role: common, when: collectd_compute }
- { role: collectd-openstack, when: collectd_compute }

View File

@ -1,6 +1,6 @@
---
#
# Install/run collectd for browbeat
# Install/run collectd for browbeat (Generic)
#
- name: Check for epel
@ -22,7 +22,7 @@
- name: Configure collectd.conf
template:
src=collectd.conf.j2
src={{config_type}}.collectd.conf.j2
dest=/etc/collectd.conf
owner=root
group=root
@ -39,10 +39,12 @@
ignore_errors: true
changed_when: false
# This command is not always found?
- name: Set permissive for collectd
shell: semanage permissive -a collectd_t
become: true
when: collectd_permissive.rc != 0
ignore_errors: true
#
# Additional policy bits may be needed for exec

View File

@ -1,4 +1,5 @@
# Installed by Browbeat Ansible Installer
# Config type: {{config_type}}
# Interval default is 10s
Interval {{collectd_interval}}
@ -17,7 +18,6 @@ LoadPlugin disk
LoadPlugin interface
LoadPlugin irq
LoadPlugin load
LoadPlugin match_regex
LoadPlugin memory
LoadPlugin numa
LoadPlugin processes
@ -25,25 +25,6 @@ LoadPlugin swap
LoadPlugin turbostat
LoadPlugin uptime
PreCacheChain "PreCache"
<Chain "PreCache">
<Rule "ignore_tap">
<Match "regex">
Plugin "^interface$"
PluginInstance "^tap*"
</Match>
Target "stop"
</Rule>
<Rule "ignore_interfaces_q">
<Match "regex">
Plugin "^interface$"
PluginInstance "^q.*"
</Match>
Target "stop"
</Rule>
Target "return"
</Chain>
# Graphite Host Configuration
<Plugin write_graphite>
<Carbon>
@ -80,6 +61,5 @@ PreCacheChain "PreCache"
ValuesPercentage true
</Plugin>
# Include other collectd configuration files
Include "/etc/collectd.d"

View File

@ -0,0 +1,256 @@
# Installed by Browbeat Ansible Installer
# Config type: {{config_type}}
# Interval default is 10s
Interval {{collectd_interval}}
# Hostname for this machine, if not defined, use gethostname(2) system call
Hostname "{{inventory_hostname}}"
# Allow collectd to log
LoadPlugin syslog
# Loaded Plugins:
LoadPlugin write_graphite
LoadPlugin cpu
LoadPlugin df
LoadPlugin disk
LoadPlugin interface
LoadPlugin irq
LoadPlugin load
LoadPlugin memory
LoadPlugin processes
LoadPlugin swap
LoadPlugin tail
LoadPlugin uptime
# Graphite Host Configuration
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
Port "2003"
Prefix "{{graphite_prefix}}."
Protocol "tcp"
LogSendErrors true
StoreRates true
AlwaysAppendDS false
EscapeCharacter "_"
</Carbon>
</Plugin>
<Plugin df>
ValuesPercentage true
</Plugin>
<Plugin disk>
Disk "/^[hsv]d[a-z]+[0-9]?$/"
IgnoreSelected false
</Plugin>
<Plugin processes>
ProcessMatch "evm_server.rb" ".*evm_server\.rb$"
ProcessMatch "evm_watchdog.rb" "/bin/evm_watchdog.rb"
Process "evm:dbsync:replicate"
Process "appliance_console.rb"
# Workers
ProcessMatch "MiqEventHandler" ".*MiqEventHandler.*"
ProcessMatch "MiqGenericWorker" "MiqGenericWorker.*"
ProcessMatch "MiqPriorityWorker" "MiqPriorityWorker.*"
ProcessMatch "MiqReportingWorker" "MiqReportingWorker.*"
ProcessMatch "MiqScheduleWorker" "MiqScheduleWorker.*"
ProcessMatch "MiqUiWorker" "MiqUiWorker.*"
ProcessMatch "MiqWebServiceWorker" "MiqWebServiceWorker.*"
ProcessMatch "MiqReplicationWorker" "MiqReplicationWorker.*"
ProcessMatch "MiqEmsMetricsProcessorWorker" "MiqEmsMetricsProcessorWorker.*"
Processmatch "MiqSmartProxyWorker" "MiqSmartProxyWorker.*"
Processmatch "MiqVimBrokerWorker" "MiqVimBrokerWorker.*"
Processmatch "MiqEmsRefreshCoreWorker" "MiqEmsRefreshCoreWorker.*"
# Provider Refresh Workers:
ProcessMatch "Vmware::InfraManager::RefreshWorker" "Vmware::InfraManager::RefreshWorker.*"
ProcessMatch "Redhat::InfraManager::RefreshWorker" "Redhat::InfraManager::RefreshWorker.*"
ProcessMatch "Microsoft::InfraManager::RefreshWorker" "Microsoft::InfraManager::RefreshWorker.*"
ProcessMatch "Openstack::InfraManager::RefreshWorker" "Openstack::InfraManager::RefreshWorker.*"
ProcessMatch "MiqEmsRefreshWorkerVmware" "MiqEmsRefreshWorkerVmware.*"
ProcessMatch "MiqEmsRefreshWorkerRedhat" "MiqEmsRefreshWorkerRedhat.*"
ProcessMatch "MiqEmsRefreshWorkerMicrosoft" "MiqEmsRefreshWorkerMicrosoft.*"
ProcessMatch "Foreman::ConfigurationManager::RefreshWorker" "Foreman::ConfigurationManager::RefreshWorker.*"
ProcessMatch "Foreman::ProvisioningManager::RefreshWorker" "Foreman::ProvisioningManager::RefreshWorker.*"
ProcessMatch "MiqEmsRefreshWorkerForemanConfiguration" "MiqEmsRefreshWorkerForemanConfiguration.*"
ProcessMatch "MiqEmsRefreshWorkerForemanProvisioning" "MiqEmsRefreshWorkerForemanProvisioning.*"
ProcessMatch "Amazon::CloudManager::RefreshWorker" "Amazon::CloudManager::RefreshWorker.*"
ProcessMatch "Azure::CloudManager::RefreshWorker" "Azure::CloudManager::RefreshWorker.*"
ProcessMatch "Openstack::CloudManager::RefreshWorker" "Openstack::CloudManager::RefreshWorker.*"
ProcessMatch "MiqEmsRefreshWorkerAmazon" "MiqEmsRefreshWorkerAmazon.*"
ProcessMatch "MiqEmsRefreshWorkerOpenstack" "MiqEmsRefreshWorkerOpenstack.*"
ProcessMatch "Atomic::ContainerManager::RefreshWorker" "Atomic::ContainerManager::RefreshWorker.*"
ProcessMatch "Kubernetes::ContainerManager::RefreshWorker" "Kubernetes::ContainerManager::RefreshWorker.*"
ProcessMatch "Openshift::ContainerManager::RefreshWorker" "Openshift::ContainerManager::RefreshWorker.*"
ProcessMatch "OpenshiftEnterprise::ContainerManager::RefreshWorker" "OpenshiftEnterprise::ContainerManager::RefreshWorker.*"
# Provider EventCatcher Workers:
ProcessMatch "Vmware::InfraManager::EventCatcher" "Vmware::InfraManager::EventCatcher.*"
ProcessMatch "Redhat::InfraManager::EventCatcher" "Redhat::InfraManager::EventCatcher.*"
ProcessMatch "Openstack::InfraManager::EventCatcher" "Openstack::InfraManager::EventCatcher.*"
ProcessMatch "MiqEventCatcherVmware" "MiqEventCatcherVmware.*"
ProcessMatch "MiqEventCatcherRedhat" "MiqEventCatcherRedhat.*"
ProcessMatch "Amazon::CloudManager::EventCatcher" "Amazon::CloudManager::EventCatcher.*"
ProcessMatch "Azure::CloudManager::EventCatcher" "Azure::CloudManager::EventCatcher.*"
ProcessMatch "Openstack::CloudManager::EventCatcher" "Openstack::CloudManager::EventCatcher.*"
ProcessMatch "MiqEventCatcherAmazon" "MiqEventCatcherAmazon.*"
ProcessMatch "MiqEventCatcherOpenstack" "MiqEventCatcherOpenstack.*"
ProcessMatch "Atomic::ContainerManager::EventCatcher" "Atomic::ContainerManager::EventCatcher.*"
ProcessMatch "Kubernetes::ContainerManager::EventCatcher" "Kubernetes::ContainerManager::EventCatcher.*"
ProcessMatch "Openshift::ContainerManager::EventCatcher" "Openshift::ContainerManager::EventCatcher.*"
ProcessMatch "OpenshiftEnterprise::ContainerManager::EventCatcher" "OpenshiftEnterprise::ContainerManager::EventCatcher.*"
# Provider MetricsCollector Workers:
ProcessMatch "Vmware::InfraManager::MetricsCollectorWorker" "Vmware::InfraManager::MetricsCollectorWorker.*"
ProcessMatch "Redhat::InfraManager::MetricsCollectorWorker" "Redhat::InfraManager::MetricsCollectorWorker.*"
ProcessMatch "MiqEmsMetricsCollectorWorkerVmware" "MiqEmsMetricsCollectorWorkerVmware.*"
ProcessMatch "MiqEmsMetricsCollectorWorkerRedhat" "MiqEmsMetricsCollectorWorkerRedhat.*"
ProcessMatch "Amazon::CloudManager::MetricsCollectorWorker" "Amazon::CloudManager::MetricsCollectorWorker.*"
ProcessMatch "Openstack::CloudManager::MetricsCollectorWorker" "Openstack::CloudManager::MetricsCollectorWorker.*"
ProcessMatch "MiqEmsMetricsCollectorWorkerAmazon" "MiqEmsMetricsCollectorWorkerAmazon.*"
ProcessMatch "MiqEmsMetricsCollectorWorkerOpenstack" "MiqEmsMetricsCollectorWorkerOpenstack.*"
ProcessMatch "Atomic::ContainerManager::MetricsCollectorWorker" "Atomic::ContainerManager::MetricsCollectorWorker.*"
ProcessMatch "Kubernetes::ContainerManager::MetricsCollectorWorker" "Kubernetes::ContainerManager::MetricsCollectorWorker.*"
ProcessMatch "Openshift::ContainerManager::MetricsCollectorWorker" "Openshift::ContainerManager::MetricsCollectorWorker.*"
ProcessMatch "OpenshiftEnterprise::ContainerManager::MetricsCollectorWorker" "OpenshiftEnterprise::ContainerManager::MetricsCollectorWorker.*"
ProcessMatch "collectd" "/usr/sbin/collectd.+-C.+/etc/collectd.conf"
Process "httpd"
Process "memcached"
ProcessMatch "postgres" "postgres.*"
# Catch all-other ruby processes:
Process "ruby"
</Plugin>
<Plugin swap>
ReportBytes true
ValuesPercentage true
</Plugin>
<Plugin "tail">
<File "/var/www/miq/vmdb/log/api.log">
Instance "api"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/www/miq/vmdb/log/appliance_console.log">
Instance "appliance_console"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/www/miq/vmdb/log/audit.log">
Instance "audit"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/www/miq/vmdb/log/automation.log">
Instance "automation"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/www/miq/vmdb/log/aws.log">
Instance "aws"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/www/miq/vmdb/log/evm.log">
Instance "evm"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/www/miq/vmdb/log/fog.log">
Instance "fog"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/www/miq/vmdb/log/kubernetes.log">
Instance "kubernetes"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/www/miq/vmdb/log/policy.log">
Instance "policy"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/www/miq/vmdb/log/production.log">
Instance "production"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/www/miq/vmdb/log/rhevm.log">
Instance "rhevm"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/www/miq/vmdb/log/scvmm.log">
Instance "scvmm"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/www/miq/vmdb/log/vim.log">
Instance "vim"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
</Plugin>
# Include other collectd configuration files
Include "/etc/collectd.d"

View File

@ -0,0 +1,65 @@
# Installed by Browbeat Ansible Installer
# Config type: {{config_type}}
# Interval default is 10s
Interval {{collectd_interval}}
# Hostname for this machine, if not defined, use gethostname(2) system call
Hostname "{{inventory_hostname}}"
# Allow collectd to log
LoadPlugin syslog
# Loaded Plugins:
LoadPlugin write_graphite
LoadPlugin cpu
LoadPlugin df
LoadPlugin disk
LoadPlugin interface
LoadPlugin irq
LoadPlugin load
LoadPlugin memory
LoadPlugin numa
LoadPlugin processes
LoadPlugin swap
LoadPlugin turbostat
LoadPlugin uptime
# Graphite Host Configuration
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
Port "2003"
Prefix "{{graphite_prefix}}."
Protocol "tcp"
LogSendErrors true
StoreRates true
AlwaysAppendDS false
EscapeCharacter "_"
</Carbon>
</Plugin>
<Plugin df>
ValuesPercentage true
</Plugin>
<Plugin disk>
Disk "/^[hsv]d[a-z]+[0-9]?$/"
IgnoreSelected false
</Plugin>
<Plugin processes>
ProcessMatch "carbon-cache" "python.+carbon-cache"
Process "grafana-server"
Process "httpd"
# Collect on collectd process
ProcessMatch "collectd" "/usr/sbin/collectd.+-C.+/etc/collectd.conf"
</Plugin>
<Plugin swap>
ReportBytes true
ValuesPercentage true
</Plugin>
# Include other collectd configuration files
Include "/etc/collectd.d"

View File

@ -0,0 +1,63 @@
# Installed by Browbeat Ansible Installer
# Config type: {{config_type}}
# Interval default is 10s
Interval {{collectd_interval}}
# Hostname for this machine, if not defined, use gethostname(2) system call
Hostname "{{inventory_hostname}}"
# Allow collectd to log
LoadPlugin syslog
# Loaded Plugins:
LoadPlugin write_graphite
LoadPlugin cpu
LoadPlugin df
LoadPlugin disk
LoadPlugin interface
LoadPlugin irq
LoadPlugin load
LoadPlugin memory
LoadPlugin processes
LoadPlugin swap
LoadPlugin uptime
# Graphite Host Configuration
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
Port "2003"
Prefix "{{graphite_prefix}}."
Protocol "tcp"
LogSendErrors true
StoreRates true
AlwaysAppendDS false
EscapeCharacter "_"
</Carbon>
</Plugin>
<Plugin df>
ValuesPercentage true
</Plugin>
<Plugin disk>
Disk "/^[hsv]d[a-z]+[0-9]?$/"
IgnoreSelected false
</Plugin>
<Plugin processes>
# Example, collect on all httpd processes:
Process "httpd"
# Collect on collectd process
ProcessMatch "collectd" "/usr/sbin/collectd.+-C.+/etc/collectd.conf"
</Plugin>
<Plugin swap>
ReportBytes true
ValuesPercentage true
</Plugin>
# Include other collectd configuration files
Include "/etc/collectd.d"

View File

@ -0,0 +1,105 @@
# Installed by Browbeat Ansible Installer
# Config type: {{config_type}}
# Interval default is 10s
Interval {{collectd_interval}}
# Hostname for this machine, if not defined, use gethostname(2) system call
Hostname "{{inventory_hostname}}"
# Allow collectd to log
LoadPlugin syslog
# Loaded Plugins:
LoadPlugin write_graphite
LoadPlugin cpu
LoadPlugin df
LoadPlugin disk
LoadPlugin interface
LoadPlugin irq
LoadPlugin load
LoadPlugin memory
LoadPlugin numa
LoadPlugin processes
LoadPlugin swap
LoadPlugin turbostat
LoadPlugin uptime
# Graphite Host Configuration
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
Port "2003"
Prefix "{{graphite_prefix}}."
Protocol "tcp"
LogSendErrors true
StoreRates true
AlwaysAppendDS false
EscapeCharacter "_"
</Carbon>
</Plugin>
<Plugin df>
ValuesPercentage true
</Plugin>
<Plugin disk>
Disk "/^[hsv]d[a-z]+[0-9]?$/"
IgnoreSelected false
</Plugin>
<Plugin processes>
# DynFlow
Process "dynflow_executor"
Process "dynflow_executor_monitor"
# Elasticsearch
ProcessMatch "Elasticsearch" ".*elasticsearch.*"
# Apache
Process "httpd"
# Mongodb
Process "mongod"
# Passenger
ProcessMatch "Passenger-Forman" "Passenger.+RackApp:.+/usr/share/foreman"
ProcessMatch "Passenger-Puppet" "Passenger.+RackApp:.+/etc/puppet/rack"
Process "PassengerHelperAgent"
Process "PassengerLoggingAgent"
Process "PassengerWatchdog"
# Postgres database
ProcessMatch "postgres" "postgres.*"
# Pulp
ProcessMatch "Pulp-Scheduler" "/usr/bin/python.+/usr/bin/celery.+beat.+--scheduler=pulp.server.async.scheduler.Scheduler"
ProcessMatch "Pulp-Resource-Manager" "/usr/bin/python.+/usr/bin/celery.+worker.+-A.+pulp.server.async.app.+-n.+resource_manager"
ProcessMatch "Pulp-Resource-Worker" "/usr/bin/python.+/usr/bin/celery.+worker.+-n.+reserved_resource_worker"
# Puppet Agent
ProcessMatch "Puppet-Agent" "/usr/bin/ruby.+/usr/bin/puppet.+agent.+--no-daemonize"
# Qpidd + dispatch router
Process "qdrouterd"
Process "qpidd"
# Foreman smart proxy
ProcessMatch "Foreman-SmartProxy" "ruby.+/usr/share/foreman-proxy/bin/smart-proxy"
# Tomcat
ProcessMatch "Tomcat" ".*tomcat.*"
Process "ruby"
# Collect on collectd process
ProcessMatch "collectd" "/usr/sbin/collectd.+-C.+/etc/collectd.conf"
</Plugin>
<Plugin swap>
ReportBytes true
ValuesPercentage true
</Plugin>
# Include other collectd configuration files
Include "/etc/collectd.d"

View File

@ -22,7 +22,7 @@
- name: Configure collectd.conf
template:
src=collectd.conf.j2
src={{config_type}}.collectd.conf.j2
dest=/etc/collectd.conf
owner=root
group=root

View File

@ -0,0 +1,101 @@
# Installed by Browbeat Ansible Installer
# Config type: {{config_type}}
# Interval default is 10s
Interval {{collectd_interval}}
# Hostname for this machine, if not defined, use gethostname(2) system call
Hostname "{{inventory_hostname}}"
# Allow collectd to log
LoadPlugin syslog
# Loaded Plugins:
LoadPlugin write_graphite
LoadPlugin cpu
LoadPlugin conntrack
LoadPlugin df
LoadPlugin disk
LoadPlugin exec
LoadPlugin interface
LoadPlugin irq
LoadPlugin load
LoadPlugin match_regex
LoadPlugin memory
LoadPlugin numa
LoadPlugin processes
LoadPlugin swap
LoadPlugin tail
LoadPlugin turbostat
LoadPlugin uptime
PreCacheChain "PreCache"
<Chain "PreCache">
<Rule "ignore_tap">
<Match "regex">
Plugin "^interface$"
PluginInstance "^tap*"
</Match>
Target "stop"
</Rule>
<Rule "ignore_interfaces_q">
<Match "regex">
Plugin "^interface$"
PluginInstance "^q.*"
</Match>
Target "stop"
</Rule>
Target "return"
</Chain>
# Graphite Host Configuration
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
Port "2003"
Prefix "{{graphite_prefix}}."
Protocol "tcp"
LogSendErrors true
StoreRates true
AlwaysAppendDS false
EscapeCharacter "_"
</Carbon>
</Plugin>
<Plugin df>
ValuesPercentage true
</Plugin>
<Plugin disk>
Disk "/^[hsv]d[a-z]+[0-9]?$/"
IgnoreSelected false
</Plugin>
<Plugin processes>
# Ceph
ProcessMatch "ceph-mon" "^/usr/bin/ceph-mon"
ProcessMatch "ceph-osd" "^/usr/bin/ceph-osd"
ProcessMatch "diamond" "python.+diamond"
ProcessMatch "salt-minion" "python.+salt-minion"
ProcessMatch "collectd" "/usr/sbin/collectd.+-C.+/etc/collectd.conf"
Process "corosync"
Process "httpd"
Process "memcached"
ProcessMatch "ovs-vswitchd" "ovs-vswitchd.+openvswitch"
ProcessMatch "ovsdb-server" "ovsdb-server.+openvswitch"
ProcessMatch "qemu-kvm" "/usr/libexec/qemu-kvm"
</Plugin>
<Plugin swap>
ReportBytes true
ValuesPercentage true
</Plugin>
# Tail plugin configuration
<Plugin "tail">
{# Add ceph logs to tail #}
</Plugin>
# Include other collectd configuration files
Include "/etc/collectd.d"

View File

@ -0,0 +1,200 @@
# Installed by Browbeat Ansible Installer
# Config type: {{config_type}}
# Interval default is 10s
Interval {{collectd_interval}}
# Hostname for this machine, if not defined, use gethostname(2) system call
Hostname "{{inventory_hostname}}"
# Allow collectd to log
LoadPlugin syslog
# Loaded Plugins:
LoadPlugin write_graphite
LoadPlugin cpu
LoadPlugin conntrack
LoadPlugin df
LoadPlugin disk
LoadPlugin exec
LoadPlugin interface
LoadPlugin irq
LoadPlugin load
LoadPlugin match_regex
LoadPlugin memory
LoadPlugin numa
LoadPlugin processes
LoadPlugin swap
LoadPlugin tail
LoadPlugin turbostat
LoadPlugin uptime
PreCacheChain "PreCache"
<Chain "PreCache">
<Rule "ignore_tap">
<Match "regex">
Plugin "^interface$"
PluginInstance "^tap*"
</Match>
Target "stop"
</Rule>
<Rule "ignore_interfaces_q">
<Match "regex">
Plugin "^interface$"
PluginInstance "^q.*"
</Match>
Target "stop"
</Rule>
Target "return"
</Chain>
# Graphite Host Configuration
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
Port "2003"
Prefix "{{graphite_prefix}}."
Protocol "tcp"
LogSendErrors true
StoreRates true
AlwaysAppendDS false
EscapeCharacter "_"
</Carbon>
</Plugin>
<Plugin df>
ValuesPercentage true
</Plugin>
<Plugin disk>
Disk "/^[hsv]d[a-z]+[0-9]?$/"
IgnoreSelected false
</Plugin>
<Plugin processes>
# Ceilometer
ProcessMatch "ceilometer-agent-central" "python.+ceilometer-agent-central"
ProcessMatch "ceilometer-agent-compute" "python.+ceilometer-agent-compute"
ProcessMatch "ceilometer-agent-notification" "python.+ceilometer-agent-notification"
ProcessMatch "ceilometer-alarm-evaluator" "python.+ceilometer-alarm-evaluator"
ProcessMatch "ceilometer-alarm-notifier" "python.+ceilometer-alarm-notifier"
ProcessMatch "ceilometer-api" "python.+ceilometer-api"
ProcessMatch "ceilometer-collector" "python.+ceilometer-collector"
# Ceph
ProcessMatch "ceph-mon" "^/usr/bin/ceph-mon"
ProcessMatch "ceph-osd" "^/usr/bin/ceph-osd"
ProcessMatch "diamond" "python.+diamond"
ProcessMatch "salt-minion" "python.+salt-minion"
# Cinder
ProcessMatch "cinder-api" "python.+cinder-api"
ProcessMatch "cinder-scheduler" "python.+cinder-scheduler"
ProcessMatch "cinder-volume" "python.+cinder-volume"
# Glance
ProcessMatch "glance-api" "python.+glance-api"
ProcessMatch "glance-registry" "python.+glance-registry"
# Heat
ProcessMatch "heat-api" "python.+heat-api"
ProcessMatch "heat-api-cfn" "python.+heat-api-cfn"
ProcessMatch "heat-api-cloudwatch" "python.+heat-api-cloudwatch"
ProcessMatch "heat-engine" "python.+heat-engine"
# Ironic
ProcessMatch "ironic-api" "python.+ironic-api"
ProcessMatch "ironic-conductor" "python.+ironic-conductor"
# Keystone
ProcessMatch "keystone-all" "python.+keystone-all"
# Neutron
ProcessMatch "neutron-dhcp-agent" "python.+neutron-dhcp-agent"
ProcessMatch "neutron-l3-agent" "python.+neutron-l3-agent"
ProcessMatch "neutron-metadata-agent" "python.+neutron-metadata-agent"
ProcessMatch "neutron-ns-metadata-proxy" "python.+neutron-ns-metadata-proxy"
ProcessMatch "neutron-openvswitch-agent" "python.+neutron-openvswitch-agent"
ProcessMatch "neutron-server" "python.+neutron-server"
# Nova Processes
ProcessMatch "nova-api" "python.+nova-api"
ProcessMatch "nova-cert" "python.+nova-cert"
ProcessMatch "nova-compute" "python.+nova-compute"
ProcessMatch "nova-conductor" "python.+nova-conductor"
ProcessMatch "nova-consoleauth" "python.+nova-consoleauth"
ProcessMatch "nova-novncproxy" "python.+nova-novncproxy"
ProcessMatch "nova-scheduler" "python.+nova-scheduler"
# Swift
ProcessMatch "swift-account-auditor" "python.+swift-account-auditor"
ProcessMatch "swift-account-reaper" "python.+swift-account-reaper"
ProcessMatch "swift-account-replicator" "python.+swift-account-replicator"
ProcessMatch "swift-account-server" "python.+swift-account-server"
ProcessMatch "swift-container-auditor" "python.+swift-container-auditor"
ProcessMatch "swift-container-updater" "python.+swift-container-updater"
ProcessMatch "swift-container-replicator" "python.+swift-container-replicator"
ProcessMatch "swift-container-server" "python.+swift-container-server"
ProcessMatch "swift-object-auditor" "python.+swift-object-auditor"
ProcessMatch "swift-object-updater" "python.+swift-object-updater"
ProcessMatch "swift-object-replicator" "python.+swift-object-replicator"
ProcessMatch "swift-object-server" "python.+swift-object-server"
ProcessMatch "swift-proxy-server" "python.+swift-proxy-server"
# Pacemaker
ProcessMatch "pacemakerd" "/usr/sbin/pacemakerd"
ProcessMatch "cib" "/usr/libexec/pacemaker/cib"
ProcessMatch "stonithd" "/usr/libexec/pacemaker/stonithd"
ProcessMatch "attrd" "/usr/libexec/pacemaker/attrd"
ProcessMatch "pengine" "/usr/libexec/pacemaker/pengine"
ProcessMatch "crmd" "/usr/libexec/pacemaker/crmd"
ProcessMatch "lrmd" "/usr/libexec/pacemaker/lrmd"
ProcessMatch "pcsd" "^/usr/bin/ruby.+/usr/lib/pcsd"
ProcessMatch "collectd" "/usr/sbin/collectd.+-C.+/etc/collectd.conf"
Process "corosync"
ProcessMatch "dnsmasq" "^dnsmasq.+"
ProcessMatch "dnsmasq-ironic" "/sbin/dnsmasq.+/etc/ironic-discoverd/dnsmasq.conf"
ProcessMatch "haproxy" "/usr/sbin/haproxy.+/etc/haproxy/haproxy.cfg"
Process "httpd"
Process "memcached"
Process "mongod"
ProcessMatch "mysqld" "/usr/libexec/mysqld"
ProcessMatch "ovs-vswitchd" "ovs-vswitchd.+openvswitch"
ProcessMatch "ovsdb-server" "ovsdb-server.+openvswitch"
ProcessMatch "qemu-kvm" "/usr/libexec/qemu-kvm"
ProcessMatch "rabbitmq" "/usr/lib64/erlang/erts-.+/bin/beam.smp"
Process "redis-server"
ProcessMatch "tuskar-api" "python.+tuskar-api"
</Plugin>
<Plugin swap>
ReportBytes true
ValuesPercentage true
</Plugin>
# Tail plugin configuration
<Plugin "tail">
<File "/var/log/nova/nova-compute.log">
Instance "nova-compute"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/neutron/openvswitch-agent.log">
Instance "neutron-openvswitch-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
</Plugin>
# Include other collectd configuration files
Include "/etc/collectd.d"

View File

@ -0,0 +1,296 @@
# Installed by Browbeat Ansible Installer
# Config type: {{config_type}}
# Interval default is 10s
Interval {{collectd_interval}}
# Hostname for this machine, if not defined, use gethostname(2) system call
Hostname "{{inventory_hostname}}"
# Allow collectd to log
LoadPlugin syslog
# Loaded Plugins:
LoadPlugin write_graphite
LoadPlugin cpu
LoadPlugin conntrack
LoadPlugin df
LoadPlugin disk
LoadPlugin exec
LoadPlugin interface
LoadPlugin irq
LoadPlugin load
LoadPlugin match_regex
LoadPlugin memory
LoadPlugin numa
LoadPlugin processes
LoadPlugin swap
LoadPlugin tail
LoadPlugin turbostat
LoadPlugin uptime
PreCacheChain "PreCache"
<Chain "PreCache">
<Rule "ignore_tap">
<Match "regex">
Plugin "^interface$"
PluginInstance "^tap*"
</Match>
Target "stop"
</Rule>
<Rule "ignore_interfaces_q">
<Match "regex">
Plugin "^interface$"
PluginInstance "^q.*"
</Match>
Target "stop"
</Rule>
Target "return"
</Chain>
# Graphite Host Configuration
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
Port "2003"
Prefix "{{graphite_prefix}}."
Protocol "tcp"
LogSendErrors true
StoreRates true
AlwaysAppendDS false
EscapeCharacter "_"
</Carbon>
</Plugin>
<Plugin df>
ValuesPercentage true
</Plugin>
<Plugin disk>
Disk "/^[hsv]d[a-z]+[0-9]?$/"
IgnoreSelected false
</Plugin>
#<Plugin exec>
# Exec nobody "/usr/local/bin/collectd-redis.sh"
#</Plugin>
<Plugin processes>
# Ceilometer
ProcessMatch "ceilometer-agent-central" "python.+ceilometer-agent-central"
ProcessMatch "ceilometer-agent-compute" "python.+ceilometer-agent-compute"
ProcessMatch "ceilometer-agent-notification" "python.+ceilometer-agent-notification"
ProcessMatch "ceilometer-alarm-evaluator" "python.+ceilometer-alarm-evaluator"
ProcessMatch "ceilometer-alarm-notifier" "python.+ceilometer-alarm-notifier"
ProcessMatch "ceilometer-api" "python.+ceilometer-api"
ProcessMatch "ceilometer-collector" "python.+ceilometer-collector"
# Ceph
ProcessMatch "ceph-mon" "^/usr/bin/ceph-mon"
ProcessMatch "ceph-osd" "^/usr/bin/ceph-osd"
ProcessMatch "diamond" "python.+diamond"
ProcessMatch "salt-minion" "python.+salt-minion"
# Cinder
ProcessMatch "cinder-api" "python.+cinder-api"
ProcessMatch "cinder-scheduler" "python.+cinder-scheduler"
ProcessMatch "cinder-volume" "python.+cinder-volume"
# Glance
ProcessMatch "glance-api" "python.+glance-api"
ProcessMatch "glance-registry" "python.+glance-registry"
# Heat
ProcessMatch "heat-api" "python.+heat-api"
ProcessMatch "heat-api-cfn" "python.+heat-api-cfn"
ProcessMatch "heat-api-cloudwatch" "python.+heat-api-cloudwatch"
ProcessMatch "heat-engine" "python.+heat-engine"
# Ironic
ProcessMatch "ironic-api" "python.+ironic-api"
ProcessMatch "ironic-conductor" "python.+ironic-conductor"
# Keystone
ProcessMatch "keystone-all" "python.+keystone-all"
# Neutron
ProcessMatch "neutron-dhcp-agent" "python.+neutron-dhcp-agent"
ProcessMatch "neutron-l3-agent" "python.+neutron-l3-agent"
ProcessMatch "neutron-metadata-agent" "python.+neutron-metadata-agent"
ProcessMatch "neutron-ns-metadata-proxy" "python.+neutron-ns-metadata-proxy"
ProcessMatch "neutron-openvswitch-agent" "python.+neutron-openvswitch-agent"
ProcessMatch "neutron-server" "python.+neutron-server"
# Nova Processes
ProcessMatch "nova-api" "python.+nova-api"
ProcessMatch "nova-cert" "python.+nova-cert"
ProcessMatch "nova-compute" "python.+nova-compute"
ProcessMatch "nova-conductor" "python.+nova-conductor"
ProcessMatch "nova-consoleauth" "python.+nova-consoleauth"
ProcessMatch "nova-novncproxy" "python.+nova-novncproxy"
ProcessMatch "nova-scheduler" "python.+nova-scheduler"
# Swift
ProcessMatch "swift-account-auditor" "python.+swift-account-auditor"
ProcessMatch "swift-account-reaper" "python.+swift-account-reaper"
ProcessMatch "swift-account-replicator" "python.+swift-account-replicator"
ProcessMatch "swift-account-server" "python.+swift-account-server"
ProcessMatch "swift-container-auditor" "python.+swift-container-auditor"
ProcessMatch "swift-container-updater" "python.+swift-container-updater"
ProcessMatch "swift-container-replicator" "python.+swift-container-replicator"
ProcessMatch "swift-container-server" "python.+swift-container-server"
ProcessMatch "swift-object-auditor" "python.+swift-object-auditor"
ProcessMatch "swift-object-updater" "python.+swift-object-updater"
ProcessMatch "swift-object-replicator" "python.+swift-object-replicator"
ProcessMatch "swift-object-server" "python.+swift-object-server"
ProcessMatch "swift-proxy-server" "python.+swift-proxy-server"
# Pacemaker
ProcessMatch "pacemakerd" "/usr/sbin/pacemakerd"
ProcessMatch "cib" "/usr/libexec/pacemaker/cib"
ProcessMatch "stonithd" "/usr/libexec/pacemaker/stonithd"
ProcessMatch "attrd" "/usr/libexec/pacemaker/attrd"
ProcessMatch "pengine" "/usr/libexec/pacemaker/pengine"
ProcessMatch "crmd" "/usr/libexec/pacemaker/crmd"
ProcessMatch "lrmd" "/usr/libexec/pacemaker/lrmd"
ProcessMatch "pcsd" "^/usr/bin/ruby.+/usr/lib/pcsd"
ProcessMatch "collectd" "/usr/sbin/collectd.+-C.+/etc/collectd.conf"
Process "corosync"
ProcessMatch "dnsmasq" "^dnsmasq.+"
ProcessMatch "dnsmasq-ironic" "/sbin/dnsmasq.+/etc/ironic-discoverd/dnsmasq.conf"
ProcessMatch "haproxy" "/usr/sbin/haproxy.+/etc/haproxy/haproxy.cfg"
Process "httpd"
Process "memcached"
Process "mongod"
ProcessMatch "mysqld" "/usr/libexec/mysqld"
ProcessMatch "ovs-vswitchd" "ovs-vswitchd.+openvswitch"
ProcessMatch "ovsdb-server" "ovsdb-server.+openvswitch"
ProcessMatch "qemu-kvm" "/usr/libexec/qemu-kvm"
ProcessMatch "rabbitmq" "/usr/lib64/erlang/erts-.+/bin/beam.smp"
Process "redis-server"
ProcessMatch "tuskar-api" "python.+tuskar-api"
</Plugin>
<Plugin swap>
ReportBytes true
ValuesPercentage true
</Plugin>
# Tail plugin configuration
<Plugin "tail">
<File "/var/log/keystone/keystone.log">
Instance "keystone"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/nova/nova-api.log">
Instance "nova-api"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/nova/nova-conductor.log">
Instance "nova-conductor"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/nova/nova-scheduler.log">
Instance "nova-scheduler"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/neutron/dhcp-agent.log">
Instance "neutron-dhcp-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/neutron/l3-agent.log">
Instance "neutron-l3-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/neutron/metadata-agent.log">
Instance "neutron-metadata-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/neutron/openvswitch-agent.log">
Instance "neutron-openvswitch-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/neutron/server.log">
Instance "neutron-server"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/cinder/api.log">
Instance "cinder-api"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/cinder/scheduler.log">
Instance "cinder-scheduler"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/cinder/volume.log">
Instance "cinder-volume"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
</Plugin>
# Include other collectd configuration files
Include "/etc/collectd.d"

View File

@ -1,4 +1,5 @@
# Installed by Browbeat Ansible Installer
# Config type: {{config_type}}
# Interval default is 10s
Interval {{collectd_interval}}
@ -24,10 +25,7 @@ LoadPlugin memory
LoadPlugin numa
LoadPlugin processes
LoadPlugin swap
{% if 'controller' in group_names or 'undercloud' in group_names %}
LoadPlugin tail
{% endif %}
#LoadPlugin tcpconns
LoadPlugin turbostat
LoadPlugin uptime
@ -64,13 +62,6 @@ PreCacheChain "PreCache"
</Carbon>
</Plugin>
# Collectd to graphite uses derive type so no need for ValuesPercentage
#<Plugin cpu>
# ReportByCpu true
# ReportByState true
# ValuesPercentage true
#</Plugin>
<Plugin df>
ValuesPercentage true
</Plugin>
@ -80,10 +71,6 @@ PreCacheChain "PreCache"
IgnoreSelected false
</Plugin>
#<Plugin exec>
# Exec nobody "/usr/local/bin/collectd-redis.sh"
#</Plugin>
<Plugin processes>
# Ceilometer
ProcessMatch "ceilometer-agent-central" "python.+ceilometer-agent-central"
@ -186,10 +173,8 @@ PreCacheChain "PreCache"
ValuesPercentage true
</Plugin>
# Tail plugin configuration
<Plugin "tail">
{% if 'undercloud' in group_names %}
<File "/var/log/keystone/keystone.log">
Instance "keystone"
<Match>
@ -320,150 +305,7 @@ PreCacheChain "PreCache"
Instance "total"
</Match>
</File>
{% endif %}
{% if 'controller' in group_names %}
<File "/var/log/keystone/keystone.log">
Instance "keystone"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/nova/nova-api.log">
Instance "nova-api"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/nova/nova-conductor.log">
Instance "nova-conductor"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/nova/nova-scheduler.log">
Instance "nova-scheduler"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/neutron/dhcp-agent.log">
Instance "neutron-dhcp-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/neutron/l3-agent.log">
Instance "neutron-l3-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/neutron/metadata-agent.log">
Instance "neutron-metadata-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/neutron/openvswitch-agent.log">
Instance "neutron-openvswitch-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/neutron/server.log">
Instance "neutron-server"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/cinder/api.log">
Instance "cinder-api"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/cinder/scheduler.log">
Instance "cinder-scheduler"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/cinder/volume.log">
Instance "cinder-volume"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
{% endif %}
{% if 'compute' in group_names %}
<File "/var/log/nova/nova-compute.log">
Instance "nova-compute"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
<File "/var/log/neutron/openvswitch-agent.log">
Instance "neutron-openvswitch-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "total"
</Match>
</File>
{% endif %}
{% if 'ceph' in group_names %}
{# Add ceph logs to tail #}
{% endif %}
</Plugin>
#<Plugin tcpconns>
# ListeningPorts true
#</Plugin>
# Include other collectd configuration files
Include "/etc/collectd.d"