From baa9ad17df0c747d87581ce12903d92143b10d02 Mon Sep 17 00:00:00 2001 From: Oleksandr Martsyniuk Date: Tue, 22 Dec 2015 19:30:52 +0200 Subject: [PATCH] Support for Contrail-specific Ceilometer meters Change-Id: Ia3919fc7526c4b1ab9e3a20347c1fc30b8ba02eb --- .../modules/contrail/manifests/controller.pp | 21 +++- .../puppet/modules/contrail/manifests/init.pp | 72 +++++++------- .../contrail/templates/pipeline.yaml.erb | 97 +++++++++++++++++++ 3 files changed, 155 insertions(+), 35 deletions(-) create mode 100644 deployment_scripts/puppet/modules/contrail/templates/pipeline.yaml.erb diff --git a/deployment_scripts/puppet/modules/contrail/manifests/controller.pp b/deployment_scripts/puppet/modules/contrail/manifests/controller.pp index 374533bc6..1891eeb82 100644 --- a/deployment_scripts/puppet/modules/contrail/manifests/controller.pp +++ b/deployment_scripts/puppet/modules/contrail/manifests/controller.pp @@ -95,6 +95,25 @@ class contrail::controller { # Disable neutron agents contrail::pcs_delete_resource { $contrail::disabled_services: } +# Contrail-specific ceilometer settings + $ceilometer_enabled = $contrail::ceilometer_hash['enabled'] + + if ($ceilometer_enabled) { + package { 'ceilometer-plugin-contrail': } -> + file {'/etc/ceilometer/pipeline.yaml': + ensure => file, + content => template('contrail/pipeline.yaml.erb'), + } ~> + service {'ceilometer-agent-central': + ensure => runnning, + name => 'p_ceilometer-agent-central', + enable => true, + hasstatus => true, + hasrestart => true, + provider => 'pacemaker', + } + } + service { 'neutron-server': ensure => running, enable => true, @@ -106,4 +125,4 @@ class contrail::controller { ], } -} \ No newline at end of file +} diff --git a/deployment_scripts/puppet/modules/contrail/manifests/init.pp b/deployment_scripts/puppet/modules/contrail/manifests/init.pp index fbcde1f34..504d1f3f3 100644 --- a/deployment_scripts/puppet/modules/contrail/manifests/init.pp +++ b/deployment_scripts/puppet/modules/contrail/manifests/init.pp @@ -20,67 +20,71 @@ class contrail { # TODO #$plugin_version = $settings['metadata']['plugin_version'] $plugin_version = '3.0' - $distribution= 'juniper' + $distribution = 'juniper' - $network_scheme = hiera_hash('network_scheme', {}) + $network_scheme = hiera_hash('network_scheme', {}) $network_metadata = hiera_hash('network_metadata', {}) - $uid = hiera('uid') - $master_ip = hiera('master_ip') - $node_role = hiera('role') - $node_name = hiera('user_node_name') - $nodes= hiera('nodes') + $uid = hiera('uid') + $master_ip = hiera('master_ip') + $node_role = hiera('role') + $node_name = hiera('user_node_name') + $nodes = hiera('nodes') $public_ssl_hash = hiera('public_ssl') - $public_ssl = $public_ssl_hash['services'] + $public_ssl = $public_ssl_hash['services'] - $neutron_settings=hiera_hash('quantum_settings', {}) - $metadata_secret=$neutron_settings['metadata']['metadata_proxy_shared_secret'] - $service_token = $neutron_settings['keystone']['admin_password'] - $nets = $neutron_settings['predefined_networks'] + $neutron_settings = hiera_hash('quantum_settings', {}) + $metadata_secret = $neutron_settings['metadata']['metadata_proxy_shared_secret'] + $service_token = $neutron_settings['keystone']['admin_password'] + $nets = $neutron_settings['predefined_networks'] - $keystone=hiera_hash('keystone', {}) + $default_ceilometer_hash = { 'enabled' => false } + $ceilometer_hash = hiera_hash('ceilometer', $default_ceilometer_hash) + + $keystone = hiera_hash('keystone', {}) $admin_token = $keystone['admin_token'] $admin_settings = hiera_hash('access', {}) $admin_username = $admin_settings['user'] $admin_password = $admin_settings['password'] - $admin_tenant = $admin_settings['tenant'] + $admin_tenant = $admin_settings['tenant'] # Contrail settings - $asnum = $settings['contrail_asnum'] - $external = $settings['contrail_external'] + $asnum = $settings['contrail_asnum'] + $external = $settings['contrail_external'] $route_target = $settings['contrail_route_target'] - $gateways = split($settings['contrail_gateways'], ',') + $gateways = split($settings['contrail_gateways'], ',') # Custom mount point for contrail-db - $cassandra_path='/var/lib/contrail_db' + $cassandra_path = '/var/lib/contrail_db' # Network configuration prepare_network_config($network_scheme) - $interface=get_network_role_property('neutron/mesh', 'interface') - $gateway=$network_scheme['endpoints'][$interface]['gateway'] - $address=get_network_role_property('neutron/mesh', 'ipaddr') - $cidr=get_network_role_property('neutron/mesh', 'cidr') - $netmask=get_network_role_property('neutron/mesh', 'netmask') - $netmask_short=netmask_to_cidr($netmask) - $phys_dev=get_private_ifname($interface) + $interface = get_network_role_property('neutron/mesh', 'interface') + $gateway = $network_scheme['endpoints'][$interface]['gateway'] + $address = get_network_role_property('neutron/mesh', 'ipaddr') + $cidr = get_network_role_property('neutron/mesh', 'cidr') + $netmask = get_network_role_property('neutron/mesh', 'netmask') + $netmask_short = netmask_to_cidr($netmask) + $phys_dev = get_private_ifname($interface) - $mos_mgmt_vip=$network_metadata['vips']['management']['ipaddr'] - $mos_public_vip=$network_metadata['vips']['public']['ipaddr'] + $mos_mgmt_vip = $network_metadata['vips']['management']['ipaddr'] + $mos_public_vip = $network_metadata['vips']['public']['ipaddr'] - $contrail_private_vip=$network_metadata['vips']['contrail_priv']['ipaddr'] - $contrail_mgmt_vip=$contrail_private_vip + $contrail_private_vip = $network_metadata['vips']['contrail_priv']['ipaddr'] + $contrail_mgmt_vip = $contrail_private_vip - $disabled_services=['neutron-plugin-openvswitch-agent','neutron-dhcp-agent','neutron-metadata-agent','neutron-l3-agent'] + $disabled_services = ['neutron-plugin-openvswitch-agent','neutron-dhcp-agent', + 'neutron-metadata-agent','neutron-l3-agent'] # Settings for RabbitMQ on contrail controllers - $rabbit=hiera('rabbit') - $rabbit_password=$rabbit['password'] + $rabbit = hiera('rabbit') + $rabbit_password = $rabbit['password'] $rabbit_hosts_ports = hiera('amqp_hosts') # RabbitMQ nodes Mgmt IP list - $rabbit_nodes_hash = get_nodes_hash_by_roles(hiera('network_metadata'), ['primary-controller', 'controller']) - $rabbit_ips = values(get_node_to_ipaddr_map_by_network_role($rabbit_nodes_hash, 'mgmt/messaging')) + $rabbit_nodes_hash = get_nodes_hash_by_roles(hiera('network_metadata'), ['primary-controller', 'controller']) + $rabbit_ips = values(get_node_to_ipaddr_map_by_network_role($rabbit_nodes_hash, 'mgmt/messaging')) # Contrail DB nodes Private IP list $primary_contrail_db_nodes_hash = get_nodes_hash_by_roles(hiera('network_metadata'), ['primary-contrail-db']) diff --git a/deployment_scripts/puppet/modules/contrail/templates/pipeline.yaml.erb b/deployment_scripts/puppet/modules/contrail/templates/pipeline.yaml.erb new file mode 100644 index 000000000..b23fc3739 --- /dev/null +++ b/deployment_scripts/puppet/modules/contrail/templates/pipeline.yaml.erb @@ -0,0 +1,97 @@ +--- +sources: + - name: meter_source + interval: 60 + meters: + - "*" + sinks: + - meter_sink + - name: cpu_source + interval: 60 + meters: + - "cpu" + sinks: + - cpu_sink + - name: disk_source + interval: 60 + meters: + - "disk.read.bytes" + - "disk.read.requests" + - "disk.write.bytes" + - "disk.write.requests" + - "disk.device.read.bytes" + - "disk.device.read.requests" + - "disk.device.write.bytes" + - "disk.device.write.requests" + sinks: + - disk_sink + - name: network_source + interval: 60 + meters: + - "network.incoming.bytes" + - "network.incoming.packets" + - "network.outgoing.bytes" + - "network.outgoing.packets" + sinks: + - network_sink + - name: contrail_source + interval: 600 + meters: + - "ip.floating.receive.packets" + - "ip.floating.transmit.packets" + - "ip.floating.receive.bytes" + - "ip.floating.transmit.bytes" + resources: + - contrail://<%= scope.lookupvar('contrail::contrail_private_vip') %>:8081 + sinks: + - contrail_sink +sinks: + - name: meter_sink + transformers: + publishers: + - notifier:// + - name: cpu_sink + transformers: + - name: "rate_of_change" + parameters: + target: + name: "cpu_util" + unit: "%" + type: "gauge" + scale: "100.0 / (10**9 * (resource_metadata.cpu_number or 1))" + publishers: + - notifier:// + - name: disk_sink + transformers: + - name: "rate_of_change" + parameters: + source: + map_from: + name: "(disk\\.device|disk)\\.(read|write)\\.(bytes|requests)" + unit: "(B|request)" + target: + map_to: + name: "\\1.\\2.\\3.rate" + unit: "\\1/s" + type: "gauge" + publishers: + - notifier:// + - name: network_sink + transformers: + - name: "rate_of_change" + parameters: + source: + map_from: + name: "network\\.(incoming|outgoing)\\.(bytes|packets)" + unit: "(B|packet)" + target: + map_to: + name: "network.\\1.\\2.rate" + unit: "\\1/s" + type: "gauge" + publishers: + - notifier:// + - name: contrail_sink + publishers: + - rpc:// + transformers: