browbeat/ansible/install/roles/collectd-rhoso/templates/controlplane.collectd.conf.j2
rajeshP524 37c46dcdc9 Add RabbitMQ monitoring for RHOSO controlplane
Change-Id: I6085017463567589e990c85243c3aca2efa19cae
2024-09-17 14:16:38 +05:30

1223 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 "9104"
</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 %}
# 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 %}