diff --git a/ansible/README.collectd-generic.md b/ansible/README.collectd-generic.md new file mode 100644 index 000000000..096b0f964 --- /dev/null +++ b/ansible/README.collectd-generic.md @@ -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. diff --git a/ansible/README.md b/ansible/README.md index d30101d3f..f42d9427d 100644 --- a/ansible/README.md +++ b/ansible/README.md @@ -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 ~/.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: ``` diff --git a/ansible/install/collectd-generic.yml b/ansible/install/collectd-generic.yml index 421e7b3da..16bca5740 100644 --- a/ansible/install/collectd-generic.yml +++ b/ansible/install/collectd-generic.yml @@ -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 diff --git a/ansible/install/collectd-openstack.yml b/ansible/install/collectd-openstack.yml index 02ee71d60..6ac262e58 100644 --- a/ansible/install/collectd-openstack.yml +++ b/ansible/install/collectd-openstack.yml @@ -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 } diff --git a/ansible/install/roles/collectd-generic/tasks/main.yml b/ansible/install/roles/collectd-generic/tasks/main.yml index de9df7b4a..be0b9869a 100644 --- a/ansible/install/roles/collectd-generic/tasks/main.yml +++ b/ansible/install/roles/collectd-generic/tasks/main.yml @@ -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 diff --git a/ansible/install/roles/collectd-generic/templates/collectd.conf.j2 b/ansible/install/roles/collectd-generic/templates/baremetal.collectd.conf.j2 similarity index 76% rename from ansible/install/roles/collectd-generic/templates/collectd.conf.j2 rename to ansible/install/roles/collectd-generic/templates/baremetal.collectd.conf.j2 index c080af4f2..53d7b1ff9 100644 --- a/ansible/install/roles/collectd-generic/templates/collectd.conf.j2 +++ b/ansible/install/roles/collectd-generic/templates/baremetal.collectd.conf.j2 @@ -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" - - - - Plugin "^interface$" - PluginInstance "^tap*" - - Target "stop" - - - - Plugin "^interface$" - PluginInstance "^q.*" - - Target "stop" - - Target "return" - - # Graphite Host Configuration @@ -80,6 +61,5 @@ PreCacheChain "PreCache" ValuesPercentage true - # Include other collectd configuration files Include "/etc/collectd.d" diff --git a/ansible/install/roles/collectd-generic/templates/cfme.collectd.conf.j2 b/ansible/install/roles/collectd-generic/templates/cfme.collectd.conf.j2 new file mode 100644 index 000000000..9876730a9 --- /dev/null +++ b/ansible/install/roles/collectd-generic/templates/cfme.collectd.conf.j2 @@ -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 + + + Host "{{graphite_host}}" + Port "2003" + Prefix "{{graphite_prefix}}." + Protocol "tcp" + LogSendErrors true + StoreRates true + AlwaysAppendDS false + EscapeCharacter "_" + + + + + ValuesPercentage true + + + + Disk "/^[hsv]d[a-z]+[0-9]?$/" + IgnoreSelected false + + + + 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" + + + + ReportBytes true + ValuesPercentage true + + + + + Instance "api" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "appliance_console" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "audit" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "automation" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "aws" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "evm" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "fog" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "kubernetes" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "policy" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "production" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "rhevm" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "scvmm" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "vim" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + +# Include other collectd configuration files +Include "/etc/collectd.d" diff --git a/ansible/install/roles/collectd-generic/templates/graphite.collectd.conf.j2 b/ansible/install/roles/collectd-generic/templates/graphite.collectd.conf.j2 new file mode 100644 index 000000000..140bfb456 --- /dev/null +++ b/ansible/install/roles/collectd-generic/templates/graphite.collectd.conf.j2 @@ -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 + + + Host "{{graphite_host}}" + Port "2003" + Prefix "{{graphite_prefix}}." + Protocol "tcp" + LogSendErrors true + StoreRates true + AlwaysAppendDS false + EscapeCharacter "_" + + + + + ValuesPercentage true + + + + Disk "/^[hsv]d[a-z]+[0-9]?$/" + IgnoreSelected false + + + + ProcessMatch "carbon-cache" "python.+carbon-cache" + Process "grafana-server" + Process "httpd" + # Collect on collectd process + ProcessMatch "collectd" "/usr/sbin/collectd.+-C.+/etc/collectd.conf" + + + + ReportBytes true + ValuesPercentage true + + +# Include other collectd configuration files +Include "/etc/collectd.d" diff --git a/ansible/install/roles/collectd-generic/templates/guest.collectd.conf.j2 b/ansible/install/roles/collectd-generic/templates/guest.collectd.conf.j2 new file mode 100644 index 000000000..a867d9d9d --- /dev/null +++ b/ansible/install/roles/collectd-generic/templates/guest.collectd.conf.j2 @@ -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 + + + Host "{{graphite_host}}" + Port "2003" + Prefix "{{graphite_prefix}}." + Protocol "tcp" + LogSendErrors true + StoreRates true + AlwaysAppendDS false + EscapeCharacter "_" + + + + + ValuesPercentage true + + + + Disk "/^[hsv]d[a-z]+[0-9]?$/" + IgnoreSelected false + + + + # Example, collect on all httpd processes: + Process "httpd" + + # Collect on collectd process + ProcessMatch "collectd" "/usr/sbin/collectd.+-C.+/etc/collectd.conf" + + + + ReportBytes true + ValuesPercentage true + + +# Include other collectd configuration files +Include "/etc/collectd.d" diff --git a/ansible/install/roles/collectd-generic/templates/satellite6.collectd.conf.j2 b/ansible/install/roles/collectd-generic/templates/satellite6.collectd.conf.j2 new file mode 100644 index 000000000..bbc57af6b --- /dev/null +++ b/ansible/install/roles/collectd-generic/templates/satellite6.collectd.conf.j2 @@ -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 + + + Host "{{graphite_host}}" + Port "2003" + Prefix "{{graphite_prefix}}." + Protocol "tcp" + LogSendErrors true + StoreRates true + AlwaysAppendDS false + EscapeCharacter "_" + + + + + ValuesPercentage true + + + + Disk "/^[hsv]d[a-z]+[0-9]?$/" + IgnoreSelected false + + + + # 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" + + + + ReportBytes true + ValuesPercentage true + + +# Include other collectd configuration files +Include "/etc/collectd.d" diff --git a/ansible/install/roles/collectd-openstack/tasks/main.yml b/ansible/install/roles/collectd-openstack/tasks/main.yml index 12ceddfe6..58006de0c 100644 --- a/ansible/install/roles/collectd-openstack/tasks/main.yml +++ b/ansible/install/roles/collectd-openstack/tasks/main.yml @@ -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 diff --git a/ansible/install/roles/collectd-openstack/templates/ceph.collectd.conf.j2 b/ansible/install/roles/collectd-openstack/templates/ceph.collectd.conf.j2 new file mode 100644 index 000000000..f0ff7c7a3 --- /dev/null +++ b/ansible/install/roles/collectd-openstack/templates/ceph.collectd.conf.j2 @@ -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" + + + + Plugin "^interface$" + PluginInstance "^tap*" + + Target "stop" + + + + Plugin "^interface$" + PluginInstance "^q.*" + + Target "stop" + + Target "return" + + +# Graphite Host Configuration + + + Host "{{graphite_host}}" + Port "2003" + Prefix "{{graphite_prefix}}." + Protocol "tcp" + LogSendErrors true + StoreRates true + AlwaysAppendDS false + EscapeCharacter "_" + + + + + ValuesPercentage true + + + + Disk "/^[hsv]d[a-z]+[0-9]?$/" + IgnoreSelected false + + + + # 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" + + + + ReportBytes true + ValuesPercentage true + + +# Tail plugin configuration + + {# Add ceph logs to tail #} + + +# Include other collectd configuration files +Include "/etc/collectd.d" diff --git a/ansible/install/roles/collectd-openstack/templates/compute.collectd.conf.j2 b/ansible/install/roles/collectd-openstack/templates/compute.collectd.conf.j2 new file mode 100644 index 000000000..9ba36fe31 --- /dev/null +++ b/ansible/install/roles/collectd-openstack/templates/compute.collectd.conf.j2 @@ -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" + + + + Plugin "^interface$" + PluginInstance "^tap*" + + Target "stop" + + + + Plugin "^interface$" + PluginInstance "^q.*" + + Target "stop" + + Target "return" + + +# Graphite Host Configuration + + + Host "{{graphite_host}}" + Port "2003" + Prefix "{{graphite_prefix}}." + Protocol "tcp" + LogSendErrors true + StoreRates true + AlwaysAppendDS false + EscapeCharacter "_" + + + + + ValuesPercentage true + + + + Disk "/^[hsv]d[a-z]+[0-9]?$/" + IgnoreSelected false + + + + # 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" + + + + ReportBytes true + ValuesPercentage true + + +# Tail plugin configuration + + + Instance "nova-compute" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + + Instance "neutron-openvswitch-agent" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + +# Include other collectd configuration files +Include "/etc/collectd.d" diff --git a/ansible/install/roles/collectd-openstack/templates/controller.collectd.conf.j2 b/ansible/install/roles/collectd-openstack/templates/controller.collectd.conf.j2 new file mode 100644 index 000000000..19987637c --- /dev/null +++ b/ansible/install/roles/collectd-openstack/templates/controller.collectd.conf.j2 @@ -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" + + + + Plugin "^interface$" + PluginInstance "^tap*" + + Target "stop" + + + + Plugin "^interface$" + PluginInstance "^q.*" + + Target "stop" + + Target "return" + + +# Graphite Host Configuration + + + Host "{{graphite_host}}" + Port "2003" + Prefix "{{graphite_prefix}}." + Protocol "tcp" + LogSendErrors true + StoreRates true + AlwaysAppendDS false + EscapeCharacter "_" + + + + + ValuesPercentage true + + + + Disk "/^[hsv]d[a-z]+[0-9]?$/" + IgnoreSelected false + + +# +# Exec nobody "/usr/local/bin/collectd-redis.sh" +# + + + # 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" + + + + ReportBytes true + ValuesPercentage true + + +# Tail plugin configuration + + + Instance "keystone" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + + Instance "nova-api" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "nova-conductor" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "nova-scheduler" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + + Instance "neutron-dhcp-agent" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "neutron-l3-agent" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "neutron-metadata-agent" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "neutron-openvswitch-agent" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "neutron-server" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + + Instance "cinder-api" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "cinder-scheduler" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + Instance "cinder-volume" + + Regex " ERROR " + DSType "CounterInc" + Type "counter" + Instance "total" + + + + +# Include other collectd configuration files +Include "/etc/collectd.d" diff --git a/ansible/install/roles/collectd-openstack/templates/collectd.conf.j2 b/ansible/install/roles/collectd-openstack/templates/undercloud.collectd.conf.j2 similarity index 71% rename from ansible/install/roles/collectd-openstack/templates/collectd.conf.j2 rename to ansible/install/roles/collectd-openstack/templates/undercloud.collectd.conf.j2 index ba0915270..987b0efed 100644 --- a/ansible/install/roles/collectd-openstack/templates/collectd.conf.j2 +++ b/ansible/install/roles/collectd-openstack/templates/undercloud.collectd.conf.j2 @@ -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" -# Collectd to graphite uses derive type so no need for ValuesPercentage -# -# ReportByCpu true -# ReportByState true -# ValuesPercentage true -# - ValuesPercentage true @@ -80,10 +71,6 @@ PreCacheChain "PreCache" IgnoreSelected false -# -# Exec nobody "/usr/local/bin/collectd-redis.sh" -# - # Ceilometer ProcessMatch "ceilometer-agent-central" "python.+ceilometer-agent-central" @@ -186,10 +173,8 @@ PreCacheChain "PreCache" ValuesPercentage true - # Tail plugin configuration -{% if 'undercloud' in group_names %} Instance "keystone" @@ -320,150 +305,7 @@ PreCacheChain "PreCache" Instance "total" - -{% endif %} -{% if 'controller' in group_names %} - - Instance "keystone" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - - - - Instance "nova-api" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - - - Instance "nova-conductor" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - - - Instance "nova-scheduler" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - - - - Instance "neutron-dhcp-agent" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - - - Instance "neutron-l3-agent" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - - - Instance "neutron-metadata-agent" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - - - Instance "neutron-openvswitch-agent" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - - - Instance "neutron-server" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - - - - Instance "cinder-api" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - - - Instance "cinder-scheduler" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - - - Instance "cinder-volume" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - -{% endif %} -{% if 'compute' in group_names %} - - Instance "nova-compute" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - - - - Instance "neutron-openvswitch-agent" - - Regex " ERROR " - DSType "CounterInc" - Type "counter" - Instance "total" - - -{% endif %} -{% if 'ceph' in group_names %} - {# Add ceph logs to tail #} -{% endif %} -# -# ListeningPorts true -# - # Include other collectd configuration files Include "/etc/collectd.d"