diff --git a/ansible/install/collectd-rhoso.yaml b/ansible/install/collectd-rhoso.yaml
new file mode 100644
index 000000000..4d8ed0be8
--- /dev/null
+++ b/ansible/install/collectd-rhoso.yaml
@@ -0,0 +1,8 @@
+- hosts: localhost
+ gather_facts: true
+ vars:
+ ansible_user: "{{ browbeat_user }}"
+ ansible_python_interpreter: "{{ python_interpreter }}"
+ roles:
+ - { role: collectd-rhoso }
+ environment: "{{proxy_env}}"
diff --git a/ansible/install/collectd.yml b/ansible/install/collectd.yml
index 8a2b25780..c01720389 100644
--- a/ansible/install/collectd.yml
+++ b/ansible/install/collectd.yml
@@ -1,6 +1,7 @@
---
- name: set fact collectd_container
import_playbook: pre-collectd.yml
+ when: not is_rhoso_deployment
- name: Run containerized collectd (Stein and greater recommended)
import_playbook: collectd-container.yml
@@ -9,3 +10,7 @@
- name: Run collectd installed through RPMs
import_playbook: collectd-baremetal.yml
when: not hostvars['undercloud']['collectd_container']
+
+- name: Run collectd rhoso
+ import_playbook: collectd-rhoso.yaml
+ when: is_rhoso_deployment
diff --git a/ansible/install/group_vars/all.yml b/ansible/install/group_vars/all.yml
index 45be88a64..ff51209c0 100644
--- a/ansible/install/group_vars/all.yml
+++ b/ansible/install/group_vars/all.yml
@@ -11,6 +11,10 @@ local_remote_user: stack
# Login user for the Overcloud hosts
host_remote_user: heat-admin
+is_rhoso_deployment: true
+python_interpreter: /usr/bin/python3.6
+kubeconfig_path: /home/kni/clusterconfigs/auth/kubeconfig
+
# OpenStack Installer
# Tripleo is the only installer supported currently
tripleo: true
diff --git a/ansible/install/roles/collectd-rhoso/files/collectd_deploy.yaml b/ansible/install/roles/collectd-rhoso/files/collectd_deploy.yaml
new file mode 100644
index 000000000..fb937d028
--- /dev/null
+++ b/ansible/install/roles/collectd-rhoso/files/collectd_deploy.yaml
@@ -0,0 +1,119 @@
+apiVersion: security.openshift.io/v1
+kind: SecurityContextConstraints
+metadata:
+ name: collectd-scc
+allowHostNetwork: true
+allowHostPID: true
+allowPrivilegedContainer: true
+allowPrivilegeEscalation: true
+runAsUser:
+ type: RunAsAny
+seLinuxContext:
+ type: RunAsAny
+fsGroup:
+ type: RunAsAny
+supplementalGroups:
+ type: RunAsAny
+users:
+- system:serviceaccount:ospperf:collectd-sa
+
+---
+
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: collectd-sa
+ namespace: ospperf
+
+---
+
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: pod-exec
+rules:
+- apiGroups: [""]
+ resources: ["pods"]
+ verbs: ["get", "list"]
+- apiGroups: [""]
+ resources: ["pods/exec"]
+ verbs: ["create"]
+
+---
+
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: pod-exec-binding
+subjects:
+- kind: ServiceAccount
+ name: collectd-sa
+ namespace: ospperf
+roleRef:
+ kind: ClusterRole
+ name: pod-exec
+ apiGroup: rbac.authorization.k8s.io
+
+---
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+ name: osp-controlplane-collectd
+ namespace: ospperf
+ labels:
+ app: ospcp-collectd
+spec:
+ replicas: 3
+ selector:
+ matchLabels:
+ app: ospcp-collectd
+ template:
+ metadata:
+ labels:
+ app: ospcp-collectd
+ spec:
+ serviceAccountName: collectd-sa
+ hostNetwork: true
+ hostPID: true
+ containers:
+ - name: ospcp-collectd
+ image: quay.io/masco/collecd-rhoso-ocp
+ command:
+ - "/bin/bash"
+ - "/entrypoint.sh"
+ securityContext:
+ privileged: true
+ volumeMounts:
+ - name: config-files
+ mountPath: "/etc/config"
+ - name: entrypoint-script
+ mountPath: "/entrypoint.sh"
+ subPath: "entrypoint.sh"
+ env:
+ - name: POD_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.name
+ envFrom:
+ - configMapRef:
+ name: collectd-env-vars
+ volumes:
+ - name: config-files
+ configMap:
+ name: collectd-configs
+ - name: entrypoint-script
+ configMap:
+ name: collectd-entrypoint
+ nodeSelector:
+ node-role.kubernetes.io/worker: ""
+ affinity:
+ podAntiAffinity:
+ requiredDuringSchedulingIgnoredDuringExecution:
+ - labelSelector:
+ matchExpressions:
+ - key: app
+ operator: In
+ values:
+ - ospcp-collectd
+ topologyKey: "kubernetes.io/hostname"
diff --git a/ansible/install/roles/collectd-rhoso/files/entrypoint.sh b/ansible/install/roles/collectd-rhoso/files/entrypoint.sh
new file mode 100644
index 000000000..aad392642
--- /dev/null
+++ b/ansible/install/roles/collectd-rhoso/files/entrypoint.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+# Get the last segment of the pod name (assuming the pod name is stored in POD_NAME environment variable)
+POD_NAME_SUFFIX=$(echo $POD_NAME | awk -F '-' '{print $NF}')
+
+# Determine the configuration file based on the pod name suffix
+if [ "$POD_NAME_SUFFIX" = "0" ]; then
+ CONFIG_FILE="/etc/config/collectd-db.conf"
+else
+ CONFIG_FILE="/etc/config/collectd.conf"
+fi
+
+# Start the main process with the selected configuration file
+exec collectd -f -C $CONFIG_FILE
diff --git a/ansible/install/roles/collectd-rhoso/tasks/main.yml b/ansible/install/roles/collectd-rhoso/tasks/main.yml
new file mode 100644
index 000000000..561e98fd9
--- /dev/null
+++ b/ansible/install/roles/collectd-rhoso/tasks/main.yml
@@ -0,0 +1,82 @@
+---
+- block:
+ - name: Fetch Cluster IP and Ports for openstack service
+ command: oc get svc openstack -n openstack -o jsonpath='{.spec.clusterIP} {.spec.ports[0].port}'
+ register: openstack_svc
+
+ - name: Fetch Cluster IP and Ports for ovsdbserver-nb-0 service
+ command: oc get svc ovsdbserver-nb-0 -n openstack -o jsonpath='{.spec.clusterIP} {.spec.ports[0].port}'
+ register: ovsdbserver_nb_0_svc
+
+ - name: Fetch Cluster IP and Ports for ovsdbserver-sb-0 service
+ command: oc get svc ovsdbserver-sb-0 -n openstack -o jsonpath='{.spec.clusterIP} {.spec.ports[0].port}'
+ register: ovsdbserver_sb_0_svc
+ environment:
+ KUBECONFIG: "{{ kubeconfig_path }}"
+
+- name: Parse openstack service details
+ set_fact:
+ openstack_svc_ip: "{{ openstack_svc.stdout.split(' ')[0] }}"
+ openstack_svc_port: "{{ openstack_svc.stdout.split(' ')[1] }}"
+
+- name: Parse ovsdbserver-nb-0 service details
+ set_fact:
+ ovsdbserver_nb_0_svc_ip: "{{ ovsdbserver_nb_0_svc.stdout.split(' ')[0] }}"
+ ovsdbserver_nb_0_svc_port: "{{ ovsdbserver_nb_0_svc.stdout.split(' ')[1] }}"
+
+- name: Parse ovsdbserver-sb-0 service details
+ set_fact:
+ ovsdbserver_sb_0_svc_ip: "{{ ovsdbserver_sb_0_svc.stdout.split(' ')[0] }}"
+ ovsdbserver_sb_0_svc_port: "{{ ovsdbserver_sb_0_svc.stdout.split(' ')[1] }}"
+
+- name: Create environment file with key-value pairs
+ copy:
+ dest: ~/env_file.env
+ content: |
+ COLLECTD_INTERVAL={{ collectd_interval }}
+ OVN_NBDB_IP={{ ovsdbserver_nb_0_svc_ip }}
+ OVN_NBDB_PORT={{ ovsdbserver_nb_0_svc_port }}
+ OVN_SBDB_IP={{ ovsdbserver_sb_0_svc_ip }}
+ OVN_SBDB_PORT={{ ovsdbserver_sb_0_svc_port }}
+
+- name: Render collectd template with db_conf
+ template:
+ src: "controlplane.collectd.conf.j2"
+ dest: "{{ ansible_env.HOME }}/collectd-db.conf"
+ vars:
+ db_conf: true
+
+- name: Render collectd template without db_conf
+ template:
+ src: "controlplane.collectd.conf.j2"
+ dest: "{{ ansible_env.HOME }}/collectd.conf"
+ vars:
+ db_conf: false
+
+- name: Create ospperf namespace
+ shell:
+ cmd: oc new-project ospperf
+ register: create_ns
+ ignore_errors: yes
+ environment:
+ KUBECONFIG: "{{ kubeconfig_path }}"
+
+- block:
+ - name: Create configmaps for collectd configs
+ shell: |
+ oc create configmap collectd-configs --from-file={{ ansible_env.HOME }}/collectd.conf --from-file={{ ansible_env.HOME }}/collectd-db.conf -n ospperf
+
+ - name: Create collectd entrypoint configmap
+ shell: |
+ oc create configmap collectd-entrypoint --from-file="{{ role_path }}/files/entrypoint.sh" -n ospperf
+
+ - name: Create collectd env configmap
+ shell: |
+ oc create configmap collectd-env-vars --from-env-file={{ ansible_env.HOME }}/env_file.env -n ospperf
+
+ - name: Apply collectd deployment yaml
+ shell: |
+ oc apply -f {{ role_path }}/files/collectd_deploy.yaml -n ospperf
+ when: create_ns.rc == 0
+ environment:
+ KUBECONFIG: "{{ kubeconfig_path }}"
diff --git a/ansible/install/roles/collectd-rhoso/templates/controlplane.collectd.conf.j2 b/ansible/install/roles/collectd-rhoso/templates/controlplane.collectd.conf.j2
new file mode 100644
index 000000000..55f418ee9
--- /dev/null
+++ b/ansible/install/roles/collectd-rhoso/templates/controlplane.collectd.conf.j2
@@ -0,0 +1,341 @@
+# Interval default is 10s
+Interval {{collectd_interval}}
+
+# Loaded Plugins:
+LoadPlugin "logfile"
+
+ File "/var/log/collectd.log"
+ LogLevel "info"
+ PrintSeverity true
+ Timestamp true
+
+
+LoadPlugin write_graphite
+
+LoadPlugin cpu
+LoadPlugin conntrack
+{% if keystone_overcloud_collectd_plugin or osp_resources_collectd_plugin %}
+{% if db_conf %}
+LoadPlugin dbi
+{% endif %}
+{% endif %}
+LoadPlugin df
+LoadPlugin disk
+LoadPlugin exec
+LoadPlugin interface
+LoadPlugin irq
+LoadPlugin load
+LoadPlugin match_regex
+LoadPlugin memory
+LoadPlugin mysql
+LoadPlugin numa
+LoadPlugin processes
+
+ Globals true
+
+LoadPlugin swap
+LoadPlugin tail
+LoadPlugin turbostat
+LoadPlugin unixsock
+LoadPlugin uptime
+
+# Open unix domain socket for collectdctl
+
+ SocketFile "/var/run/collectd-unixsock"
+ SocketGroup "collectd"
+ SocketPerms "0770"
+ DeleteSocket true
+
+
+PreCacheChain "PreCache"
+
+
+
+ Plugin "^interface$"
+ PluginInstance "^tap*"
+
+ Target "stop"
+
+
+
+ Plugin "^interface$"
+ PluginInstance "^q.*"
+
+ Target "stop"
+
+ Target "return"
+
+
+# Graphite Host Configuration
+{% if collectd_graphite %}
+
+
+ Host "{{graphite_host}}"
+ Port "{{collectd_write_graphite_port}}"
+ Prefix "{{graphite_prefix}}."
+ Protocol "tcp"
+ LogSendErrors true
+ StoreRates true
+ AlwaysAppendDS false
+ EscapeCharacter "_"
+
+
+{% endif %}
+
+{% if ovn_monitoring %}
+{% if db_conf %}
+
+ Instance "ovn_sbdb_Address_Set"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "Address_Set"
+
+
+ Instance "ovn_sbdb_Port_Group"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "Port_Group"
+
+
+ Instance "ovn_sbdb_Logical_Flow"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "Logical_Flow"
+
+
+ Instance "ovn_sbdb_Multicast_Group"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "Multicast_Group"
+
+
+ Instance "ovn_sbdb_Datapath_Binding"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "Datapath_Binding"
+
+
+ Instance "ovn_sbdb_Port_Binding"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "Port_Binding"
+
+
+ Instance "ovn_sbdb_MAC_Binding"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "MAC_Binding"
+
+
+ Instance "ovn_nbdb_Logical_Switch"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Logical_Switch"
+
+
+ Instance "ovn_nbdb_Logical_Switch_Port"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Logical_Switch_Port"
+
+
+ Instance "ovn_nbdb_Address_Set"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Address_Set"
+
+
+ Instance "ovn_nbdb_Port_Group"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Port_Group"
+
+
+ Instance "ovn_nbdb_Load_Balancer"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Load_Balancer"
+
+
+ Instance "ovn_nbdb_ACL"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "ACL"
+
+
+ Instance "ovn_nbdb_Logical_Router"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Logical_Router"
+
+
+ Instance "ovn_nbdb_Logical_Router_Port"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Logical_Router_Port"
+
+
+ Instance "ovn_nbdb_Logical_Router_Static_Route"
+ Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Logical_Router_Static_Route"
+
+{% endif %}
+{% endif %}
+
+{%if iostat_controller_collectd_plugin %}
+
+ ModulePath "/usr/local/bin/"
+ Import "collectd_iostat_python"
+
+
+ Path "/usr/bin/iostat"
+ Interval {{iostat_controller_collectd_interval}}
+ IostatInterval 2
+ Count 2
+ Verbose false
+ NiceNames false
+ PluginName collectd_iostat_python
+
+
+
+{% endif %}
+
+{%if ovn_raft_monitoring %}
+{% if db_conf %}
+
+ ModulePath "/usr/local/bin/"
+ Import "collectd_ovn_raft_monitoring"
+
+ Interval {{ovn_raft_controller_collectd_interval}}
+
+
+
+{% endif %}
+{% endif %}
+
+# Including the version of OpenStack that the process was verified as running after
+# OpenStack Installation with a comment at the end of each Process/ProcessMatch statement.
+# A Minus before the version means the process was not found in that version. (Ex -10)
+
+ # Aodh (OpenStack Installed)
+ ProcessMatch "aodh-evaluator" "aodh-evaluator" # 10,11,12,13
+ ProcessMatch "aodh-listener" "aodh-listener" # 10,11,12,13
+ ProcessMatch "aodh-notifier" "aodh-notifier" # 10,11,12,13
+ ProcessMatch "aodh_wsgi" "aodh_wsgi.*-DFOREGROUND" # 11,12,13
+
+ # Barbican (OpenStack Installed)
+ ProcessMatch "barbican_wsgi" "barbican_wsgi.*-DFOREGROUND" # 13
+ ProcessMatch "barbican-keystone-listener" "python.+barbican-keystone-listener" # 13
+ ProcessMatch "barbican-worker" "python.+barbican-worker" # 13
+
+ # Ceilometer (OpenStack Installed)
+ ProcessMatch "ceilometer-agent-notification" "ceilometer-agent-notification" # 10,11,12,13
+ ProcessMatch "ceilometer-collector" "ceilometer-collector" # 10,11,-12,-13
+ ProcessMatch "ceilometer-polling" "ceilometer-polling" # 10,11,12,13
+ ProcessMatch "ceilometer_wsgi" "ceilometer_wsgi.*-DFOREGROUND" # 11,-12,-13
+
+ # Ceph (OpenStack Installed)
+ # When CephStorage nodes deployed
+ ProcessMatch "ceph-mon" "^/usr/bin/ceph-mon" # -10,-11,-12,-13
+
+ # Cinder (OpenStack Installed)
+ ProcessMatch "cinder-api" "python.+cinder-api" # 10,-11,-12
+ ProcessMatch "cinder-scheduler" "python.+cinder-scheduler" # 10,11,12,13
+ ProcessMatch "cinder-volume" "python.+cinder-volume" # 10,11,12,13
+ ProcessMatch "cinder_wsgi" "cinder_wsgi.*-DFOREGROUND" # 11,12,13
+
+ # Collectd (Browbeat Installed)
+ ProcessMatch "collectd" "/usr/sbin/collectd"
+
+ # Conmon (OpenStack Installed)
+ ProcessMatch "conmon" "/usr/bin/conmon" # 16
+
+ # Docker (OpenStack Installed)
+ ProcessMatch "dockerd-current" "dockerd-current" # 12,13
+
+ # Pacemaker / Corosync (OpenStack Installed)
+ ProcessMatch "attrd" "/usr/libexec/pacemaker/attrd" # 10,11,12,13
+ ProcessMatch "cib" "/usr/libexec/pacemaker/cib" # 10,11,12,13
+ Process "corosync" # 10,11,12,13
+ ProcessMatch "crmd" "/usr/libexec/pacemaker/crmd" # 10,11,12,13
+ ProcessMatch "lrmd" "/usr/libexec/pacemaker/lrmd" # 10,11,12,13
+ ProcessMatch "pacemakerd" "/usr/sbin/pacemakerd" # 10,11,12,13
+ ProcessMatch "pcsd" "^/usr/bin/ruby.+/usr/lib/pcsd" # 10,11,12,13
+ ProcessMatch "pengine" "/usr/libexec/pacemaker/pengine" # 10,11,12,13
+ ProcessMatch "stonithd" "/usr/libexec/pacemaker/stonithd" # 10,11,12,13
+
+ # Everything Else (OpenStack Installed)
+ # (Processes displayed under "Everything Else" on Grafana Dashboards)
+ ProcessMatch "dnsmasq" "^dnsmasq.+" # 10,11,12
+ ProcessMatch "haproxy" "/usr/sbin/haproxy.+/etc/haproxy/haproxy.cfg" # 10,11,12,13
+ Process "httpd" # 10,11,12,13
+ Process "keepalived" # 10,11,12
+ Process "memcached" # 10,11,12,13
+ Process "mongod" # 10,11,-12,-13
+ ProcessMatch "mysqld" "/usr/libexec/mysqld" # 10,11,12,13
+ ProcessMatch "rabbitmq" "/usr/lib64/erlang/erts-.+/bin/beam.smp" # 10,11,12,13
+ Process "redis-server" # 10,11,12,13
+ ProcessMatch "karaf" "java.+karaf" # ODL Specific
+
+ # Glance (OpenStack Installed)
+ ProcessMatch "glance-api" "python.+glance-api" # 10,11,12,13
+ ProcessMatch "glance-registry" "python.+glance-registry" # 10,-11,-12,-13
+
+ # Gnocchi (OpenStack Installed)
+ ProcessMatch "gnocchi-metricd-master" "gnocchi-metricd.*master" # 11,12,13
+ ProcessMatch "gnocchi-metricd-scheduler" "gnocchi-metricd.*scheduler" # 10,11,-12,-13
+ ProcessMatch "gnocchi-metricd-processing" "gnocchi-metricd.*processing" # 10,11,12,13
+ ProcessMatch "gnocchi-metricd-reporting" "gnocchi-metricd.*reporting" # 10,11,12,13
+ ProcessMatch "gnocchi-metricd-janitor" "gnocchi-metricd.*janitor" # 10,11,12,13
+ ProcessMatch "gnocchi-metricd" "gnocchi-metricd " # 10(Old proctitle)
+ ProcessMatch "gnocchi-statsd" "python.+gnocchi-statsd" # 10,11,12,13
+ ProcessMatch "gnocchi_wsgi" "gnocchi_wsgi.*-DFOREGROUND" # 11,12,13
+
+ # Heat (OpenStack Installed)
+ ProcessMatch "heat-api" "python.+heat-api --config-file" # 10,11,-12,-13
+ ProcessMatch "heat-api-cfn" "python.+heat-api-cfn" # 10,11,-12,-13
+ ProcessMatch "heat-api-cloudwatch" "python.+heat-api-cloudwatch" # 10,11,-12,-123
+ ProcessMatch "heat_api_cfn" "heat_api_cfn_ws" # 12,13
+ ProcessMatch "heat_api_cloudwatch" "heat_api_cloudw" # 12,-13
+ ProcessMatch "heat_api_wsgi" "heat_api_wsgi" # 12,13
+ ProcessMatch "heat-engine" "python.+heat-engine" # 10,11,12,13
+
+ # Horizon (OpenStack Installed)
+ ProcessMatch "horizon" "horizon" # 13
+
+ # Keystone (OpenStack Installed)
+ ProcessMatch "keystone-admin" "keystone-admin.*-DFOREGROUND" # 10,11,12,13
+ ProcessMatch "keystone-main" "keystone-main.*-DFOREGROUND" # 10,11,12,13
+ ProcessMatch "keystone" "keystone.*-DFOREGROUND" # 16
+ # Starting Pike, fernet tokens are default thus token_flush not needed
+ ProcessMatch "keystone-token-flush" "keystone-manage.*token_flush" # 10,11,-12,-13
+
+ # Neutron (OpenStack Installed)
+ ProcessMatch "neutron-dhcp-agent" "python.+neutron-dhcp-agent" # 10,11,12,13
+ ProcessMatch "neutron-l3-agent" "python.+neutron-l3-agent" # 10,11,12,13
+ ProcessMatch "neutron-metadata-agent" "python.+neutron-metadata-agent" # 10,11,12,13
+ ProcessMatch "neutron-ns-metadata-proxy" "python.+neutron-ns-metadata-proxy" # 10,11
+ ProcessMatch "neutron-openvswitch-agent" "python.+neutron-openvswitch-agent" # 10,11,12,13
+ ProcessMatch "neutron-rootwrap-daemon" "python.+neutron-rootwrap-daemon" # 10,11,12,13
+ ProcessMatch "neutron-server" "python.+neutron-server" # 10,11,12,13
+ ProcessMatch "neutron-keepalived-state-change" "python.+neutron-keepalived-state-change" #For HA router
+
+ # Nova (OpenStack Installed)
+ ProcessMatch "nova-api" "python.+nova-api$" # 10,11,-12,-13
+ ProcessMatch "nova-api-metadata" "python.+nova-api-metadata" # 12,13
+ ProcessMatch "nova_api_wsgi" "nova_api_wsgi" # 12,13
+ ProcessMatch "nova-conductor" "python.+nova-conductor" # 10,11,12,13
+ ProcessMatch "nova-consoleauth" "python.+nova-consoleauth" # 10,11,12,13
+ ProcessMatch "nova-novncproxy" "python.+nova-novncproxy" # 10,11,12,13
+ ProcessMatch "nova-scheduler" "python.+nova-scheduler" # 10,11,12,13
+ ProcessMatch "placement_wsgi" "placement_wsgi.*-DFOREGROUND" # 11,12,13
+ ProcessMatch "nova_metadata_w" "nova_metadata_w.*-DFOREGROUND" # 16
+
+ # Octavia (OpenStack Installed)
+ ProcessMatch "octavia-housekeeping" "python.+octavia-housekeeping" # 13
+ ProcessMatch "octavia-health-manager" "python.+octavia-health-manager" # 13
+ ProcessMatch "octavia-api" "python.+octavia-api" # 13
+ ProcessMatch "octavia-worker" "octavia-worker --config-file" # 13
+ ProcessMatch "octavia_wsgi" "octavia_wsgi.*-DFOREGROUND" # 16
+
+ # OVS (OpenStack Installed)
+ ProcessMatch "ovs-vswitchd" "ovs-vswitchd.+openvswitch" # 10,11,12,13
+ ProcessMatch "ovsdb-client" "ovsdb-client" # 10,11,12,13
+ ProcessMatch "ovsdb-server" "ovsdb-server.+openvswitch" # 10,11,12,13
+ ProcessMatch "ovsdb-server-nb" "ovsdb-server.+ovsdb-server-nb" # 16
+ ProcessMatch "ovsdb-server-sb" "ovsdb-server.+ovsdb-server-sb" # 16
+ ProcessMatch "ovn-northd" "ovn-northd.+ovnnb_db" # 16
+ ProcessMatch "ovn-controller" "ovn-controller.+openvswitch" # 9,10
+ ProcessMatch "ovn-controller-vtep" "ovn-controller-vtep.+openvswitch" # 9,10
+
+ # Panko (OpenStack Installed)
+ ProcessMatch "panko_wsgi" "panko_wsgi.*-DFOREGROUND" # 11,12,13
+
+ # Swift (OpenStack Installed)
+ ProcessMatch "swift-account-auditor" "python.+swift-account-auditor" # 10,11,12,13
+ ProcessMatch "swift-account-reaper" "python.+swift-account-reaper" # 10,11,12,13
+ ProcessMatch "swift-account-replicator" "python.+swift-account-replicator" # 10,11,12,13
+ ProcessMatch "swift-account-server" "python.+swift-account-server" # 10,11,12,13
+ ProcessMatch "swift-container-auditor" "python.+swift-container-auditor" # 10,11,12,13
+ ProcessMatch "swift-container-replicator" "python.+swift-container-replicator" # 10,11,12,13
+ ProcessMatch "swift-container-server" "python.+swift-container-server" # 10,11,12,13
+ ProcessMatch "swift-container-updater" "python.+swift-container-updater" # 10,11,12,13
+ ProcessMatch "swift-object-auditor" "python.+swift-object-auditor" # 10,11,12,13
+ ProcessMatch "swift-object-expirer" "python.+swift-object-expirer" # 11,12,13
+ ProcessMatch "swift-object-replicator" "python.+swift-object-replicator" # 10,11,12,13
+ ProcessMatch "swift-object-server" "python.+swift-object-server" # 10,11,12,13
+ ProcessMatch "swift-object-updater" "python.+swift-object-updater" # 10,11,12,13
+ ProcessMatch "swift-proxy-server" "python.+swift-proxy-server" # 10,11,12,13
+
+
+# Include other collectd configuration files
+Include "/etc/collectd.d"