browbeat/ansible/install/roles/collectd-openstack/templates/controller.collectd.conf.j2
Sanjay Chari 765bc5e477 Add active instances collectd query
This patch adds a collectd query for only active instances.

Co-authored-by: jaison <jraju@redhat.com>
Change-Id: I82a641edf6d2120e316b7f258e39c2895fce9527
2022-01-19 16:04:42 +05:30

3035 lines
80 KiB
Django/Jinja

# 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
{% if not collectd_prometheus %}
Hostname "{{inventory_hostname}}"
{% endif %}
{% if collectd_prometheus %}
Hostname "{{prometheus_prefix}}_{{inventory_hostname}}"
{% endif %}
# Loaded Plugins:
LoadPlugin "logfile"
<Plugin "logfile">
File "/var/log/collectd.log"
LogLevel "info"
PrintSeverity true
Timestamp true
</Plugin>
LoadPlugin write_graphite
{% if apache_controller_collectd_plugin %}
LoadPlugin apache
{% endif %}
{% if ceph_controller_collectd_plugin %}
{% if inventory_hostname == groups['Controller'][0] %}
LoadPlugin ceph
{% endif %}
{% endif %}
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
{% if keystone_overcloud_collectd_plugin or osp_resources_collectd_plugin %}
{%if inventory_hostname == groups['Controller'][0] %}
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
<LoadPlugin python>
Globals true
</LoadPlugin>
LoadPlugin swap
LoadPlugin tail
LoadPlugin turbostat
LoadPlugin unixsock
LoadPlugin uptime
{% if ping_plugin %}
LoadPlugin ping
{% endif %}
# Open unix domain socket for collectdctl
<Plugin unixsock>
SocketFile "/var/run/collectd-unixsock"
SocketGroup "collectd"
SocketPerms "0770"
DeleteSocket true
</Plugin>
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
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
Port "{{collectd_write_graphite_port}}"
Prefix "{{graphite_prefix}}."
Protocol "tcp"
LogSendErrors true
StoreRates true
AlwaysAppendDS false
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
{% if apache_controller_collectd_plugin %}
<Plugin apache>
<Instance "status">
URL "http://127.0.0.1:{{apache_controller_mod_status_port}}/mod_status?auto"
</Instance>
</Plugin>
{% endif %}
{% if ceph_controller_collectd_plugin %}
{% if inventory_hostname == groups['Controller'][0] %}
{% if ovs_flows_monitoring %}
<Plugin exec>
Exec "heat-admin:heat-admin" "/usr/local/bin/ovs_flows.sh"
</Plugin>
{% endif %}
{% if ovn_monitoring %}
<Plugin exec>
Instance "ovn_sbdb_Address_Set"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "Address_Set"
</Plugin>
<Plugin exec>
Instance "ovn_sbdb_Port_Group"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "Port_Group"
</Plugin>
<Plugin exec>
Instance "ovn_sbdb_Logical_Flow"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "Logical_Flow"
</Plugin>
<Plugin exec>
Instance "ovn_sbdb_Multicast_Group"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "Multicast_Group"
</Plugin>
<Plugin exec>
Instance "ovn_sbdb_Datapath_Binding"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "Datapath_Binding"
</Plugin>
<Plugin exec>
Instance "ovn_sbdb_Port_Binding"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "Port_Binding"
</Plugin>
<Plugin exec>
Instance "ovn_sbdb_MAC_Binding"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "sb" "MAC_Binding"
</Plugin>
<Plugin exec>
Instance "ovn_nbdb_Logical_Switch"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Logical_Switch"
</Plugin>
<Plugin exec>
Instance "ovn_nbdb_Logical_Switch_Port"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Logical_Switch_Port"
</Plugin>
<Plugin exec>
Instance "ovn_nbdb_Address_Set"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Address_Set"
</Plugin>
<Plugin exec>
Instance "ovn_nbdb_Port_Group"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Port_Group"
</Plugin>
<Plugin exec>
Instance "ovn_nbdb_Load_Balancer"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Load_Balancer"
</Plugin>
<Plugin exec>
Instance "ovn_nbdb_ACL"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "ACL"
</Plugin>
<Plugin exec>
Instance "ovn_nbdb_Logical_Router"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Logical_Router"
</Plugin>
<Plugin exec>
Instance "ovn_nbdb_Logical_Router_Port"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Logical_Router_Port"
</Plugin>
<Plugin exec>
Instance "ovn_nbdb_Logical_Router_Static_Route"
Exec stack "/usr/local/bin/ovn_monitoring.sh" "nb" "Logical_Router_Static_Route"
</Plugin>
{% endif %}
<Plugin ceph>
LongRunAvgLatency false
ConvertSpecialMetricTypes true
<Daemon "mon.{{inventory_hostname}}">
SocketPath "/var/run/ceph/ceph-mon.{{inventory_hostname}}.asok"
</Daemon>
</Plugin>
{% endif %}
{% endif %}
{% if ceph_controller_collectd_radosbench_plugin or ceph_controller_collectd_mon_plugin or ceph_controller_collectd_osd_plugin or ceph_controller_collectd_pg_plugin or ceph_controller_collectd_pool_plugin %}
{% if inventory_hostname == groups['Controller'][0] %}
<Plugin python>
LogTraces true
Interactive false
ModulePath "/usr/local/bin/"
Import "collectd_ceph_storage"
<Module collectd_ceph_storage>
CephCluster "ceph"
CephRadosBench {{ceph_controller_collectd_radosbench_plugin}}
CephRadosBenchInterval {{ceph_controller_collectd_radosbench_interval}}
CephMONStats {{ceph_controller_collectd_mon_plugin}}
CephMONStatsInterval {{ceph_controller_collectd_mon_interval}}
CephOSDStats {{ceph_controller_collectd_osd_plugin}}
CephOSDStatsInterval {{ceph_controller_collectd_osd_interval}}
CephPGStats {{ceph_controller_collectd_pg_plugin}}
CephPGStatsInterval {{ceph_controller_collectd_pg_interval}}
CephPoolStats {{ceph_controller_collectd_pool_plugin}}
CephPoolStatsInterval {{ceph_controller_collectd_pool_interval}}
</Module>
</Plugin>
{% endif %}
{% endif %}
{% if osp_resources_collectd_plugin %}
{%if inventory_hostname == groups['Controller'][0] %}
<Plugin dbi>
<Query host_vms_count>
Statement "select host, running_vms from compute_nodes"
<Result>
Type gauge
InstancesFrom "host"
ValuesFrom "running_vms"
</Result>
</Query>
<Query instances_del_count>
Statement "select count(*) as instances_del from instances where deleted!=0"
<Result>
Type gauge
InstancePrefix "instances_del"
ValuesFrom "instances_del"
</Result>
</Query>
<Query instances_count>
Statement "select count(*) as instances from instances where deleted=0"
<Result>
Type gauge
InstancePrefix "instances"
ValuesFrom "instances"
</Result>
</Query>
<Query instance_active_count>
Statement "select count(*) as instances from instances where deleted=0 and vm_state = 'active'"
<Result>
Type gauge
InstancePrefix "instances_active"
ValuesFrom "instances"
</Result>
</Query>
<Query instance_faults_count>
Statement "select count(*) as instance_faults from instance_faults"
<Result>
Type gauge
InstancePrefix "instance_faults"
ValuesFrom "instance_faults"
</Result>
</Query>
<Database "nova">
Driver "mysql"
DriverOption "host" "localhost"
DriverOption "dbname" "nova"
DriverOption "username" "root"
DriverOption "password" "{{mysql_root_password.stdout}}"
DriverOption "mysql_unix_socket" "/var/lib/mysql/mysql.sock"
Query host_vms_count
Query instances_count
Query instance_active_count
Query instances_del_count
Query instance_faults_count
</Database>
<Query network_count>
Statement "select count(*) as network from networks"
<Result>
Type gauge
InstancePrefix "network"
ValuesFrom "network"
</Result>
</Query>
<Query subnet_count>
Statement "select count(*) as subnet from subnets"
<Result>
Type gauge
InstancePrefix "subnet"
ValuesFrom "subnet"
</Result>
</Query>
<Query port_others_count>
Statement "select count(*) as port_others from ports where device_owner not in ('network:dhcp','compute:nova')"
<Result>
Type gauge
InstancePrefix "port_others"
ValuesFrom "port_others"
</Result>
</Query>
<Query port_dhcp_count>
Statement "select count(*) as port_dhcp from ports where device_owner='network:dhcp'"
<Result>
Type gauge
InstancePrefix "port_dhcp"
ValuesFrom "port_dhcp"
</Result>
</Query>
<Query port_compute_count>
Statement "select count(*) as port_compute from ports where device_owner='compute:nova'"
<Result>
Type gauge
InstancePrefix "port_compute"
ValuesFrom "port_compute"
</Result>
</Query>
<Query floatingips_count>
Statement "select count(*) as floatingips from floatingips"
<Result>
Type gauge
InstancePrefix "floatingips"
ValuesFrom "floatingips"
</Result>
</Query>
<Query router_count>
Statement "select count(*) as router from routers"
<Result>
Type gauge
InstancePrefix "router"
ValuesFrom "router"
</Result>
</Query>
<Query router_iface_count>
Statement "select count(*) as router_iface from routerports where port_type='network:router_interface'"
<Result>
Type gauge
InstancePrefix "router_iface"
ValuesFrom "router_iface"
</Result>
</Query>
<Query router_gw_count>
Statement "select count(*) as router_gw from routerports where port_type='network:router_gateway'"
<Result>
Type gauge
InstancePrefix "router_gw"
ValuesFrom "router_gw"
</Result>
</Query>
<Query sg_count>
Statement "select count(*) as sg from securitygroups"
<Result>
Type gauge
InstancePrefix "sg"
ValuesFrom "sg"
</Result>
</Query>
<Query sgr_count>
Statement "select count(*) as sgr from securitygrouprules"
<Result>
Type gauge
InstancePrefix "sgr"
ValuesFrom "sgr"
</Result>
</Query>
<Query trunk_count>
Statement "select count(*) as trunk from trunks"
<Result>
Type gauge
InstancePrefix "trunk"
ValuesFrom "trunk"
</Result>
</Query>
<Query subports_count>
Statement "select count(*) as subports from subports"
<Result>
Type gauge
InstancePrefix "subports"
ValuesFrom "subports"
</Result>
</Query>
<Database "ovs_neutron">
Driver "mysql"
DriverOption "host" "localhost"
DriverOption "dbname" "ovs_neutron"
DriverOption "username" "root"
DriverOption "password" "{{mysql_root_password.stdout}}"
DriverOption "mysql_unix_socket" "/var/lib/mysql/mysql.sock"
Query network_count
Query port_others_count
Query subnet_count
Query port_dhcp_count
Query port_compute_count
Query floatingips_count
Query router_count
Query router_iface_count
Query router_gw_count
Query sg_count
Query sgr_count
Query trunk_count
Query subports_count
</Database>
<Query load_balancer_count>
Statement "select count(*) as load_balancer from load_balancer"
<Result>
Type gauge
InstancePrefix "load_balancer"
ValuesFrom "load_balancer"
</Result>
</Query>
<Query amphora_count>
Statement "select count(*) as amphora from amphora"
<Result>
Type gauge
InstancePrefix "amphora"
ValuesFrom "amphora"
</Result>
</Query>
<Query pool_count>
Statement "select count(*) as pool from pool"
<Result>
Type gauge
InstancePrefix "pool"
ValuesFrom "pool"
</Result>
</Query>
<Query member_count>
Statement "select count(*) as member from member"
<Result>
Type gauge
InstancePrefix "member"
ValuesFrom "member"
</Result>
</Query>
<Database "octavia">
Driver "mysql"
DriverOption "host" "localhost"
DriverOption "dbname" "octavia"
DriverOption "username" "root"
DriverOption "password" "{{mysql_root_password.stdout}}"
DriverOption "mysql_unix_socket" "/var/lib/mysql/mysql.sock"
Query load_balancer_count
Query amphora_count
Query pool_count
Query member_count
</Database>
</Plugin>
{% else %}
# Neutron Nova Octavia Count plugin installed and enabled on {{groups['Controller'][0]}}
{% endif %}
{% endif %}
{% if keystone_overcloud_collectd_plugin %}
{%if inventory_hostname == groups['Controller'][0] %}
<Plugin dbi>
<Query token_count>
Statement "select count(*) as count from token"
<Result>
Type gauge
InstancePrefix "token"
ValuesFrom "count"
</Result>
</Query>
<Database "keystone">
Driver "mysql"
DriverOption "host" "localhost"
DriverOption "dbname" "keystone"
DriverOption "username" "root"
DriverOption "password" "{{mysql_root_password.stdout}}"
DriverOption "mysql_unix_socket" "/var/lib/mysql/mysql.sock"
Query token_count
</Database>
</Plugin>
{% else %}
# Token Count plugin installed and enabled on {{groups['Controller'][0]}}
{% endif %}
{% endif %}
<Plugin df>
FSType anon_inodefs
FSType bdev
FSType cgroup
FSType cpuset
FSType debugfs
FSType devpts
FSType devtmpfs
FSType ecryptfs
FSType fuse
FSType fusectl
FSType hugetlbfs
FSType mqueue
FSType nfs
FSType nfs4
FSType nfsd
FSType overlay
FSType pipefs
FSType proc
FSType pstore
FSType ramfs
#FSType rootfs
FSType rpc_pipefs
FSType securityfs
FSType sockfs
FSType sysfs
FSType tmpfs
FSType vboxsf
MountPoint "/^/var/lib/docker/.*/"
IgnoreSelected true
ValuesPercentage true
ReportInodes true
</Plugin>
{%if disk_controller_collectd_plugin %}
<Plugin disk>
Disk "/^[hsv]d[a-z]+[0-9]?$/"
Disk "/^nvm/"
IgnoreSelected false
</Plugin>
{% endif %}
{%if iostat_controller_collectd_plugin %}
<Plugin python>
ModulePath "/usr/local/bin/"
Import "collectd_iostat_python"
<Module collectd_iostat_python>
Path "/usr/bin/iostat"
Interval {{iostat_controller_collectd_interval}}
IostatInterval 2
Count 2
Verbose false
NiceNames false
PluginName collectd_iostat_python
</Module>
</Plugin>
{% endif %}
{%if pacemaker_monitoring %}
<Plugin python>
ModulePath "/usr/local/bin/"
Import "collectd_pacemaker_monitoring"
<Module collectd_pacemaker_monitoring>
Interval {{pacemaker_controller_collectd_interval}}
</Module>
</Plugin>
{% endif %}
{%if gnocchi_status_controller_collectd_plugin %}
{%if inventory_hostname == groups['Controller'][0] %}
<Plugin python>
ModulePath "/usr/local/bin/"
LogTraces true
Interactive false
Import "collectd_gnocchi_status"
<Module collectd_gnocchi_status>
interval {{gnocchi_status_controller_collectd_interval}}
</Module>
</Plugin>
{% else %}
# Gnocchi status plugin installed and enabled on {{groups['Controller'][0]}}
{% endif %}
{% endif %}
<Plugin mysql>
<Database "overcloud">
Host "localhost"
User "root"
Password "{{mysql_root_password.stdout}}"
Socket "/var/lib/mysql/mysql.sock"
InnodbStats true
</Database>
</Plugin>
# (akrzos) 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)
<Plugin processes>
# 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
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 "ovn-northd" "ovn-northd.+openvswitch" # 9,10
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
</Plugin>
{%if rabbitmq_controller_collectd_plugin %}
{%if inventory_hostname == groups['Controller'][0] %}
<Plugin python>
ModulePath "/usr/local/bin/"
LogTraces true
Interactive false
Import "collectd_rabbitmq_monitoring"
<Module collectd_rabbitmq_monitoring>
interval {{rabbitmq_controller_collectd_interval}}
host "{{inventory_hostname}}.internalapi.localdomain"
port 15672
username {{controller0_rabbitmq_username.stdout}}
password {{controller0_rabbitmq_password.stdout}}
message_count {% for a_queue in controller_monitored_queues %}"{{a_queue}}" {% endfor %}
</Module>
</Plugin>
{% else %}
# Rabbitmq plugin installed and enabled on {{groups['Controller'][0]}}
{% endif %}
{% endif %}
{%if swift_stat_controller_collectd_plugin %}
{%if inventory_hostname == groups['Controller'][0] %}
<Plugin python>
ModulePath "/usr/local/bin/"
LogTraces true
Interactive false
Import "collectd_swift_stat"
<Module collectd_swift_stat>
Interval {{swift_stat_controller_collectd_interval}}
Prefix "gnocchi"
AuthURL "{{controller0_gnocchi_swift_authurl.stdout}}"
AuthVersion "{{controller0_gnocchi_swift_authversion.stdout}}"
User "{{controller0_gnocchi_swift_user.stdout}}"
Password "{{controller0_gnocchi_swift_auth_key.stdout}}"
Project "service"
</Module>
</Plugin>
{% else %}
# swift_stat plugin installed and enabled on {{groups['Controller'][0]}}
{% endif %}
{% endif %}
<Plugin swap>
ReportBytes true
ValuesPercentage true
</Plugin>
# ping plugin
{% if ping_plugin %}
{% if groups['Controller'] | length > 1 %}
<Plugin "ping">
{% if inventory_hostname == groups['Controller'][0] %}
Host "{{groups['Controller'][1]}}"
Host "{{groups['Controller'][2]}}"
{% elif inventory_hostname == groups['Controller'][1] %}
Host "{{groups['Controller'][0]}}"
Host "{{groups['Controller'][2]}}"
{% elif inventory_hostname == groups['Controller'][2] %}
Host "{{groups['Controller'][0]}}"
Host "{{groups['Controller'][1]}}"
{% endif %}
Interval {{ping_interval}}
</Plugin>
{% endif %}
{% endif %}
# Tail plugin configuration
<Plugin "tail">
{%if inventory_hostname == groups['Controller'][0] or inventory_hostname == groups['Controller'][1] or inventory_hostname == groups['Controller'][2] %}
<File "/var/log/containers/openvswitch/ovsdb-server-nb.log">
Instance "ovnnbdb"
<Match>
Regex "Unreasonably long ([0-9]*)ms poll interval"
DSType "GaugeLast"
Type "count"
Instance "poll"
</Match>
</File>
<File "/var/log/containers/openvswitch/ovsdb-server-sb.log">
Instance "ovnsbdb"
<Match>
Regex "Unreasonably long ([0-9]*)ms poll interval"
DSType "GaugeLast"
Type "count"
Instance "poll"
</Match>
</File>
<File "/var/log/containers/openvswitch/ovn-northd.log">
Instance "ovnnorthd"
<Match>
Regex "Unreasonably long ([0-9]*)ms poll interval"
DSType "GaugeLast"
Type "count"
Instance "poll"
</Match>
</File>
<File "/var/log/containers/openvswitch/ovn-controller.log">
Instance "ovncontroller"
<Match>
Regex "Unreasonably long ([0-9]*)ms poll interval"
DSType "GaugeLast"
Type "count"
Instance "poll"
</Match>
</File>
{% endif %}
{%if inventory_hostname == groups['Controller'][0] or inventory_hostname == groups['Controller'][1] or inventory_hostname == groups['Controller'][2] %}
<File "/var/log/containers/httpd/nova-api/nova_api_wsgi_access.log">
Instance "nova_resources"
<Match>
Regex "POST /v2.1"
DSType "CounterInc"
Type "counter"
Instance "post"
</Match>
<Match>
Regex "PUT /v2.1"
DSType "CounterInc"
Type "counter"
Instance "put"
</Match>
<Match>
Regex "GET /v2.1"
DSType "CounterInc"
Type "counter"
Instance "get"
</Match>
<Match>
Regex "DELETE /v2.1"
DSType "CounterInc"
Type "counter"
Instance "delete"
</Match>
</File>
<File "/var/log/containers/neutron/server.log">
Instance "neutron_resources"
<Match>
Regex "POST /v2.0"
DSType "CounterInc"
Type "counter"
Instance "post"
</Match>
<Match>
Regex "PUT /v2.0"
DSType "CounterInc"
Type "counter"
Instance "put"
</Match>
<Match>
Regex "GET /v2.0"
DSType "CounterInc"
Type "counter"
Instance "get"
</Match>
<Match>
Regex "DELETE /v2.0"
DSType "CounterInc"
Type "counter"
Instance "delete"
</Match>
</File>
<File "/var/log/containers/neutron/server.log">
Instance "neutron_avg_response_time"
<Match>
Regex "POST /v2.0.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "post"
</Match>
<Match>
Regex "PUT /v2.0.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "put"
</Match>
<Match>
Regex "GET /v2.0.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "get"
</Match>
<Match>
Regex "DELETE /v2.0.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "delete"
</Match>
{% if osp_individual_resources_response_time %}
<Match>
Regex "POST /v2.0/networks.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "post_networks"
</Match>
<Match>
Regex "PUT /v2.0/networks.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "put_networks"
</Match>
<Match>
Regex "GET /v2.0/networks.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "get_networks"
</Match>
<Match>
Regex "DELETE /v2.0/networks.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "delete_networks"
</Match>
<Match>
Regex "POST /v2.0/routers.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "post_routers"
</Match>
<Match>
Regex "PUT /v2.0/routers.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "put_routers"
</Match>
<Match>
Regex "GET /v2.0/routers.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "get_routers"
</Match>
<Match>
Regex "DELETE /v2.0/routers.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "delete_routers"
</Match>
<Match>
Regex "POST /v2.0/subnets.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "post_subnets"
</Match>
<Match>
Regex "PUT /v2.0/subnets.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "put_subnets"
</Match>
<Match>
Regex "GET /v2.0/subnets.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "get_subnets"
</Match>
<Match>
Regex "DELETE /v2.0/subnets.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "delete_subnets"
</Match>
<Match>
Regex "POST /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "post_ports"
</Match>
<Match>
Regex "PUT /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "put_ports"
</Match>
<Match>
Regex "GET /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "get_ports"
</Match>
<Match>
Regex "DELETE /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "delete_ports"
</Match>
<Match>
Regex "POST /v2.0/trunks.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "post_trunks"
</Match>
<Match>
Regex "PUT /v2.0/trunks.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "put_trunks"
</Match>
<Match>
Regex "GET /v2.0/trunks.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "get_trunks"
</Match>
<Match>
Regex "DELETE /v2.0/trunks.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "delete_trunks"
</Match>
{% endif %}
</File>
<File "/var/log/containers/neutron/server.log">
Instance "neutron_min_response_time"
<Match>
Regex "POST /v2.0.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "post"
</Match>
<Match>
Regex "PUT /v2.0.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "put"
</Match>
<Match>
Regex "GET /v2.0.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "get"
</Match>
<Match>
Regex "DELETE /v2.0.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "delete"
</Match>
{% if osp_individual_resources_response_time %}
<Match>
Regex "POST /v2.0/networks.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "post_networks"
</Match>
<Match>
Regex "PUT /v2.0/networks.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "put_networks"
</Match>
<Match>
Regex "GET /v2.0/networks.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "get_networks"
</Match>
<Match>
Regex "DELETE /v2.0/networks.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "delete_networks"
</Match>
<Match>
Regex "POST /v2.0/routers.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "post_routers"
</Match>
<Match>
Regex "PUT /v2.0/routers.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "put_routers"
</Match>
<Match>
Regex "GET /v2.0/routers.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "get_routers"
</Match>
<Match>
Regex "DELETE /v2.0/routers.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "delete_routers"
</Match>
<Match>
Regex "POST /v2.0/subnets.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "post_subnets"
</Match>
<Match>
Regex "PUT /v2.0/subnets.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "put_subnets"
</Match>
<Match>
Regex "GET /v2.0/subnets.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "get_subnets"
</Match>
<Match>
Regex "DELETE /v2.0/subnets.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "delete_subnets"
</Match>
<Match>
Regex "POST /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "post_ports"
</Match>
<Match>
Regex "PUT /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "put_ports"
</Match>
<Match>
Regex "GET /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "get_ports"
</Match>
<Match>
Regex "DELETE /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "delete_ports"
</Match>
<Match>
Regex "POST /v2.0/trunks.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "post_trunks"
</Match>
<Match>
Regex "PUT /v2.0/trunks.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "put_trunks"
</Match>
<Match>
Regex "GET /v2.0/trunks.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "get_trunks"
</Match>
<Match>
Regex "DELETE /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "delete_trunks"
</Match>
{% endif %}
</File>
<File "/var/log/containers/neutron/server.log">
Instance "neutron_max_response_time"
<Match>
Regex "POST /v2.0.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "post"
</Match>
<Match>
Regex "PUT /v2.0.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "put"
</Match>
<Match>
Regex "GET /v2.0.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "get"
</Match>
<Match>
Regex "DELETE /v2.0.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "delete"
</Match>
{% if osp_individual_resources_response_time %}
<Match>
Regex "POST /v2.0/networks.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "post_networks"
</Match>
<Match>
Regex "PUT /v2.0/networks.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "put_networks"
</Match>
<Match>
Regex "GET /v2.0/networks.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "get_networks"
</Match>
<Match>
Regex "DELETE /v2.0/networks.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "delete_networks"
</Match>
<Match>
Regex "POST /v2.0/routers.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "post_routers"
</Match>
<Match>
Regex "PUT /v2.0/routers.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "put_routers"
</Match>
<Match>
Regex "GET /v2.0/routers.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "get_routers"
</Match>
<Match>
Regex "DELETE /v2.0/routers.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "delete_routers"
</Match>
<Match>
Regex "POST /v2.0/subnets.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "post_subnets"
</Match>
<Match>
Regex "PUT /v2.0/subnets.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "put_subnets"
</Match>
<Match>
Regex "GET /v2.0/subnets.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "get_subnets"
</Match>
<Match>
Regex "DELETE /v2.0/subnets.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "delete_subnets"
</Match>
<Match>
Regex "POST /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "post_ports"
</Match>
<Match>
Regex "PUT /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "put_ports"
</Match>
<Match>
Regex "GET /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "get_ports"
</Match>
<Match>
Regex "DELETE /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "delete_ports"
</Match>
<Match>
Regex "POST /v2.0/trunks.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "post_trunks"
</Match>
<Match>
Regex "PUT /v2.0/trunks.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "put_trunks"
</Match>
<Match>
Regex "GET /v2.0/trunks.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "get_trunks"
</Match>
<Match>
Regex "DELETE /v2.0/ports.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "delete_trunks"
</Match>
{% endif %}
</File>
<File "/var/log/containers/nova/nova-api.log">
Instance "nova_avg_response_time"
<Match>
Regex "POST /v2.1.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "post"
</Match>
<Match>
Regex "PUT /v2.1.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "put"
</Match>
<Match>
Regex "GET /v2.1.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "get"
</Match>
<Match>
Regex "DELETE /v2.1.*time: ([0-9.]+)"
DSType "GaugeAverage"
Type "response_time"
Instance "delete"
</Match>
</File>
<File "/var/log/containers/nova/nova-api.log">
Instance "nova_min_response_time"
<Match>
Regex "POST /v2.1.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "post"
</Match>
<Match>
Regex "PUT /v2.1.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "put"
</Match>
<Match>
Regex "GET /v2.1.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "get"
</Match>
<Match>
Regex "DELETE /v2.1.*time: ([0-9.]+)"
DSType "GaugeMin"
Type "response_time"
Instance "delete"
</Match>
</File>
<File "/var/log/containers/nova/nova-api.log">
Instance "nova_max_response_time"
<Match>
Regex "POST /v2.1.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "post"
</Match>
<Match>
Regex "PUT /v2.1.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "put"
</Match>
<Match>
Regex "GET /v2.1.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "get"
</Match>
<Match>
Regex "DELETE /v2.1.*time: ([0-9.]+)"
DSType "GaugeMax"
Type "response_time"
Instance "delete"
</Match>
</File>
{% endif %}
# Tail httpd request time
{%if apache_controller_collectd_request_time %}
{% if osp_version is version ('12.0.0', '>=') and osp_version is version ('14.0.0', '<') %}
<File "/var/log/containers/httpd/gnocchi-api/gnocchi_wsgi_access.log">
{% else %}
<File "/var/log/httpd/gnocchi_wsgi_access.log">
{% endif %}
Instance "gnocchi-api"
# Gnocchi API Post
<Match>
Regex "RT:([0-9]+).*POST"
DSType "CounterInc"
Type "counter"
Instance "post"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
DSType "GaugeMax"
Type "latency"
Instance "post-max"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
<DSType "Distribution">
Percentile 99
Bucket 0 100
</DSType>
Type "latency"
Instance "post"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
DSType "GaugeAverage"
Type "latency"
Instance "post-avg"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
DSType "GaugeMin"
Type "latency"
Instance "post-min"
</Match>
# Gnocchi API Patch
<Match>
Regex "RT:([0-9]+).*PATCH"
DSType "CounterInc"
Type "counter"
Instance "patch"
</Match>
<Match>
Regex "RT:([0-9]+).*PATCH"
DSType "GaugeMax"
Type "latency"
Instance "patch-max"
</Match>
<Match>
Regex "RT:([0-9]+).*PATCH"
<DSType "Distribution">
Percentile 99
Bucket 0 100
</DSType>
Type "latency"
Instance "patch"
</Match>
<Match>
Regex "RT:([0-9]+).*PATCH"
DSType "GaugeAverage"
Type "latency"
Instance "patch-avg"
</Match>
<Match>
Regex "RT:([0-9]+).*PATCH"
DSType "GaugeMin"
Type "latency"
Instance "patch-min"
</Match>
# Gnocchi API Get
<Match>
Regex "RT:([0-9]+).*GET"
DSType "CounterInc"
Type "counter"
Instance "get"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
DSType "GaugeMax"
Type "latency"
Instance "get-max"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
<DSType "Distribution">
Percentile 99
Bucket 0 100
</DSType>
Type "latency"
Instance "get"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
DSType "GaugeAverage"
Type "latency"
Instance "get-avg"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
DSType "GaugeMin"
Type "latency"
Instance "get-min"
</Match>
</File>
{% if osp_version | version_compare('12.0.0', '>=') and osp_version | version_compare('14.0.0', '<') %}
<File "/var/log/containers/httpd/keystone/keystone_wsgi_admin_access.log">
{% else %}
<File "/var/log/httpd/keystone_wsgi_admin_access.log">
{% endif %}
Instance "keystone-admin-api"
# Keystone Admin Post
<Match>
Regex "RT:([0-9]+).*POST"
DSType "CounterInc"
Type "counter"
Instance "post"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
DSType "GaugeMax"
Type "latency"
Instance "post-max"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
<DSType "Distribution">
Percentile 99
Bucket 0 100
</DSType>
Type "latency"
Instance "post"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
DSType "GaugeAverage"
Type "latency"
Instance "post-avg"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
DSType "GaugeMin"
Type "latency"
Instance "post-min"
</Match>
# Keystone Admin Get
<Match>
Regex "RT:([0-9]+).*GET"
DSType "CounterInc"
Type "counter"
Instance "get"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
DSType "GaugeMax"
Type "latency"
Instance "get-max"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
<DSType "Distribution">
Percentile 99
Bucket 0 100
</DSType>
Type "latency"
Instance "get"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
DSType "GaugeAverage"
Type "latency"
Instance "get-avg"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
DSType "GaugeMin"
Type "latency"
Instance "get-min"
</Match>
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/httpd/keystone/keystone_wsgi_main_access.log">
{% else %}
<File "/var/log/httpd/keystone_wsgi_main_access.log">
{% endif %}
Instance "keystone-main-api"
# Keystone Main Post
<Match>
Regex "RT:([0-9]+).*POST"
DSType "CounterInc"
Type "counter"
Instance "post"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
DSType "GaugeMax"
Type "latency"
Instance "post-max"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
<DSType "Distribution">
Percentile 99
Bucket 0 100
</DSType>
Type "latency"
Instance "post"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
DSType "GaugeAverage"
Type "latency"
Instance "post-avg"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
DSType "GaugeMin"
Type "latency"
Instance "post-min"
</Match>
# Keystone Main Get
<Match>
Regex "RT:([0-9]+).*GET"
DSType "CounterInc"
Type "counter"
Instance "get"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
DSType "GaugeMax"
Type "latency"
Instance "get-max"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
<DSType "Distribution">
Percentile 99
Bucket 0 100
</DSType>
Type "latency"
Instance "get"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
DSType "GaugeAverage"
Type "latency"
Instance "get-avg"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
DSType "GaugeMin"
Type "latency"
Instance "get-min"
</Match>
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/httpd/nova-placement/placement_wsgi_access.log">
{% else %}
<File "/var/log/httpd/placement_wsgi_access.log">
{% endif %}
Instance "nova-placement-api"
# Nova Placement Post
<Match>
Regex "RT:([0-9]+).*POST"
DSType "CounterInc"
Type "counter"
Instance "post"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
DSType "GaugeMax"
Type "latency"
Instance "post-max"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
<DSType "Distribution">
Percentile 99
Bucket 0 100
</DSType>
Type "latency"
Instance "post"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
DSType "GaugeAverage"
Type "latency"
Instance "post-avg"
</Match>
<Match>
Regex "RT:([0-9]+).*POST"
DSType "GaugeMin"
Type "latency"
Instance "post-min"
</Match>
# Nova Placement Put
<Match>
Regex "RT:([0-9]+).*PUT"
DSType "CounterInc"
Type "counter"
Instance "put"
</Match>
<Match>
Regex "RT:([0-9]+).*PUT"
DSType "GaugeMax"
Type "latency"
Instance "put-max"
</Match>
<Match>
Regex "RT:([0-9]+).*PUT"
<DSType "Distribution">
Percentile 99
Bucket 0 100
</DSType>
Type "latency"
Instance "put"
</Match>
<Match>
Regex "RT:([0-9]+).*PUT"
DSType "GaugeAverage"
Type "latency"
Instance "put-avg"
</Match>
<Match>
Regex "RT:([0-9]+).*PUT"
DSType "GaugeMin"
Type "latency"
Instance "put-min"
</Match>
# Nova Placement Get
<Match>
Regex "RT:([0-9]+).*GET"
DSType "CounterInc"
Type "counter"
Instance "get"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
DSType "GaugeMax"
Type "latency"
Instance "get-max"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
<DSType "Distribution">
Percentile 99
Bucket 0 100
</DSType>
Type "latency"
Instance "get"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
DSType "GaugeAverage"
Type "latency"
Instance "get-avg"
</Match>
<Match>
Regex "RT:([0-9]+).*GET"
DSType "GaugeMin"
Type "latency"
Instance "get-min"
</Match>
</File>
{% endif %}
# End Tail httpd request time
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/aodh/aodh-evaluator.log">
{% else %}
<File "/var/log/aodh/evaluator.log">
{% endif %}
Instance "aodh-evaluator"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/aodh/aodh-listener.log">
{% else %}
<File "/var/log/aodh/listener.log">
{% endif %}
Instance "aodh-listener"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/aodh/aodh-notifier.log">
{% else %}
<File "/var/log/aodh/notifier.log">
{% endif %}
Instance "aodh-notifier"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/httpd/aodh-api/aodh_wsgi_error.log">
{% else %}
<File "/var/log/httpd/aodh_wsgi_error.log">
{% endif %}
Instance "aodh-wsgi-api"
<Match>
Regex ":error"
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/ceilometer/agent-notification.log">
{% else %}
<File "/var/log/ceilometer/agent-notification.log">
{% endif %}
Instance "ceilometer-agent-notification"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode %}
<File "/var/log/containers/ceilometer/central.log">
{% else %}
<File "/var/log/ceilometer/central.log">
{% endif %}
Instance "ceilometer-central"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
# No need to tail for ceilometer-collector/ceilometer_wsgi in Queens/Pike
{% else %}
<File "/var/log/ceilometer/collector.log">
Instance "ceilometer-collector"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
<File "/var/log/httpd/ceilometer_wsgi_error.log">
Instance "ceilometer-wsgi-api"
<Match>
Regex ":error"
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
</File>
{% endif %}
<File "/var/log/ceph/ceph.log">
Instance "ceph"
<Match>
Regex "\\[ERR\\]"
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex "\\[WRN\\]"
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex "\\[INF\\]"
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if ('Queens' in osp_version['content'] | b64decode) %}
<File "/var/log/containers/cinder/cinder-api.log">
{%elif 'Pike' in osp_version['content'] | b64decode or 'Ocata' in osp_version['content'] | b64decode %}
<File "/var/log/cinder/cinder-api.log">
{% else %}
<File "/var/log/cinder/api.log">
{% endif %}
Instance "cinder-api"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if ('Queens' in osp_version['content'] | b64decode) %}
<File "/var/log/containers/cinder/cinder-scheduler.log">
{% else %}
<File "/var/log/cinder/scheduler.log">
{% endif %}
Instance "cinder-scheduler"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if ('Queens' in osp_version['content'] | b64decode) %}
<File "/var/log/containers/cinder/cinder-volume.log">
{% else %}
<File "/var/log/cinder/volume.log">
{% endif %}
Instance "cinder-volume"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/glance/api.log">
{% else %}
<File "/var/log/glance/api.log">
{% endif %}
Instance "glance-api"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
# No Glance registry in Queens/Pike
{% else %}
<File "/var/log/glance/registry.log">
Instance "glance-registry"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{% endif %}
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/gnocchi/app.log">
{% else %}
<File "/var/log/gnocchi/app.log">
{% endif %}
Instance "gnocchi-app"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/gnocchi/gnocchi-metricd.log">
{% else %}
<File "/var/log/gnocchi/metricd.log">
{% endif %}
Instance "gnocchi-metricd"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/gnocchi/gnocchi-statsd.log">
{% else %}
<File "/var/log/gnocchi/statsd.log">
{% endif %}
Instance "gnocchi-statsd"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/httpd/gnocchi-api/gnocchi_wsgi_error.log">
{% else %}
<File "/var/log/httpd/gnocchi_wsgi_error.log">
{% endif %}
Instance "gnocchi-wsgi-api"
<Match>
Regex ":error"
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/heat/heat_api_cfn.log">
{% else %}
<File "/var/log/heat/heat-api-cfn.log">
{% endif %}
Instance "heat-api-cfn"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/heat/heat_api_cfn.log">
{% else %}
<File "/var/log/heat/heat-api-cloudwatch.log">
{% endif %}
Instance "heat-api-cloudwatch"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/heat/heat_api.log">
{% else %}
<File "/var/log/heat/heat-api.log">
{% endif %}
Instance "heat-api"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/heat/heat-engine.log">
{% else %}
<File "/var/log/heat/heat-engine.log">
{% endif %}
Instance "heat-engine"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/keystone/keystone.log">
{% else %}
<File "/var/log/keystone/keystone.log">
{% endif %}
Instance "keystone"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/httpd/keystone/keystone_wsgi_admin_error.log">
{% else %}
<File "/var/log/httpd/keystone_wsgi_admin_error.log">
{% endif %}
Instance "keystone-wsgi-admin"
<Match>
Regex ":error"
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/httpd/keystone/keystone_wsgi_main_error.log">
{% else %}
<File "/var/log/httpd/keystone_wsgi_main_error.log">
{% endif %}
Instance "keystone-wsgi-main"
<Match>
Regex ":error"
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/pacemaker/bundles/galera-bundle-0/mysqld.log">
{% else %}
<File "/var/log/mysqld.log">
{% endif %}
Instance "mysqld"
<Match>
Regex "\\[ERROR\\]"
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex "\\[Warning\\]"
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex "\\[Note\\]"
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode %}
<File "/var/log/containers/neutron/dhcp-agent.log">
{% else %}
<File "/var/log/neutron/dhcp-agent.log">
{% endif %}
Instance "neutron-dhcp-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode %}
<File "/var/log/containers/neutron/l3-agent.log">
{% else %}
<File "/var/log/neutron/l3-agent.log">
{% endif %}
Instance "neutron-l3-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode %}
<File "/var/log/containers/neutron/metadata-agent.log">
{% else %}
<File "/var/log/neutron/metadata-agent.log">
{% endif %}
Instance "neutron-metadata-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode %}
<File "/var/log/containers/neutron/openvswitch-agent.log">
{% else %}
<File "/var/log/neutron/openvswitch-agent.log">
{% endif %}
Instance "neutron-openvswitch-agent"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode %}
<File "/var/log/containers/neutron/server.log">
{% else %}
<File "/var/log/neutron/server.log">
{% endif %}
Instance "neutron-server"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/nova/nova-api.log">
{% else %}
<File "/var/log/nova/nova-api.log">
{% endif %}
Instance "nova-api"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/nova/nova-api-metadata.log">
Instance "nova-api-metadata"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{% endif %}
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/nova/nova-conductor.log">
{% else %}
<File "/var/log/nova/nova-conductor.log">
{% endif %}
Instance "nova-conductor"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/nova/nova-consoleauth.log">
{% else %}
<File "/var/log/nova/nova-consoleauth.log">
{% endif %}
Instance "nova-consoleauth"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/nova/nova-novncproxy.log">
{% else %}
<File "/var/log/nova/nova-novncproxy.log">
{% endif %}
Instance "nova-novncproxy"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/nova/nova-placement-api.log">
{% else %}
<File "/var/log/nova/nova-placement-api.log">
{% endif %}
Instance "nova-placement-api"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/nova/nova-scheduler.log">
{% else %}
<File "/var/log/nova/nova-scheduler.log">
{% endif %}
Instance "nova-scheduler"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/httpd/nova-placement/placement_wsgi_error.log">
{% else %}
<File "/var/log/httpd/placement_wsgi_error.log">
{% endif %}
Instance "nova-placement-wsgi-api"
<Match>
Regex ":error"
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/panko/app.log">
{% else %}
<File "/var/log/panko/app.log">
{% endif %}
Instance "panko"
<Match>
Regex " ERROR "
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex " WARNING "
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex " INFO "
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
{%if 'Pike' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/containers/httpd/panko-api/panko_wsgi_error.log">
{% else %}
<File "/var/log/httpd/panko_wsgi_error.log">
{% endif %}
Instance "panko-wsgi-api"
<Match>
Regex ":error"
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
</File>
{%if 'Queens' in osp_version['content'] | b64decode or 'Pike' in osp_version['content'] | b64decode %}
<File "/var/log/pacemaker/bundles/rabbitmq-bundle-0/rabbitmq/rabbit\@{{ansible_hostname}}.log">
{% else %}
<File "/var/log/rabbitmq/rabbit\@{{ansible_hostname}}.log">
{% endif %}
Instance "rabbitmq"
<Match>
Regex "ERROR REPORT"
DSType "CounterInc"
Type "counter"
Instance "error"
</Match>
{%if regex_warn %}
<Match>
Regex "WARNING REPORT"
DSType "CounterInc"
Type "counter"
Instance "warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex "INFO REPORT"
DSType "CounterInc"
Type "counter"
Instance "info"
</Match>
{% endif %}
</File>
# Swift logs all into the same file
<File "/var/log/swift/swift.log">
Instance "swift"
<Match>
Regex "account-server: ERROR "
DSType "CounterInc"
Type "counter"
Instance "account-server-error"
</Match>
<Match>
Regex "container-server: ERROR "
DSType "CounterInc"
Type "counter"
Instance "container-server-error"
</Match>
<Match>
Regex "object-server: ERROR "
DSType "CounterInc"
Type "counter"
Instance "object-server-error"
</Match>
{%if regex_warn %}
<Match>
Regex "account-server: WARNING "
DSType "CounterInc"
Type "counter"
Instance "account-server-warn"
</Match>
<Match>
Regex "container-server: WARNING "
DSType "CounterInc"
Type "counter"
Instance "container-server-warn"
</Match>
<Match>
Regex "object-server: WARNING "
DSType "CounterInc"
Type "counter"
Instance "object-server-warn"
</Match>
{% endif %}
{%if regex_info %}
<Match>
Regex "account-server: INFO "
DSType "CounterInc"
Type "counter"
Instance "account-server-info"
</Match>
<Match>
Regex "container-server: INFO "
DSType "CounterInc"
Type "counter"
Instance "container-server-info"
</Match>
<Match>
Regex "object-server: INFO "
DSType "CounterInc"
Type "counter"
Instance "object-server-info"
</Match>
{% endif %}
</File>
</Plugin>
{% if ovsagent_controller_monitor %}
<Plugin python>
ModulePath "/usr/local/bin/"
LogTraces true
Interactive false
Import "collectd_ovsagent"
<Module collectd_ovsagent>
interval 10
prefix ovsagent
interfaces {% for int in controller_monitored_ints %} {{int}} {% endfor %}
namespaces {% for ns in controller_monitored_ns %} {{ns}} {% endfor %}
</Module>
</Plugin>
{% endif %}
# Include other collectd configuration files
Include "/etc/collectd.d"