# 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,
$package_ensure = 'present',
$manage_event_pipeline = false,
$event_pipeline_publishers = ['gnocchi://'],
+ $manage_pipeline = false,
+ $pipeline_publishers = ['gnocchi://'],
) {
include ::ceilometer::deps
}
}
+ 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;
$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 {
--- /dev/null
+---
+fixes:
+ - Add ability to configure pipeline yaml publishers. The default is
+ gnocchi. If you are using collector, override this param to
+ publisher:// instead.
) }
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({
--- /dev/null
+---
+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 -%>