Browse Source

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
changes/01/446801/5
Pradeep Kilambi 5 years ago
parent
commit
347140eca0
  1. 24
      manifests/agent/notification.pp
  2. 1
      manifests/params.pp
  3. 5
      releasenotes/notes/configure-pipeline-8cc371e4af193f1d.yaml
  4. 17
      spec/classes/ceilometer_agent_notification_spec.rb
  5. 98
      templates/pipeline.yaml.erb

24
manifests/agent/notification.pp

@ -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;

1
manifests/params.pp

@ -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 {

5
releasenotes/notes/configure-pipeline-8cc371e4af193f1d.yaml

@ -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.

17
spec/classes/ceilometer_agent_notification_spec.rb

@ -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({

98
templates/pipeline.yaml.erb

@ -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 -%>
Loading…
Cancel
Save