browbeat/ansible/install/roles/collectd-rhoso/templates/controlplane.collectd.conf.j2
rajeshP524 58f4d9316b Update metrics.yaml and collectd template for RHOSO
1) New prometheus queries has been added to metrics.yaml
2) Prometheus port is updated in the template, as its conflicting
   with some processes port on worker nodes
3) Processes plugin is commented out in the collectd template.

Change-Id: I1b489fccd1cde7b2af1d4ec3f08cf7c6c0274eda
2024-10-01 17:23:57 +05:30

1224 lines
38 KiB
Django/Jinja

# Interval default is 10s
Interval {{collectd_interval}}
# Loaded Plugins:
LoadPlugin "logfile"
<Plugin "logfile">
File "/var/log/collectd.log"
LogLevel "info"
PrintSeverity true
Timestamp true
</Plugin>
LoadPlugin write_prometheus
{% if keystone_overcloud_collectd_plugin or osp_resources_collectd_plugin %}
{% if db_conf %}
LoadPlugin dbi
{% endif %}
{% endif %}
LoadPlugin exec
LoadPlugin match_regex
LoadPlugin mysql
# LoadPlugin processes
<LoadPlugin python>
Globals true
</LoadPlugin>
LoadPlugin tail
LoadPlugin unixsock
# Open unix domain socket for collectdctl
<Plugin unixsock>
SocketFile "/var/run/collectd-unixsock"
SocketGroup "collectd"
SocketPerms "0770"
DeleteSocket true
</Plugin>
<Plugin write_prometheus>
Port "8888"
</Plugin>
{% if db_conf %}
{% 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 %}
{%if ovn_raft_monitoring %}
<Plugin python>
ModulePath "/usr/local/bin/"
Import "collectd_ovn_raft_monitoring"
<Module collectd_ovn_raft_monitoring>
Interval {{ovn_raft_controller_collectd_interval}}
</Module>
</Plugin>
{% endif %}
{% if osp_resources_collectd_plugin %}
<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_cell1">
Driver "mysql"
DriverOption "host" "{{ mysql_cell1_host_ip }}"
DriverOption "port" "{{ mysql_cell1_port }}"
DriverOption "dbname" "nova_cell1"
DriverOption "username" "root"
DriverOption "password" "{{mysql_root_password}}"
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 "neutron">
Driver "mysql"
DriverOption "host" "{{ mysql_host_ip }}"
DriverOption "port" "{{ mysql_port }}"
DriverOption "dbname" "neutron"
DriverOption "username" "root"
DriverOption "password" "{{mysql_root_password}}"
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" "{{ mysql_host_ip }}"
DriverOption "port" "{{ mysql_port }}"
DriverOption "dbname" "octavia"
DriverOption "username" "root"
DriverOption "password" "{{mysql_root_password}}"
Query load_balancer_count
Query amphora_count
Query pool_count
Query member_count
</Database>
</Plugin>
{% endif %}
{% if keystone_overcloud_collectd_plugin %}
<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" "{{ mysql_host_ip }}"
DriverOption "port" "{{ mysql_port }}"
DriverOption "dbname" "keystone"
DriverOption "username" "root"
DriverOption "password" "{{mysql_root_password}}"
Query token_count
</Database>
</Plugin>
{% endif %}
<Plugin mysql>
<Database "overcloud">
Alias "{{ db_config_node_hostname.stdout }}"
Host "{{ mysql_host_ip }}"
User "root"
Port "{{ mysql_port }}"
Password "{{mysql_root_password}}"
InnodbStats true
</Database>
</Plugin>
{%if rabbitmq_controller_collectd_plugin %}
<Plugin python>
ModulePath "/usr/local/bin/"
LogTraces true
Interactive false
Import "collectd_rabbitmq_monitoring"
<Module collectd_rabbitmq_monitoring>
interval {{rabbitmq_controller_collectd_interval}}
host "{{ rabbitmq_svc_ip }}"
port "15671"
username "{{ rabbitmq_username }}"
password "{{ rabbitmq_password }}"
message_count {% for a_queue in rhoso_ctlplane_monitored_queues %}"{{a_queue}}" {% endfor %}
</Module>
</Plugin>
{% endif %}
{% endif %}
# db_conf end
{%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 %}
# Commenting processes plugin as processes naming has changed in RHOSO
# # 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>
# # Ansible
# ProcessMatch "ansible-playbook" "ansible-playbook"
# ProcessMatch "ansible-runner" "ansible-runner"
#
# # 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
# </Plugin>
{% if container_logs is not none and container_logs | length > 0 %}
<Plugin "tail">
{% for instance, file in container_logs.items() if instance not in ["ovn-northd"] %}
<File "{{ file }}">
Instance "{{ instance }}"
<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>
{% endfor %}
{% if 'ovsdb-server-nb' in container_logs %}
<File "{{ container_logs['ovsdb-server-nb'] }}">
Instance "ovnnbdb"
<Match>
Regex "Unreasonably long ([0-9]*)ms poll interval"
DSType "GaugeLast"
Type "count"
Instance "poll"
</Match>
</File>
{% endif %}
{% if 'ovsdb-server-sb' in container_logs %}
<File "{{ container_logs['ovsdb-server-sb'] }}">
Instance "ovnsbdb"
<Match>
Regex "Unreasonably long ([0-9]*)ms poll interval"
DSType "GaugeLast"
Type "count"
Instance "poll"
</Match>
</File>
{% endif %}
{% if 'ovn-northd' in container_logs %}
<File "{{ container_logs['ovn-northd'] }}">
Instance "ovnnorthd"
<Match>
Regex "Unreasonably long ([0-9]*)ms poll interval"
DSType "GaugeLast"
Type "count"
Instance "poll"
</Match>
</File>
{% endif %}
{% if 'ovn-controller' in container_logs %}
<File "{{ container_logs['ovn-controller'] }}">
Instance "ovncontroller"
<Match>
Regex "Unreasonably long ([0-9]*)ms poll interval"
DSType "GaugeLast"
Type "count"
Instance "poll"
</Match>
</File>
{% endif %}
{% if 'neutron-server' in container_logs %}
<File "{{ container_logs['neutron-server'] }}">
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 "{{ container_logs['neutron-server'] }}">
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 "{{ container_logs['neutron-server'] }}">
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 "{{ container_logs['neutron-server'] }}">
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>
{% endif %}
{% if 'nova-api' in container_logs %}
<File "{{ container_logs['nova-api'] }}">
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 "{{ container_logs['nova-api'] }}">
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 "{{ container_logs['nova-api'] }}">
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 %}
</Plugin>
{% endif %}