From 2d72b537845b97b6d4682d5567b289d2ce41d444 Mon Sep 17 00:00:00 2001 From: Guillaume Thouvenin Date: Wed, 27 Apr 2016 14:21:26 +0200 Subject: [PATCH] Support for the detach-database plugin This patch adds the support when the database is deployed on a dedicated node [1]. [1] https://github.com/openstack/fuel-plugin-detach-database Change-Id: If800d9d09204a1456640863a3ed3c5dc66d29017 Closes-Bug: #1547089 --- .../puppet/manifests/aggregator.pp | 13 ++++--- deployment_scripts/puppet/manifests/base.pp | 34 ++++++++++++++++- deployment_scripts/puppet/manifests/cinder.pp | 13 ++++--- .../puppet/manifests/configure_afd_filters.pp | 3 +- .../puppet/manifests/controller.pp | 12 ------ .../puppet/manifests/hiera_override.pp | 4 ++ .../templates/alarming.yaml.erb | 38 +++++++++++++++++++ .../templates/gse_filters.yaml.erb | 6 +++ 8 files changed, 96 insertions(+), 27 deletions(-) diff --git a/deployment_scripts/puppet/manifests/aggregator.pp b/deployment_scripts/puppet/manifests/aggregator.pp index 39c6ce978..23e972832 100644 --- a/deployment_scripts/puppet/manifests/aggregator.pp +++ b/deployment_scripts/puppet/manifests/aggregator.pp @@ -15,11 +15,12 @@ notice('fuel-plugin-lma-collector: aggregator.pp') prepare_network_config(hiera('network_scheme', {})) -$mgmt_address = get_network_role_property('management', 'ipaddr') -$lma_collector = hiera_hash('lma_collector') -$roles = node_roles(hiera('nodes'), hiera('uid')) -$is_controller = member($roles, 'controller') or member($roles, 'primary-controller') -$is_rabbitmq = roles_include(['standalone-rabbitmq', 'primary-standalone-rabbitmq']) +$mgmt_address = get_network_role_property('management', 'ipaddr') +$lma_collector = hiera_hash('lma_collector') +$roles = node_roles(hiera('nodes'), hiera('uid')) +$is_controller = member($roles, 'controller') or member($roles, 'primary-controller') +$is_rabbitmq = roles_include(['standalone-rabbitmq', 'primary-standalone-rabbitmq']) +$is_mysql_server = roles_include(['standalone-database', 'primary-standalone-database']) $network_metadata = hiera_hash('network_metadata') $controllers = get_nodes_hash_by_roles($network_metadata, ['primary-controller', 'controller']) @@ -29,7 +30,7 @@ $management_network = hiera('management_network_range') $aggregator_port = 5565 $check_port = 5566 -if $is_controller or $is_rabbitmq { +if $is_controller or $is_rabbitmq or $is_mysql_server { # On nodes where pacemaker is deployed, make sure the LMA service is # configured with the "pacemaker" provider include lma_collector::params diff --git a/deployment_scripts/puppet/manifests/base.pp b/deployment_scripts/puppet/manifests/base.pp index d7e658407..7dad19657 100644 --- a/deployment_scripts/puppet/manifests/base.pp +++ b/deployment_scripts/puppet/manifests/base.pp @@ -25,6 +25,13 @@ $current_node_name = hiera('user_node_name') $current_roles = hiera('roles') $network_metadata = hiera_hash('network_metadata') $detach_rabbitmq = hiera('detach-rabbitmq', {}) +$detach_database = hiera('detach-database', {}) + +if $detach_database['metadata'] and $detach_database['metadata']['enabled'] { + $is_mysql_server = roles_include(['standalone-database', 'primary-standalone-database']) +} else { + $is_mysql_server = $is_controller +} if $detach_rabbitmq['metadata'] and $detach_rabbitmq['metadata']['enabled'] { $is_rabbitmq = roles_include(['standalone-rabbitmq', 'primary-standalone-rabbitmq']) @@ -121,10 +128,10 @@ lma_collector::heka { 'metric_collector': } # The LMA collector service is managed by Pacemaker on nodes that are -# running RabbitMQ and on controller nodes. +# running RabbitMQ and database in detached mode and also on controller nodes. # We use pacemaker_wrappers::service to reconfigure the service resource # to use the "pacemaker" service provider -if $is_controller or $is_rabbitmq { +if $is_controller or $is_rabbitmq or $is_mysql_server { # TODO(all): remove this include from the manifest include lma_collector::params @@ -328,6 +335,12 @@ if $elasticsearch_mode != 'disabled' { require => Class['lma_collector'], } + if $is_mysql_server { + class { 'lma_collector::logs::mysql': + require => Class['lma_collector'], + } + } + if $is_rabbitmq { class { 'lma_collector::logs::rabbitmq': require => Class['lma_collector'], @@ -367,6 +380,23 @@ case $influxdb_mode { require => Class['lma_collector'], } + if $is_mysql_server { + $nova = hiera_hash('nova', {}) + + class { 'lma_collector::collectd::mysql': + username => 'nova', + password => $nova['db_password'], + require => Class['lma_collector::collectd::base'], + } + + lma_collector::collectd::dbi_mysql_status { 'mysql_status': + username => 'nova', + dbname => 'nova', + password => $nova['db_password'], + require => Class['lma_collector::collectd::base'], + } + } + class { 'lma_collector::influxdb': server => $influxdb_server, database => $influxdb_database, diff --git a/deployment_scripts/puppet/manifests/cinder.pp b/deployment_scripts/puppet/manifests/cinder.pp index 27c6465fd..7ebccabcc 100644 --- a/deployment_scripts/puppet/manifests/cinder.pp +++ b/deployment_scripts/puppet/manifests/cinder.pp @@ -16,13 +16,14 @@ notice('fuel-plugin-lma-collector: cinder.pp') include lma_collector::params -$ceilometer = hiera_hash('ceilometer', {}) -$lma_collector = hiera_hash('lma_collector') -$roles = node_roles(hiera('nodes'), hiera('uid')) -$is_controller = member($roles, 'controller') or member($roles, 'primary-controller') -$is_rabbitmq = roles_include(['standalone-rabbitmq', 'primary-standalone-rabbitmq']) +$ceilometer = hiera_hash('ceilometer', {}) +$lma_collector = hiera_hash('lma_collector') +$roles = node_roles(hiera('nodes'), hiera('uid')) +$is_controller = member($roles, 'controller') or member($roles, 'primary-controller') +$is_rabbitmq = roles_include(['standalone-rabbitmq', 'primary-standalone-rabbitmq']) +$is_mysql_server = roles_include(['standalone-database', 'primary-standalone-database']) -if $is_controller or $is_rabbitmq { +if $is_controller or $is_rabbitmq or $is_mysql_server { # On nodes where pacemaker is deployed, make sure the LMA service is # configured with the "pacemaker" provider include lma_collector::params diff --git a/deployment_scripts/puppet/manifests/configure_afd_filters.pp b/deployment_scripts/puppet/manifests/configure_afd_filters.pp index af17ba645..5635e9d74 100644 --- a/deployment_scripts/puppet/manifests/configure_afd_filters.pp +++ b/deployment_scripts/puppet/manifests/configure_afd_filters.pp @@ -20,13 +20,14 @@ $lma = hiera_hash('lma_collector', {}) $roles = node_roles(hiera('nodes'), hiera('uid')) $is_controller = member($roles, 'controller') or member($roles, 'primary-controller') $is_rabbitmq = roles_include(['standalone-rabbitmq', 'primary-standalone-rabbitmq']) +$is_mysql_server = roles_include(['standalone-database', 'primary-standalone-database']) $alarms_definitions = $lma['alarms'] if $alarms_definitions == undef { fail('Alarms definitions not found. Check files in /etc/hiera/override.') } -if $is_controller or $is_rabbitmq { +if $is_controller or $is_rabbitmq or $is_mysql_server { # On nodes where pacemaker is deployed, make sure the LMA service is # configured with the "pacemaker" provider include lma_collector::params diff --git a/deployment_scripts/puppet/manifests/controller.pp b/deployment_scripts/puppet/manifests/controller.pp index 77cda4a48..232828c8a 100644 --- a/deployment_scripts/puppet/manifests/controller.pp +++ b/deployment_scripts/puppet/manifests/controller.pp @@ -266,7 +266,6 @@ if ! $storage_options['objects_ceph'] { # Logs if $lma_collector['elasticsearch_mode'] != 'disabled' { - class { 'lma_collector::logs::mysql': } class { 'lma_collector::logs::pacemaker': } } @@ -358,17 +357,6 @@ if $influxdb_mode != 'disabled' { cpu_allocation_ratio => 8.0, } - class { 'lma_collector::collectd::mysql': - username => 'nova', - password => $nova['db_password'], - } - - lma_collector::collectd::dbi_mysql_status{ 'mysql_status': - username => 'nova', - dbname => 'nova', - password => $nova['db_password'], - } - class { 'lma_collector::collectd::haproxy': socket => $haproxy_socket, # Ignore internal stats ('Stats' for 6.1, 'stats' for 7.0) and lma proxies diff --git a/deployment_scripts/puppet/manifests/hiera_override.pp b/deployment_scripts/puppet/manifests/hiera_override.pp index a6289e1e7..c69e5f635 100644 --- a/deployment_scripts/puppet/manifests/hiera_override.pp +++ b/deployment_scripts/puppet/manifests/hiera_override.pp @@ -27,6 +27,10 @@ if ($plugin_data) { $detach_rabbitmq = hiera('detach-rabbitmq', {}) $detach_rabbitmq_enabled = $detach_rabbitmq['metadata'] and $detach_rabbitmq['metadata']['enabled'] + # detach_database_enabled is used in templates + $detach_database = hiera('detach-database', {}) + $detach_database_enabled = $detach_database['metadata'] and $detach_database['metadata']['enabled'] + $elasticsearch_mode = $plugin_data['elasticsearch_mode'] $monitor_elasticsearch = $elasticsearch_mode ? { 'local' => true, diff --git a/deployment_scripts/puppet/modules/fuel_lma_collector/templates/alarming.yaml.erb b/deployment_scripts/puppet/modules/fuel_lma_collector/templates/alarming.yaml.erb index 53e2f338a..2862a7923 100644 --- a/deployment_scripts/puppet/modules/fuel_lma_collector/templates/alarming.yaml.erb +++ b/deployment_scripts/puppet/modules/fuel_lma_collector/templates/alarming.yaml.erb @@ -91,6 +91,32 @@ lma_collector: window: 120 periods: 0 function: avg + - name: 'cpu-critical-mysql' + description: 'The CPU usage is too high (MySQL node)' + severity: 'critical' + enabled: 'true' + trigger: + logical_operator: 'or' + rules: + - metric: cpu_idle + relational_operator: '<=' + threshold: 5 + window: 120 + periods: 0 + function: avg + - name: 'cpu-warning-mysql' + description: 'The CPU usage is high (MySQL node)' + severity: 'warning' + enabled: 'true' + trigger: + logical_operator: 'or' + rules: + - metric: cpu_idle + relational_operator: '<=' + threshold: 15 + window: 120 + periods: 0 + function: avg - name: 'cpu-critical-storage' description: 'The CPU usage is too high (storage node)' severity: 'critical' @@ -705,7 +731,11 @@ lma_collector: node_cluster_roles: controller: ['primary-controller', 'controller'] +<% if @detach_database_enabled -%> + mysql-nodes: ['primary-standalone-database', 'standalone-database'] +<% else -%> mysql-nodes: ['primary-controller', 'controller'] +<% end -%> compute: ['compute'] storage: ['cinder', 'ceph-osd'] <% if @monitor_elasticsearch -%> @@ -721,7 +751,11 @@ lma_collector: <% else -%> rabbitmq: ['primary-controller', 'controller'] <% end -%> +<% if @detach_database_enabled -%> + mysql: ['primary-standalone-database', 'standalone-database'] +<% else -%> mysql: ['primary-controller', 'controller'] +<% end -%> apache: ['primary-controller', 'controller'] nova-api: ['primary-controller', 'controller'] nova-logs: ['primary-controller', 'controller', 'compute'] @@ -757,6 +791,10 @@ lma_collector: root-fs: ['root-fs-critical', 'root-fs-warning'] <% end -%> mysql-nodes: +<% if @detach_database_enabled -%> + cpu: ['cpu-critical-mysql', 'cpu-warning-mysql'] + root-fs: ['root-fs-critical', 'root-fs-warning'] +<% end -%> mysql-fs: ['mysql-fs-critical', 'mysql-fs-warning'] compute: cpu: ['cpu-critical-compute', 'cpu-warning-compute'] diff --git a/deployment_scripts/puppet/modules/fuel_lma_collector/templates/gse_filters.yaml.erb b/deployment_scripts/puppet/modules/fuel_lma_collector/templates/gse_filters.yaml.erb index 6e87081d8..297f292d0 100644 --- a/deployment_scripts/puppet/modules/fuel_lma_collector/templates/gse_filters.yaml.erb +++ b/deployment_scripts/puppet/modules/fuel_lma_collector/templates/gse_filters.yaml.erb @@ -409,6 +409,10 @@ lma_collector: policy: majority_of_members group_by: hostname members: +<% if @detach_database_enabled -%> + - cpu + - root-fs +<% end -%> - mysql-fs compute: policy: majority_of_members @@ -461,7 +465,9 @@ lma_collector: - mysqld-tcp - mysql - mysql-nodes +<% if not @detach_database_enabled -%> - controller +<% end -%> haproxy: policy: highest_severity group_by: member