Add new support for Prometheus/Grafana/Collectd

This patch adds the support for using Prometheus with
Grafana and Collectd. Automated the most panels within the
openstack system performance dashboad.

To test it:

$ansible-playbook -i hosts install/grafana-prometheus-dashboards.yml

And make sure add grafana-api-key in the group_vars/all.yml

Co-authored-by: Asma Syed Hameed <asyedham@redhat.com>
Co-authored-by: Sai Sindhur Malleni <smalleni@redhat.com>

Change-Id: Icb9fa058324165c0d304dc1dcf2dd843662307cf
This commit is contained in:
Lucas H. Xu 2019-12-21 22:06:20 +00:00 committed by Sai Sindhur Malleni
parent a4b699c2e6
commit 219a5122fd
39 changed files with 1965 additions and 1 deletions

View File

@ -0,0 +1,16 @@
---
# Builds and Uploads Dashboards for Browbeat analysis of System Performance Metrics
# Templated General Dashboards (Ex. OpenStack General System Performance)
- hosts: localhost
gather_facts: false
vars:
ansible_connection: local
upload_general: true
general_dashboards:
- template_name: openstack
template_node_type: "*"
process_list_name: OpenStack
roles:
- grafana-prometheus-dashboards
environment: "{{proxy_env}}"

View File

@ -160,6 +160,8 @@ collectd_blockstorage: true
collectd_objectstorage: true
collectd_cephstorage: true
collectd_compute: false
collectd_graphite: true
collectd_prometheus: false
########################
# Opt-In Collectd plugins configuration:
@ -319,6 +321,16 @@ regex_info: false
ping_plugin: false
ping_interval: 1
############################################
# Prometheus/Collectd-Exporter Configuration
############################################
prometheus_host:
#Avoid using underscore for prometheus_prefix
prometheus_prefix:
prometheus_port: 25826
#collectd_exporter_port: 9103
########################################
# Carbon/Graphite Configuration
########################################

View File

@ -115,3 +115,31 @@
pip:
requirements: "{{ browbeat_path }}/requirements.txt"
virtualenv: "{{ browbeat_venv }}"
- block:
- name: Uninstall old grafyaml version
pip:
name: grafyaml==0.0.7
virtualenv: "{{ browbeat_venv }}"
state: absent
- name: Install grafyaml version 0.0.8 for Prometheus-Grafana
pip:
name: git+https://opendev.org/opendev/grafyaml.git
virtualenv: "{{ browbeat_venv }}"
- name: Get the python version installed
command: echo "{{ ansible_python_version }}"
register: installed_python_version
- name: Set fact for installed python version
set_fact:
installed_python_version: "{{installed_python_version.stdout[0:3]}}"
- name: Add regex option in grafyaml
lineinfile:
path: "{{ browbeat_path }}/.browbeat-venv/lib/python{{installed_python_version}}/site-packages/grafana_dashboards/schema/template/query.py"
insertafter: "self.validate_refresh"
line: " v.Optional('regex',default=''): v.All(str),"
when: collectd_prometheus

View File

@ -5,7 +5,13 @@
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"
@ -18,7 +24,12 @@ LoadPlugin "logfile"
LoadPlugin write_graphite
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
LoadPlugin df
LoadPlugin disk
LoadPlugin exec
@ -68,6 +79,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -80,6 +92,14 @@ PreCacheChain "PreCache"
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
<Plugin df>
FSType anon_inodefs

View File

@ -5,7 +5,13 @@
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"
@ -21,7 +27,12 @@ LoadPlugin write_graphite
LoadPlugin ceph
{% endif %}
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
LoadPlugin df
LoadPlugin disk
LoadPlugin exec
@ -71,6 +82,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -83,6 +95,15 @@ PreCacheChain "PreCache"
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
{% if ceph_storage_collectd_plugin %}
<Plugin ceph>

View File

@ -5,7 +5,13 @@
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"
@ -18,7 +24,12 @@ LoadPlugin "logfile"
LoadPlugin write_graphite
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
LoadPlugin df
LoadPlugin disk
LoadPlugin exec
@ -68,6 +79,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -80,6 +92,14 @@ PreCacheChain "PreCache"
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
<Plugin df>
FSType anon_inodefs

View File

@ -5,7 +5,13 @@
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"
@ -26,7 +32,12 @@ LoadPlugin ceph
{% endif %}
{% endif %}
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
{% if keystone_overcloud_collectd_plugin %}
{%if inventory_hostname == groups['controller'][0] %}
LoadPlugin dbi
@ -83,6 +94,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -95,6 +107,15 @@ PreCacheChain "PreCache"
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>

View File

@ -5,7 +5,13 @@
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"
@ -18,7 +24,12 @@ LoadPlugin "logfile"
LoadPlugin write_graphite
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
LoadPlugin df
LoadPlugin disk
LoadPlugin exec
@ -66,6 +77,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -78,6 +90,14 @@ PreCacheChain "PreCache"
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
<Plugin df>
FSType anon_inodefs

View File

@ -5,7 +5,13 @@
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"
@ -18,7 +24,12 @@ LoadPlugin "logfile"
LoadPlugin write_graphite
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
LoadPlugin df
LoadPlugin disk
LoadPlugin exec
@ -68,6 +79,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -80,6 +92,14 @@ PreCacheChain "PreCache"
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
<Plugin df>
FSType anon_inodefs

View File

@ -5,7 +5,13 @@
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"
@ -21,7 +27,12 @@ LoadPlugin write_graphite
LoadPlugin apache
{% endif %}
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
{% if keystone_undercloud_collectd_plugin %}
LoadPlugin dbi
{% endif %}
@ -84,6 +95,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -96,6 +108,15 @@ PreCacheChain "PreCache"
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
#Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
{% if apache_undercloud_collectd_plugin %}
<Plugin apache>

View File

@ -5,8 +5,17 @@
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 %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
LoadPlugin write_graphite
LoadPlugin cpu
LoadPlugin df
@ -56,6 +65,7 @@ LoadPlugin disk
</Plugin>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -68,6 +78,13 @@ LoadPlugin disk
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
# Include other collectd configuration files
Include "/etc/collectd.d"

View File

@ -5,7 +5,13 @@
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"
@ -17,8 +23,13 @@ LoadPlugin "logfile"
</Plugin>
LoadPlugin write_graphite
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
LoadPlugin df
LoadPlugin disk
LoadPlugin exec
@ -68,6 +79,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -80,6 +92,14 @@ PreCacheChain "PreCache"
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
<Plugin df>
FSType anon_inodefs

View File

@ -5,7 +5,13 @@
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"
@ -21,7 +27,12 @@ LoadPlugin write_graphite
LoadPlugin ceph
{% endif %}
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
LoadPlugin df
LoadPlugin disk
LoadPlugin exec
@ -71,6 +82,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -83,6 +95,14 @@ PreCacheChain "PreCache"
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
{% if ceph_storage_collectd_plugin %}
<Plugin ceph>

View File

@ -5,7 +5,13 @@
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"
@ -18,8 +24,13 @@ File "/var/log/collectd.log"
LoadPlugin write_graphite
LoadPlugin cpu
LoadPlugin conntrack
LoadPlugin df
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
LoadPlugin disk
LoadPlugin exec
LoadPlugin interface
@ -57,7 +68,9 @@ PreCacheChain "PreCache"
Target "return"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -70,6 +83,15 @@ PreCacheChain "PreCache"
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
<Plugin df>
FSType anon_inodefs

View File

@ -5,7 +5,13 @@
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"
@ -20,13 +26,18 @@ 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 %}
{%if inventory_hostname == groups['controller'][0] %}
LoadPlugin dbi
@ -73,6 +84,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -85,6 +97,15 @@ PreCacheChain "PreCache"
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>

View File

@ -5,10 +5,19 @@
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 %}
LoadPlugin write_graphite
LoadPlugin cpu
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
LoadPlugin df
LoadPlugin interface
LoadPlugin irq
@ -56,6 +65,7 @@ LoadPlugin disk
</Plugin>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -68,6 +78,14 @@ LoadPlugin disk
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
# Include other collectd configuration files
Include "/etc/collectd.d"

View File

@ -5,7 +5,13 @@
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"
@ -18,7 +24,12 @@ LoadPlugin "logfile"
LoadPlugin write_graphite
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
LoadPlugin df
LoadPlugin disk
LoadPlugin exec
@ -66,6 +77,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -78,6 +90,14 @@ PreCacheChain "PreCache"
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
<Plugin df>
FSType anon_inodefs

View File

@ -5,7 +5,13 @@
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"
@ -18,7 +24,12 @@ LoadPlugin "logfile"
LoadPlugin write_graphite
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
LoadPlugin df
LoadPlugin disk
LoadPlugin exec
@ -68,6 +79,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -80,6 +92,14 @@ PreCacheChain "PreCache"
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
<Plugin df>
FSType anon_inodefs

View File

@ -5,7 +5,13 @@
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"
@ -21,7 +27,12 @@ LoadPlugin write_graphite
LoadPlugin apache
{% endif %}
LoadPlugin cpu
{% if not collectd_prometheus %}
LoadPlugin conntrack
{% endif %}
{% if collectd_prometheus %}
LoadPlugin network
{% endif %}
{% if keystone_undercloud_collectd_plugin %}
LoadPlugin dbi
{% endif %}
@ -74,6 +85,7 @@ PreCacheChain "PreCache"
</Chain>
# Graphite Host Configuration
{% if collectd_graphite %}
<Plugin write_graphite>
<Carbon>
Host "{{graphite_host}}"
@ -86,6 +98,15 @@ PreCacheChain "PreCache"
EscapeCharacter "_"
</Carbon>
</Plugin>
{% endif %}
# Prometheus Host Configuration
{% if collectd_prometheus %}
<Plugin network>
Server "{{prometheus_host}}" "{{prometheus_port}}"
</Plugin>
{% endif %}
{% if apache_undercloud_collectd_plugin %}
<Plugin apache>

View File

@ -0,0 +1 @@
This directory stores the descriptions of Grafana dashboards in YAML format and is removed it once uploaded.

View File

@ -0,0 +1,38 @@
---
#
# Generate & Upload Browbeat OpenStack Grafana Dashboards
#
# check that grafana_apikey is entered prior to playbook run
- name: Check Grafana API key
fail:
msg="** Edit grafana_apikey in ../install/group_vars/all.yml before running **"
when: grafana_apikey is none
- name: Check Cloud Name
fail:
msg: "The Cloud name {{dashboard_cloud_name}} is reserved for a service, please use a different one"
when: item == dashboard_cloud_name
with_items: "{{forbidden_cloud_names}}"
# Templated General Performance Dashboards
- name: Generate General Performance Dashboards
template:
src: "{{role_path}}/templates/{{item.template_name}}_general_system_performance.yaml.j2"
dest: "{{role_path}}/files/{{item.process_list_name}}_general_system_performance.yaml"
when: upload_general|bool
with_items: "{{general_dashboards}}"
- name: Upload General Performance Dashboards to Grafana
shell: |
. {{browbeat_venv}}/bin/activate
grafana-dashboard --grafana-url http://{{grafana_host}}:{{grafana_port}} --grafana-apikey {{grafana_apikey}} update {{role_path}}/files/{{item.process_list_name}}_general_system_performance.yaml
when: upload_general|bool
with_items: "{{general_dashboards}}"
- name: Remove leftover yaml file(s) from General Performance Dashboards
file:
path: "{{role_path}}/files/{{item.process_list_name}}_general_system_performance.yaml"
state: absent
when: upload_general|bool
with_items: "{{general_dashboards}}"

View File

@ -0,0 +1,108 @@
#jinja2:lstrip_blocks: True
{% set apache_groups = ['undercloud', 'controller', '*'] %}
{% set cephmon_groups = ['controller', '*'] %}
{% set gnocchi_groups = ['controller', '*'] %}
{% set ironic_groups = ['undercloud'] %}
{% set mariadb_groups = ['undercloud', 'controller', '*'] %}
{% set odl_groups = ['controller', '*'] %}
{% set ovsagent_groups = ['controller', 'compute', '*'] %}
{% set rabbitmq_groups = ['undercloud', 'controller', '*'] %}
{% set swift_stat_groups = ['controller', '*'] %}
---
dashboard:
title: {{item.process_list_name}} General System Performance Browbeat
links:
- title: Openstack General Dashboards
type: dashboards
asDropdown: true
includeVars: true
keepTime: true
icon: cloud
tags:
- OSP
tags:
- OSP
templating:
- name: Cloud
datasource: Prometheus
query: label_values(exported_instance)
regex: /^(.+?)_/g
refresh: 1
type: query
- name: Node
datasource: Prometheus
query: label_values(exported_instance)
regex: /[^_]*_(.+)/
refresh: 1
type: query
- name: Disk
datasource: Prometheus
query: label_values(disk)
refresh: 1
type: query
- name: CPU
datasource: Prometheus
query: label_values(cpu)
refresh: 1
type: query
- name: Interface
datasource: Prometheus
query: label_values(interface)
refresh: 1
type: query
- name: Host
datasource: Prometheus
query: label_values(instance)
refresh: 1
type: query
- name: Numa
datasource: Prometheus
query: label_values(numa)
refresh: 1
type: query
- name: Process
datasource: Prometheus
query: label_values(processes)
refresh: 1
type: query
- name: Tail
datasource: Prometheus
query: label_values(tail)
refresh: 1
type: query
time:
from: now-1h
to: now
rows:
{% include 'partials/description.yaml' %}
{% include 'partials/cpu_all.yaml' %}
{% include 'partials/cpu_cores.yaml' %}
{% include 'partials/memory.yaml' %}
{% include 'partials/disk.yaml' %}
{% include 'partials/df.yaml' %}
{% include 'partials/network.yaml' %}
{% include 'partials/turbostat.yaml' %}
{% include 'partials/numa.yaml' %}
{% include 'partials/irq.yaml' %}
{% include 'partials/load.yaml' %}
{% include 'partials/processes.yaml' %}
{% set per_process_row_title_prefix = 'OSP' %}
{% include 'partials/per_process_rows.yaml.j2' %}
{% if item.template_node_type in mariadb_groups %}
{% include 'partials/mariadb.yaml' %}
{% endif %}
{% include 'partials/tail.yaml' %}

View File

@ -0,0 +1,89 @@
- title: CPU All
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - All CPUs
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- expr: '100 * (sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="idle"}[5m])) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: Idle
refId: A
- expr: '100 * (sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="user"}[5m])) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: User
refId: B
- expr: '100 * (sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="system"}[5m])) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: System
refId: C
- expr: '100 * (sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="interrupt"}[5m])) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: Interrupt
refId: D
- expr: '100 * (sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="softirq"}[5m])) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: Softirq
refId: E
- expr: '100 * (sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="wait"}[5m])) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: Wait
refId: F
- expr: '100 * (sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="nice"}[5m])) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: Nice
refId: G
- expr: '100 * (sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="steal"}[5m])) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: Steal
refId: H
yaxes:
- format: percent
- format: short
- title: $Cloud - $Node - All CPUs Sum
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- expr: '100 * sum(sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="idle"}[5m])) by (cpu) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])) by (cpu))'
legendFormat: Idle
redfId: A
- expr: '100 * sum(sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="interrupt"}[5m])) by (cpu) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])) by (cpu))'
legendFormat: Interrupt
redfId: B
- expr: '100 * sum(sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="system"}[5m])) by (cpu) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])) by (cpu))'
legendFormat: System
redfId: C
- expr: '100 * sum(sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="nice"}[5m])) by (cpu) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])) by (cpu))'
legendFormat: Nice
redfId: D
- expr: '100 * sum(sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="steal"}[5m])) by (cpu) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])) by (cpu))'
legendFormat: Steal
redfId: E
- expr: '100 * sum(sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="user"}[5m])) by (cpu) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])) by (cpu))'
legendFormat: User
redfId: F
- expr: '100 * sum(sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="softirq"}[5m])) by (cpu) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])) by (cpu))'
legendFormat: Softirq
redfId: G
- expr: '100 * sum(sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]",type="wait"}[5m])) by (cpu) / sum(irate(collectd_cpu_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])) by (cpu))'
legendFormat: Wait
redfId: H
yaxes:
- format: percent
- format: short

View File

@ -0,0 +1,49 @@
- title: Per CPU Logical CPU Core (0-9)
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - CPU Core $CPU
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
minSpan: 6
nullPointMode: 'null'
repeat: cpus0
stack: true
targets:
- expr: '100 * (sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]",type="idle"}[5m])) / sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: Idle
refId: A
- expr: '100 * (sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]",type="interrupt"}[5m])) / sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: Interrupt
refId: B
- expr: '100 * (sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]",type="nice"}[5m])) / sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: Nice
refId: C
- expr: '100 * (sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]",type="softirq"}[5m])) / sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: Softirq
refId: D
- expr: '100 * (sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]",type="steal"}[5m])) / sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: Steal
refId: E
- expr: '100 * (sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]",type="system"}[5m])) / sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: System
refId: F
- expr: '100 * (sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]",type="user"}[5m])) / sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: User
refId: G
- expr: '100 * (sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]",type="wait"}[5m])) / sum(irate(collectd_cpu_total{cpu=~"$CPU", exported_instance=~"[[Cloud]]_[[Node]]"}[5m])))'
legendFormat: Wait
refId: H
yaxes:
- format: percent
- format: short

View File

@ -0,0 +1,6 @@
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text

View File

@ -0,0 +1,55 @@
- title: DF
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - Partition % Used
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: '100 * (sum(collectd_df_df_complex{df ="boot", exported_instance=~"[[Cloud]]_[[Node]]", type="used"}) / sum(collectd_df_df_complex{df="boot", exported_instance=~"[[Cloud]]_[[Node]]"}))'
legendFormat: Boot
refId: A
- expr: '100 * (sum(collectd_df_df_complex{df ="root", exported_instance=~"[[Cloud]]_[[Node]]", type="used"}) / sum(collectd_df_df_complex{df="root", exported_instance=~"[[Cloud]]_[[Node]]"}))'
legendFormat: Root
refId: B
yaxes:
- format: percent
max: 100
- format: short
- title: $Cloud - $Node - Inodes % Used
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'collectd_df_percent_inodes{df="boot",exported_instance="[[Cloud]]_[[Node]]", type="used"}'
legendFormat: Boot
refId: A
- expr: 'collectd_df_percent_inodes{df="root",exported_instance="[[Cloud]]_[[Node]]", type="used"}'
legendFormat: Root
refId: B
yaxes:
- format: percent
max: 100
- format: short

View File

@ -0,0 +1,155 @@
- title: Disk
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - $Disk iops
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Write
transform: negative-Y
targets:
- expr: 'irate(collectd_disk_disk_ops_0_total{exported_instance=~"[[Cloud]]_[[Node]]", disk=~"$Disk"}[5m])'
legendFormat: Read
refId: A
- expr: 'irate(collectd_disk_disk_ops_1_total{exported_instance=~"[[Cloud]]_[[Node]]", disk=~"$Disk"}[5m])'
legendFormat: Write
refId: B
yaxes:
- format: iops
- format: short
- title: $Cloud - $Node - $Disk Throughput
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Write
transform: negative-Y
targets:
- expr: 'irate(collectd_disk_disk_octets_0_total{disk=~"$Disk",exported_instance=~"[[Cloud]]_[[Node]]"}[5m])'
legendFormat: Read
refId: A
- expr: 'irate(collectd_disk_disk_octets_1_total{disk=~"$Disk",exported_instance=~"[[Cloud]]_[[Node]]"}[5m])'
legendFormat: Write
refId: B
yaxes:
- format: Bps
- format: short
- title: $Cloud - $Node - $Disk Merged iops
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Write
transform: negative-Y
targets:
- expr: 'irate(collectd_disk_disk_merged_0_total{disk=~"$Disk",exported_instance=~"[[Cloud]]_[[Node]]"}[5m])'
legendFormat: Read
refId: A
- expr: 'irate(collectd_disk_disk_merged_1_total{disk=~"$Disk",exported_instance=~"[[Cloud]]_[[Node]]"}[5m])'
legendFormat: Write
refId: B
yaxes:
- format: iops
- format: short
- title: $Cloud - $Node - $Disk Pending Operations
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'collectd_disk_pending_operations{disk=~"$Disk",exported_instance="[[Cloud]]_[[Node]]"}'
legendFormat: Pending Operations
refId: A
yaxes:
- format: short
- format: short
- title: $Cloud - $Node - $Disk Average Time (Estimated)
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Write
transform: negative-Y
targets:
- expr: 'irate(collectd_disk_disk_time_0_total{disk=~"$Disk",exported_instance=~"[[Cloud]]_[[Node]]"}[5m])'
legendFormat: Read
refId: A
- expr: 'irate(collectd_disk_disk_time_1_total{disk=~"$Disk",exported_instance=~"[[Cloud]]_[[Node]]"}[5m])'
legendFormat: Write
refId: B
yaxes:
- format: ms
- format: short
- title: $Cloud - $Node - $Disk IO Time
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Weighted Time
yaxis: 2
targets:
- expr: 'irate(collectd_disk_disk_io_time_0_total{disk=~"$Disk",exported_instance=~"[[Cloud]]_[[Node]]"}[5m])'
legendFormat: Time
refId: A
- expr: 'irate(collectd_disk_disk_io_time_1_total{disk=~"$Disk",exported_instance=~"[[Cloud]]_[[Node]]"}[5m])'
legendFormat: Weighted Time
refId: B
yaxes:
- format: percent
- format: ms

View File

@ -0,0 +1,95 @@
- title: IRQ
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - IRQ
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="CAL"}[5m]))'
legendFormat: CAL
refId: A
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="DFR"}[5m]))'
legendFormat: DFR
refId: B
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="ERR"}[5m]))'
legendFormat: ERR
refId: C
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="IWI"}[5m]))'
legendFormat: IWI
refId: D
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="LOC"}[5m]))'
legendFormat: LOC
refId: E
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="MCE"}[5m]))'
legendFormat: MCE
refId: F
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="MCP"}[5m]))'
legendFormat: MCP
refId: G
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="MIS"}[5m]))'
legendFormat: MIS
refId: H
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="NIMI"}[5m]))'
legendFormat: NIMI
refId: I
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="NPI"}[5m]))'
legendFormat: NPI
refId: J
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="PIN"}[5m]))'
legendFormat: PIN
refId: K
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="PIW"}[5m]))'
legendFormat: PIW
refId: L
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="PMI"}[5m]))'
legendFormat: PMI
refId: M
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="RES"}[5m]))'
legendFormat: RES
refId: N
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="RTR"}[5m]))'
legendFormat: RTR
refId: O
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="SPU"}[5m]))'
legendFormat: SPU
refId: P
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="THR"}[5m]))'
legendFormat: THR
refId: Q
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="TLB"}[5m]))'
legendFormat: TLB
refId: R
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq="TRM"}[5m]))'
legendFormat: TRM
refId: S
- title: $Cloud - $Node - Interrupts
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'sum(irate(collectd_irq_total{exported_instance=~"[[Cloud]]_[[Node]]", irq=~"[0-9]*"}[5m]))'
legendFormat: Interrupt
refId: A

View File

@ -0,0 +1,39 @@
- title: Load / Uptime
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - All CPUs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Uptime
lines: false
yaxis: 2
targets:
- expr: 'collectd_load_0{exported_instance=~"[[Cloud]]_[[Node]]"}'
legendFormat: 1m avg
refId: A
- expr: 'collectd_load_1{exported_instance=~"[[Cloud]]_[[Node]]"}'
legendFormat: 5m avg
refId: B
- expr: 'collectd_load_2{exported_instance=~"[[Cloud]]_[[Node]]"}'
legendFormat: 15m avg
refId: C
- expr: 'collectd_uptime{exported_instance=~"[[Cloud]]_[[Node]]"}'
legendFormat: Uptime
refId: D
yaxes:
- format: short
- format: s

View File

@ -0,0 +1,233 @@
- title: MariaDB
collapse: true
height: 200px
showTitle: true
panels:
- title: MySQL Threads
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'collectd_mysql_threads{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]", type="cached"}'
legendFormat: Cached
refId: A
- expr: 'collectd_mysql_threads{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]", type="connected"}'
legendFormat: Connected
refId: B
- expr: 'collectd_mysql_threads{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]", type="running"}'
legendFormat: Running
refId: C
- title: MySQL Traffic
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'irate(collectd_mysql_mysql_octets_0_total{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]"}[5m])'
legendFormat: RX
refId: A
- expr: 'irate(collectd_mysql_mysql_octets_1_total{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]"}[5m])'
legendFormat: TX
refId: B
yaxes:
- format: bytes
- format: short
- title: MySQL Query Cache
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'collectd_mysql_cache_result_total{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type="qcache-hits"}'
legendFormat: hits
refId: A
- expr: 'collectd_mysql_cache_result_total{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type="qcache-inserts"}'
legendFormat: inserts
refId: B
- expr: 'collectd_mysql_cache_result_total{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type="qcache-not_cached"}'
legendFormat: not_cached
refId: C
- expr: 'collectd_mysql_cache_result_total{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type="qcache-prunes"}'
legendFormat: prunes
refId: D
yaxes:
- format: bytes
- format: short
- title: MySQL Query Cache Size
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'collectd_mysql_cache_size{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type="qcache"}'
legendFormat: qcache
refId: A
- title: MySQL Buffer Pool Data
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'collectd_mysql_mysql_bpool_bytes{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type="data"}'
legendFormat: Data
refId: A
- expr: 'collectd_mysql_mysql_bpool_bytes{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type="dirty"}'
legendFormat: Dirty
refId: B
yaxes:
- format: bytes
- format: short
- title: MySQL Buffer Pool Counters
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'irate(collectd_mysql_mysql_bpool_counters_total{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type=~".*"}[5m])'
legendFormat: mysql-{{'{{'}} type {{'}}'}}
refId: A
- title: MySQL Commands
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'irate(collectd_mysql_mysql_commands_total{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type=~".*"}[5m])'
legendFormat: mysql-{{'{{'}} type {{'}}'}}
refId: A
- title: MySQL Handler
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'irate(collectd_mysql_mysql_handler_total{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type=~".*"}[5m])'
legendFormat: mysql-{{'{{'}} type {{'}}'}}
refId: A
- title: MySQL Locks
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'irate(collectd_mysql_mysql_locks_total{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type=~".*"}[5m])'
legendFormat: mysql-{{'{{'}} type {{'}}'}}
refId: A
- title: MySQL Select
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'irate(collectd_mysql_mysql_select_total{exported_instance=~"[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type=~".*"}[5m])'
legendFormat: mysql-{{'{{'}} type {{'}}'}}
refId: A
- title: MySQL Sort
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'irate(collectd_mysql_mysql_sort_total{exported_instance="[[Cloud]]_[[Node]]",mysql=~"[[Node]]",type=~".*"}[5m])'
legendFormat: mysql-{{'{{'}} type {{'}}'}}
refId: A

View File

@ -0,0 +1,127 @@
- title: Memory & Swap
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - Memory in Bytes
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- expr: 'sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]", memory="buffered"})'
legendFormat: Buffered
refId: A
- expr: 'sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]", memory="cached"})'
legendFormat: Cached
refId: B
- expr: 'sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]", memory="free"})'
legendFormat: Free
refId: C
- expr: 'sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]", memory="slab_recl"})'
legendFormat: Slab_recl
refId: D
- expr: 'sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]", memory="slab_unrecl"})'
legendFormat: Slab_unrecl
refId: E
- expr: 'sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]", memory="used"})'
legendFormat: Used
refId: F
yaxes:
- format: bytes
- format: short
- title: $Cloud - $Node - Memory in Percentage
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- expr: '100 * sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]", memory="buffered"}) / sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]"})'
legendFormat: Buffered
refId: A
- expr: '100 * sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]",memory="cached"}) / sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]"})'
legendFormat: Cached
refId: B
- expr: '100 * sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]", memory="free"}) / sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]"})'
legendFormat: Free
refId: C
- expr: '100 * sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]", memory="slab_recl"}) / sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]"})'
legendFormat: Slab_recl
refId: D
- expr: '100 * sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]", memory="slab_unrecl"}) / sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]"})'
legendFormat: Slab_unrecl
refId: E
- expr: '100 * sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]",memory="used"}) / sum(collectd_memory{exported_instance="[[Cloud]]_[[Node]]"})'
legendFormat: Used
refId: F
yaxes:
- format: percent
- format: short
- title: $Cloud - $Node - Swap Usage
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- expr: 'collectd_swap{exported_instance="[[Cloud]]_[[Node]]", swap="cached"}'
legendFormat: Cached
refId: A
- expr: 'collectd_swap{exported_instance="[[Cloud]]_[[Node]]", swap="free"}'
legendFormat: Free
refId: B
- expr: 'collectd_swap{exported_instance="[[Cloud]]_[[Node]]", swap="used"}'
legendFormat: Used
refId: C
yaxes:
- format: bits
- format: short
- title: $Cloud - $Node - Swap IO
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'irate(collectd_swap_swap_io_total{exported_instance=~"[[Cloud]]_[[Node]]", swap="in"}[5m])'
legendFormat: In
refId: A
- expr: 'irate(collectd_swap_swap_io_total{exported_instance="[[Cloud]]_[[Node]]", swap="in"}[5m])'
legendFormat: Out
refId: B
yaxes:
- format: bytes
- format: short

View File

@ -0,0 +1,83 @@
- title: Network
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - $Interface Network IO
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: RX
transform: negative-Y
targets:
- expr: 'irate(collectd_interface_if_packets_1_total{exported_instance=~"[[Cloud]]_[[Node]]", interface=~"$Interface"}[5m])'
legendFormat: TX
refId: A
- expr: 'irate(collectd_interface_if_packets_0_total{exported_instance=~"[[Cloud]]_[[Node]]", interface=~"$Interface"}[5m])'
legendFormat: RX
refId: B
yaxes:
- format: pps
- format: short
- title: $Cloud - $Node - $Interface Network Throughput
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: RX
transform: negative-Y
targets:
- expr: '8 * irate(collectd_interface_if_octets_1_total{exported_instance=~"[[Cloud]]_[[Node]]",interface=~"$Interface"}[5m])'
legendFormat: TX
refId: A
- expr: '8 * irate(collectd_interface_if_octets_0_total{exported_instance=~"[[Cloud]]_[[Node]]",interface=~"$Interface"}[5m])'
legendFormat: RX
refId: B
yaxes:
- format: bps
- format: short
- title: $Cloud - $Node - $Interface Errors
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: RX
transform: negative-Y
targets:
- expr: 'irate(collectd_interface_if_errors_1_total{exported_instance=~"[[Cloud]]_[[Node]]", interface=~"$Interface"}[5m])'
legendFormat: TX
refId: A
- expr: 'irate(collectd_interface_if_errors_0_total{exported_instance=~"[[Cloud]]_[[Node]]", interface=~"$Interface"}[5m])'
legendFormat: RX
refId: B
yaxes:
- format: short
- format: short

View File

@ -0,0 +1,38 @@
- title: Numa
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - Numastat
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'irate(collectd_numa_vmpage_action_total{exported_instance=~"[[Cloud]]_[[Node]]", numa=~"$Numa", type="interleave_hit"}[5m])'
legendFormat: $Numa.interleave_hit
refId: A
- expr: 'irate(collectd_numa_vmpage_action_total{exported_instance=~"[[Cloud]]_[[Node]]", numa=~"$Numa", type="local_node"}[5m])'
legendFormat: $Numa.local_node
refId: B
- expr: 'irate(collectd_numa_vmpage_action_total{exported_instance=~"[[Cloud]]_[[Node]]", numa=~"$Numa", type="numa_foreign"}[5m])'
legendFormat: $Numa.numa_foreign
refId: C
- expr: 'irate(collectd_numa_vmpage_action_total{exported_instance=~"[[Cloud]]_[[Node]]", numa=~"$Numa", type="numa_hit"}[5m])'
legendFormat: $Numa.numa_hit
refId: D
- expr: 'irate(collectd_numa_vmpage_action_total{exported_instance=~"[[Cloud]]_[[Node]]", numa=~"$Numa", type="numa_miss"}[5m])'
legendFormat: $Numa.numa_miss
refId: E
- expr: 'irate(collectd_numa_vmpage_action_total{exported_instance=~"[[Cloud]]_[[Node]]", numa=~"$Numa", type="other_node"}[5m])'
legendFormat: $Numa.other_node
refId: F

View File

@ -0,0 +1,34 @@
#jinja2:lstrip_blocks: True
{% for metrics in per_process_metrics %}
- title: {{per_process_row_title_prefix}} {{metrics.name}}
collapse: true
height: 200px
showTitle: true
panels:
{% for panel in per_process_panels[item.process_list_name] %}
- title: {{panel.name}}
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: '{{metrics.nullPointMode}}'
targets:
{% for process in panel.processes %}
{% for metric in metrics.metrics %}
- expr: {{metric.expr}}{exported_instance=~"[[Cloud]]_[[Node]]", processes="{{process}}"}
legendFormat: {{process}}
{% endfor %}
{% endfor %}
yaxes:
- format: {{metrics.y1units}}
- format: short
{% endfor %}
{% endfor %}

View File

@ -0,0 +1,55 @@
- title: Processes
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - Processes State
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- expr: 'collectd_processes_ps_state{exported_instance=~"[[Cloud]]_[[Node]]",processes="running"}'
legendFormat: Running
refId: A
- expr: 'collectd_processes_ps_state{exported_instance=~"[[Cloud]]_[[Node]]",processes="stopped"}'
legendFormat: Stopped
refId: B
- expr: 'collectd_processes_ps_state{exported_instance=~"[[Cloud]]_[[Node]]",processes="sleeping"}'
legendFormat: Sleeping
refId: C
- expr: 'collectd_processes_ps_state{exported_instance=~"[[Cloud]]_[[Node]]",processes="blocked"}'
legendFormat: Blocked
refId: D
- expr: 'collectd_processes_ps_state{exported_instance=~"[[Cloud]]_[[Node]]",processes="paging"}'
legendFormat: Paging
refId: E
- expr: 'collectd_processes_ps_state{exported_instance=~"[[Cloud]]_[[Node]]",processes="zombies"}'
legendFormat: Zombies
refId: F
- title: $Cloud - $Node - Fork Rate
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'irate(collectd_processes_fork_rate_total{exported_instance=~"[[Cloud]]_[[Node]]"}[5m])'
legendFormat: Fork Rate
refId: A

View File

@ -0,0 +1,56 @@
- title: Tail
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - Tail Error
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- expr: 'collectd_tail_counter_total{exported_instance="[[Cloud]]_[[Node]]",tail=~"[[Tail]]",type="error"}'
legendFormat: "[[Tail]]"
refId: A
- title: $Cloud - $Node - Tail Warn
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: 'collectd_tail_counter_total{exported_instance="[[Cloud]]_[[Node]]",tail=~"[[Tail]]",type="warn"}'
legendFormat: "[[Tail]]"
refId: A
- title: $Cloud - $Node - Tail Info
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: 'collectd_tail_counter_total{exported_instance="[[Cloud]]_[[Node]]",tail=~"[[Tail]]",type="info"}'
legendFormat: "[[Tail]]"
refId: A

View File

@ -0,0 +1,59 @@
- title: Turbostat
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - Gauge TSC & SMI Count
type: graph
decimals: 2
fill: 0
nullPointMode: 'null'
seriesOverrides:
- alias: SMI Count
yaxis: 2
targets:
- expr: 'collectd_turbostat_gauge{exported_instance=~"[[Cloud]]_[[Node]]", turbostat=~".*",type="TSC"}'
legendFormat: tsc-{{'{{'}}turbostat{{'}}'}}
refId: A
yaxes:
- format: hertz
- format: short
- title: $Cloud - $Node - turbostat Freq Avg
type: graph
fill: 0
nullPointMode: 'null'
targets:
- expr: '1000000 * collectd_turbostat_frequency{exported_instance=~"[[Cloud]]_[[Node]]", turbostat=~".*", type="average"}'
yaxes:
- format: hertz
- format: short
- title: $Cloud - $Node - turbostat Freq Busy
type: graph
decimals: 2
fill: 0
nullPointMode: 'null'
targets:
- expr: '1000000 * collectd_turbostat_frequency{exported_instance=~"[[Cloud]]_[[Node]]", turbostat=~".*", type="busy"}'
yaxes:
- format: hertz
- format: short
- title: $Cloud - $Node - turbostat c0%
type: graph
decimals: 2
fill: 0
nullPointMode: 'null'
targets:
- expr: 'collectd_turbostat_percent{exported_instance=~"[[Cloud]]_[[Node]]", turbostat=~".*", type="c0"}'
yaxes:
- format: percent
- format: short
- title: $Cloud - $Node - turbostat c1%
type: graph
decimals: 2
fill: 0
nullPointMode: 'null'
targets:
- expr: 'collectd_turbostat_percent{exported_instance=~"[[Cloud]]_[[Node]]", turbostat=~".*", type="c1"}'
yaxes:
- format: percent
- format: short

View File

@ -0,0 +1,258 @@
---
#
# Vars for Dashboard Generation
#
dashboard_groups:
- undercloud
- controller
- networker
- blockstorage
- objectstorage
- cephstorage
- compute
per_process_metrics:
- name: "Process/Thread Counts"
y1units: "short"
metrics:
- name: "Processes"
expr: "collectd_processes_ps_count_0"
- name: "Threads"
expr: "collectd_processes_ps_count_1"
nullPointMode: "null"
- name: "Process CPU"
y1units: "percent"
metrics:
- name: "System"
expr: "collectd_processes_ps_cputime_0_total"
- name: "User"
expr: "collectd_processes_ps_cputime_1_total"
nullPointMode: "null"
- name: "Process Memory"
y1units: "bits"
metrics:
- name: "RSS"
expr: "collectd_processes_ps_rss"
- name: "Virtual"
expr: "collectd_processes_ps_vm"
nullPointMode: "connected"
- name: "Process Page Faults"
y1units: "short"
metrics:
- name: "Majflt"
expr: "collectd_processes_ps_pagefaults_0_total"
- name: "Minflt"
expr: "collectd_processes_ps_pagefaults_1_total"
nullPointMode: "null"
- name: "Process IOPs(Estimated via SYSCALLS)"
y1units: "iops"
metrics:
- name: "Read"
expr: "collectd_processes_io_ops_0_total"
- name: "Write"
expr: "collectd_processes_io_ops_1_total"
nullPointMode: "null"
- name: "Process IO Throughput(Estimated via SYSCALLS)"
y1units: "bytes"
metrics:
- name: "Rx"
expr: "collectd_processes_io_octets_0_total"
- name: "Tx"
expr: "collectd_processes_io_octets_1_total"
nullPointMode: "null"
- name: "Process Disk IO Throughput(Estimated via SYSCALLS)"
y1units: "bytes"
metrics:
- name: "Read"
expr: "collectd_processes_disk_octets_0_total"
- name: "Write"
expr: "collectd_processes_disk_octets_1_total"
nullPointMode: "null"
per_process_panels:
#
# This dashboard "OpenStack" aims to be comprehensive with all processes across:
# Undercloud, Controller, BlockStorage, ObjectStorage, CephStorage, Compute Nodes
#
OpenStack:
- name: "Ansible"
processes:
- ansible
- name: "Aodh"
processes:
- aodh-evaluator
- aodh-listener
- aodh-notifier
- aodh_wsgi
- name: "Barbican"
processes:
- barbican_wsgi
- barbican-keystone-listener
- barbican-worker
- name: "Ceilometer"
processes:
- ceilometer-agent-notification
- ceilometer-api
- ceilometer-collector
- ceilometer-polling
- ceilometer_wsgi
- name: "Ceph"
processes:
- ceph-mon
- ceph-osd
- name: "Cinder"
processes:
- cinder-api
- cinder-scheduler
- cinder-volume
- cinder_wsgi
- name: "Corosync/Pacemaker"
processes:
- attrd
- cib
- corosync
- crmd
- lrmd
- pacemakerd
- pcsd
- pengine
- stonithd
- name: "Docker"
processes:
- docker-registry
- dockerd-current
- docker-containerd-current
- name: "Everything Else"
processes:
- dnsmasq
- haproxy
- httpd
- iscsid
- keepalived
- memcached
- mongod
- mysqld
- rabbitmq
- redis-server
- karaf
- name: "Glance"
processes:
- glance-api
- glance-registry
- name: "Gnocchi"
processes:
- gnocchi-metricd-master
- gnocchi-metricd-scheduler
- gnocchi-metricd-processing
- gnocchi-metricd-reporting
- gnocchi-metricd-janitor
- gnocchi-statsd
- gnocchi_wsgi
# Old "proctitle" of metricd (osp_version =< Newton)
- gnocchi-metricd
- name: "Heat"
processes:
- heat-api
- heat-api-cfn
- heat-api-cloudwatch
- heat-engine
- heat_api_cfn
- heat_api_cloudwatch
- heat_api_wsgi
- name: "Horizon"
processes:
- horizon
- name: "Ironic"
processes:
- ironic-api
- ironic-conductor
- ironic-inspector
- dnsmasq-ironic
- dnsmasq-ironicinspector
- ironic_wsgi
- name: "Keystone"
processes:
- keystone-admin
- keystone-main
- keystone-token-flush
- name: "Mistral"
processes:
- mistral-server-api
- mistral-server-engine
- mistral-server-executor
- name: "Neutron"
processes:
- neutron-dhcp-agent
- neutron-l3-agent
- neutron-metadata-agent
- neutron-ns-metadata-proxy
- neutron-openvswitch-agent
- neutron-rootwrap-daemon
- neutron-server
- neutron-keepalived-state-change
- name: "Nova"
processes:
- nova-api
- nova-api-metadata
- nova_api_wsgi
- nova-cert
- nova-compute
- nova-conductor
- nova-consoleauth
- nova-novncproxy
- nova-scheduler
- novajoin-server
- placement_wsgi
- privsep-helper
- name: "Octavia"
processes:
- octavia-worker
- octavia-housekeeping
- octavia-health-manager
- octavia-api
- name: "Open vSwitch"
processes:
- ovs-vswitchd
- ovsdb-client
- ovsdb-server
- ovn-northd
- ovn-controller
- ovn-controller-vtep
- name: "Panko"
processes:
- panko_wsgi
- name: "QEMU-KVM / Libvirt"
processes:
- qemu-kvm
- libvirtd
- virtlockd
- virtlogd
- name: "Swift"
processes:
- swift-account-auditor
- swift-account-reaper
- swift-account-replicator
- swift-account-server
- swift-container-auditor
- swift-container-replicator
- swift-container-server
- swift-container-sync
- swift-container-updater
- swift-object-auditor
- swift-object-expirer
- swift-object-reconstructor
- swift-object-replicator
- swift-object-server
- swift-object-updater
- swift-proxy-server
- rsync
- name: "Zaqar"
processes:
- zaqar-server
- zaqar_wsgi
- name: "Collectd"
processes:
- collectd

View File

@ -125,6 +125,14 @@ http://docs.grafana.org/http_api/auth/#create-api-token
[stack@ospd ansible]$ ansible-playbook -i hosts install/browbeat.yml # if not run before.
[stack@ospd ansible]$ ansible-playbook -i hosts install/grafana-dashboards.yml
(Optional) Install Browbeat Prometheus/Grafana/Collectd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
[stack@ospd ansible]$ ansible-playbook -i hosts install/grafana-prometheus-dashboards.yml
Make sure grafana-api-key is added in the `install/group_vars/all.yml`
(Optional) Install Browbeat Common Logging through filebeat
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~