Add support to configure publisher in pipeline.yaml

pipeline yaml defaults to gnocchi publisher. This wont work
if collector(which is deprecated) is still being used. This
should be set to notifier:// instead. So lets make this
configurable.

Change-Id: I242642035c3d3d6e814f54bcd2d1e15c3a53120b
This commit is contained in:
Pradeep Kilambi 2017-03-16 15:45:45 -04:00
parent bd1ebe015f
commit 347140eca0
5 changed files with 145 additions and 0 deletions

View File

@ -67,6 +67,16 @@
# for alarms.
# Defaults to ['gnocchi://'],
#
# [*manage_pipeline*]
# (Optional) Whether to manage pipeline.yaml
# Defaults to false
#
# [*pipeline_publishers*]
# (Optional) A list of publishers to put in pipeline.yaml.
# By default all the data is dispatched to gnocchi
# Defaults to ['gnocchi://'], If you are using collector
# override this to notifier:// instead.
#
class ceilometer::agent::notification (
$manage_service = true,
$enabled = true,
@ -78,6 +88,8 @@ class ceilometer::agent::notification (
$package_ensure = 'present',
$manage_event_pipeline = false,
$event_pipeline_publishers = ['gnocchi://'],
$manage_pipeline = false,
$pipeline_publishers = ['gnocchi://'],
) {
include ::ceilometer::deps
@ -119,6 +131,18 @@ class ceilometer::agent::notification (
}
}
if ($manage_pipeline) {
validate_array($pipeline_publishers)
file { 'pipeline':
ensure => present,
path => $::ceilometer::params::pipeline,
content => template('ceilometer/pipeline.yaml.erb'),
selinux_ignore_defaults => true,
tag => 'pipeline',
}
}
ceilometer_config {
'notification/ack_on_event_error' : value => $ack_on_event_error;
'notification/store_events' : value => $store_events;

View File

@ -10,6 +10,7 @@ class ceilometer::params {
$expirer_command = 'ceilometer-expirer'
$user = 'ceilometer'
$event_pipeline = '/etc/ceilometer/event_pipeline.yaml'
$pipeline = '/etc/ceilometer/pipeline.yaml'
$client_package_name = 'python-ceilometerclient'
case $::osfamily {

View File

@ -0,0 +1,5 @@
---
fixes:
- Add ability to configure pipeline yaml publishers. The default is
gnocchi. If you are using collector, override this param to
publisher:// instead.

View File

@ -171,6 +171,23 @@ describe 'ceilometer::agent::notification' do
) }
it { is_expected.not_to contain_file('event_pipeline') }
end
context "with pipeline management enabled" do
before { params.merge!(
:manage_pipeline => true
) }
it { is_expected.to contain_file('pipeline').with(
'path' => '/etc/ceilometer/pipeline.yaml',
) }
end
context "with pipeline management disabled" do
before { params.merge!(
:manage_pipeline => false
) }
it { is_expected.not_to contain_file('pipeline') }
end
end
on_supported_os({

View File

@ -0,0 +1,98 @@
---
sources:
- name: meter_source
meters:
- "*"
sinks:
- meter_sink
- name: cpu_source
meters:
- "cpu"
sinks:
- cpu_sink
- cpu_delta_sink
- name: disk_source
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
meters:
- "network.incoming.bytes"
- "network.incoming.packets"
- "network.outgoing.bytes"
- "network.outgoing.packets"
sinks:
- network_sink
sinks:
- name: meter_sink
transformers:
publishers:
<% @pipeline_publishers.each do |publisher| -%>
- <%= publisher %>
<% end -%>
- 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:
<% @pipeline_publishers.each do |publisher| -%>
- <%= publisher %>
<% end -%>
- name: cpu_delta_sink
transformers:
- name: "delta"
parameters:
target:
name: "cpu.delta"
growth_only: True
publishers:
<% @pipeline_publishers.each do |publisher| -%>
- <%= publisher %>
<% end -%>
- 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:
<% @pipeline_publishers.each do |publisher| -%>
- <%= publisher %>
<% end -%>
- 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:
<% @pipeline_publishers.each do |publisher| -%>
- <%= publisher %>
<% end -%>