
This patch adds the following changes. 1. A collectd tail plugin has been added to record average, minimum and maximum response times of different nova and neutron OSP resources through the controller logs. 2. Grafana panels have been added to visualize the data collected by collectd for OSP resource response times. Change-Id: I69582974fab25287ab68f529153ddbde08d95b66
1494 lines
45 KiB
Django/Jinja
1494 lines
45 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 collectd_prometheus %}
|
|
LoadPlugin network
|
|
{% 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 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 uptime
|
|
{% if ping_plugin %}
|
|
LoadPlugin ping
|
|
{% endif %}
|
|
|
|
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] %}
|
|
|
|
<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_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 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 ovs_flows_monitoring %}
|
|
<Plugin exec>
|
|
Exec stack "/usr/local/bin/ovs_flows.sh"
|
|
</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 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
|
|
|
|
# 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 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 %}
|
|
|
|
|
|
{% if 'rabbitmq-server' in collectd_logs[config_type] | items2dict(key_name='instance',value_name='log_path') %}
|
|
<File "{{ collectd_logs[config_type] | items2dict(key_name='instance',value_name='log_path') | json_query('"rabbitmq-server"') }}">
|
|
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>
|
|
{% endif %}
|
|
|
|
{% for item in collectd_logs[config_type] | rejectattr('instance', 'match', 'rabbitmq-server') | rejectattr('instance', 'match', 'swift')%}
|
|
<File "{{ item.log_path }}">
|
|
Instance "{{ item.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 'swift' in collectd_logs[config_type] | items2dict(key_name='instance',value_name='log_path') %}
|
|
<File "{{ collectd_logs[config_type] | items2dict(key_name='instance',value_name='log_path') | json_query('"swift"') }}">
|
|
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
|
|
</Match>
|
|
<Match>
|
|
Regex "object-server: INFO "
|
|
DSType "CounterInc"
|
|
Type "counter"
|
|
Instance "object-server-info"
|
|
</Match>
|
|
{% endif %}
|
|
</File>
|
|
{% endif %}
|
|
</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"
|