Manage /etc/ceilometer/polling.yaml

This adds management of /etc/ceilometer/polling.yaml which defines which metrics
to poll and how often. This pulls in the default configuration which the same
for both RHEL and Ubuntu and adds two new attributes for configuring the file.

In addition, restart various services related to the configuration file.

Change-Id: I69ed0a8933a971d9cac20dbd4133197a7e4274af
Signed-off-by: Lance Albertson <lance@osuosl.org>
This commit is contained in:
Lance Albertson 2019-10-24 09:45:25 -07:00
parent e0a39ccaf1
commit 6acdec9117
10 changed files with 109 additions and 0 deletions

View File

@ -71,6 +71,34 @@ default['openstack']['aodh']['service_role'] = 'admin'
default['openstack']['telemetry_metric']['gnocchi-upgrade-options'] = ''
# Configuration for /etc/ceilometer/polling.yaml
default['openstack']['telemetry']['polling']['interval'] = 300
default['openstack']['telemetry']['polling']['meters'] =
%w(
cpu
cpu_l3_cache
memory.usage
network.incoming.bytes
network.incoming.packets
network.outgoing.bytes
network.outgoing.packets
disk.device.read.bytes
disk.device.read.requests
disk.device.write.bytes
disk.device.write.requests
hardware.cpu.util
hardware.memory.used
hardware.memory.total
hardware.memory.buffer
hardware.memory.cached
hardware.memory.swap.avail
hardware.memory.swap.total
hardware.system_stats.io.outgoing.blocks
hardware.system_stats.io.incoming.blocks
hardware.network.ip.incoming.datagrams
hardware.network.ip.outgoing.datagrams
)
%w(telemetry telemetry_metric aodh).each do |ts|
# specify whether to enable SSL for ceilometer API endpoint
default['openstack'][ts]['ssl']['enabled'] = false

View File

@ -32,5 +32,6 @@ end
service 'ceilometer-agent-central' do
service_name platform['agent_central_service']
subscribes :restart, "template[#{node['openstack']['telemetry']['conf_file']}]"
subscribes :restart, "template[#{::File.join(node['openstack']['telemetry']['conf_dir'], 'polling.yaml')}]"
action [:enable, :start]
end

View File

@ -32,5 +32,6 @@ end
service 'ceilometer-agent-compute' do
service_name platform['agent_compute_service']
subscribes :restart, "template[#{node['openstack']['telemetry']['conf_file']}]"
subscribes :restart, "template[#{::File.join(node['openstack']['telemetry']['conf_dir'], 'polling.yaml')}]"
action [:enable, :start]
end

View File

@ -31,5 +31,6 @@ end
service 'ceilometer-agent-notification' do
service_name platform['agent_notification_service']
subscribes :restart, "template[#{node['openstack']['telemetry']['conf_file']}]"
subscribes :restart, "template[#{::File.join(node['openstack']['telemetry']['conf_dir'], 'polling.yaml')}]"
action [:enable, :start]
end

View File

@ -103,3 +103,14 @@ template node['openstack']['telemetry']['conf_file'] do
service_config: ceilometer_conf_options
)
end
template ::File.join(node['openstack']['telemetry']['conf_dir'], 'polling.yaml') do
source 'polling.yaml.erb'
owner node['openstack']['telemetry']['user']
group node['openstack']['telemetry']['group']
mode 0o0640
variables(
interval: node['openstack']['telemetry']['polling']['interval'],
meters: node['openstack']['telemetry']['polling']['meters']
)
end

View File

@ -24,6 +24,9 @@ describe 'openstack-telemetry::agent-central' do
it 'subscribes to its config file' do
expect(chef_run.service('ceilometer-agent-central')).to subscribe_to('template[/etc/ceilometer/ceilometer.conf]').delayed
end
it 'subscribes to /etc/ceilometer/polling.yaml' do
expect(chef_run.service('ceilometer-agent-central')).to subscribe_to('template[/etc/ceilometer/polling.yaml]').delayed
end
end
end
end

View File

@ -24,6 +24,9 @@ describe 'openstack-telemetry::agent-compute' do
it 'subscribes to its config file' do
expect(chef_run.service('ceilometer-agent-compute')).to subscribe_to('template[/etc/ceilometer/ceilometer.conf]').delayed
end
it 'subscribes to /etc/ceilometer/polling.yaml' do
expect(chef_run.service('ceilometer-agent-compute')).to subscribe_to('template[/etc/ceilometer/polling.yaml]').delayed
end
end
end
end

View File

@ -24,6 +24,9 @@ describe 'openstack-telemetry::agent-notification' do
it 'subscribes to its config file' do
expect(chef_run.service('ceilometer-agent-notification')).to subscribe_to('template[/etc/ceilometer/ceilometer.conf]').delayed
end
it 'subscribes to /etc/ceilometer/polling.yaml' do
expect(chef_run.service('ceilometer-agent-notification')).to subscribe_to('template[/etc/ceilometer/polling.yaml]').delayed
end
end
end
end

View File

@ -28,6 +28,55 @@ describe 'openstack-telemetry::common' do
expect(chef_run).to upgrade_package 'ceilometer-common'
end
describe '/etc/ceilometer/polling.yaml' do
polling_yaml = <<-EOL
# This file is automatically generated by Chef
# Any changes will be overwritten
---
sources:
- name: some_pollsters
internal: 300
meters:
- cpu
- cpu_l3_cache
- memory.usage
- network.incoming.bytes
- network.incoming.packets
- network.outgoing.bytes
- network.outgoing.packets
- disk.device.read.bytes
- disk.device.read.requests
- disk.device.write.bytes
- disk.device.write.requests
- hardware.cpu.util
- hardware.memory.used
- hardware.memory.total
- hardware.memory.buffer
- hardware.memory.cached
- hardware.memory.swap.avail
- hardware.memory.swap.total
- hardware.system_stats.io.outgoing.blocks
- hardware.system_stats.io.incoming.blocks
- hardware.network.ip.incoming.datagrams
- hardware.network.ip.outgoing.datagrams
EOL
it do
expect(chef_run).to create_template('/etc/ceilometer/polling.yaml')
.with(
source: 'polling.yaml.erb',
owner: 'ceilometer',
group: 'ceilometer',
mode: 0o0640
)
end
it do
expect(chef_run).to render_file('/etc/ceilometer/polling.yaml').with_content(polling_yaml)
end
end
describe '/etc/ceilometer' do
let(:dir) { chef_run.directory('/etc/ceilometer') }

View File

@ -0,0 +1,9 @@
<%= node['openstack']['common']['custom_template_banner'] %>
---
sources:
- name: some_pollsters
internal: <%= @interval %>
meters:
<% @meters.each do |meter| -%>
- <%= meter %>
<% end -%>