Add config to manipulate the pipeline.yaml

The configuration file /etc/ceilometer/pipeline.yaml will be managed by
juju, currently it is not. On every change of this file
ceilometer-collector daemon is restarted.

Change-Id: Ie18a5284812f4f698b929b9e17b34289e7732bf7
Closes-Bug: 1715672
This commit is contained in:
Felipe Reyes 2017-12-15 16:27:13 -03:00 committed by Edward Hope-Morley
parent 330de7baed
commit 6d66394482
9 changed files with 500 additions and 1 deletions

View File

@ -236,7 +236,7 @@ options:
type: boolean
default: False
description: |
Openstack mostly defaults to using public endpoints for
OpenStack mostly defaults to using public endpoints for
internal communication between services. If set to True this option
will configure services to use internal endpoints where possible.
remote-sink:
@ -249,3 +249,9 @@ options:
.
'udp://<host>:<port>/'
'prometheus://pushgateway-host:9091/metrics/job/openstack-telemetry'
pipeline-yaml:
type: string
default: ""
description: |
When set the content is written to /etc/ceilometer/pipeline.yaml, by
default the package's file is used.

View File

@ -121,6 +121,14 @@ class CeilometerServiceContext(OSContextGenerator):
return {}
class CeilometerPipelineContext(OSContextGenerator):
def __call__(self):
ctxt = {
'pipeline_yaml': config('pipeline-yaml')
}
return ctxt
class HAProxyContext(OSContextGenerator):
interfaces = ['ceilometer-haproxy']

View File

@ -28,6 +28,7 @@ from ceilometer_contexts import (
LoggingConfigContext,
MongoDBContext,
CeilometerContext,
CeilometerPipelineContext,
HAProxyContext,
MetricServiceContext,
CEILOMETER_PORT,
@ -68,6 +69,7 @@ from copy import deepcopy
HAPROXY_CONF = '/etc/haproxy/haproxy.cfg'
CEILOMETER_CONF_DIR = "/etc/ceilometer"
CEILOMETER_CONF = "%s/ceilometer.conf" % CEILOMETER_CONF_DIR
CEILOMETER_PIPELINE_YAML = "%s/pipeline.yaml" % CEILOMETER_CONF_DIR
CEILOMETER_API_SYSTEMD_CONF = (
'/etc/systemd/system/ceilometer-api.service.d/override.conf'
)
@ -178,6 +180,10 @@ CONFIG_FILES = OrderedDict([
'hook_contexts': [HAProxyContext()],
'services': ['ceilometer-api'],
}),
(CEILOMETER_PIPELINE_YAML, {
'hook_contexts': [CeilometerPipelineContext()],
'services': ['ceilometer-collector'],
}),
(HAPROXY_CONF, {
'hook_contexts': [context.HAProxyContext(singlenode_mode=True),
HAProxyContext()],

View File

@ -0,0 +1,87 @@
###############################################################################
## [ WARNING ]
## ceilometer configuration file maintained by Juju
## local changes may be overwritten.
################################################################################
{%- if pipeline_yaml -%}
{{ pipeline_yaml }}
{% else %}
---
sources:
- name: meter_source
interval: 600
meters:
- "*"
sinks:
- meter_sink
- name: cpu_source
interval: 600
meters:
- "cpu"
sinks:
- cpu_sink
- name: disk_source
interval: 600
meters:
- "disk.read.bytes"
- "disk.read.requests"
- "disk.write.bytes"
- "disk.write.requests"
sinks:
- disk_sink
- name: network_source
interval: 600
meters:
- "network.incoming.bytes"
- "network.incoming.packets"
- "network.outgoing.bytes"
- "network.outgoing.packets"
sinks:
- network_sink
sinks:
- name: meter_sink
transformers:
publishers:
- rpc://
- 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:
- rpc://
- name: disk_sink
transformers:
- name: "rate_of_change"
parameters:
source:
map_from:
name: "disk\\.(read|write)\\.(bytes|requests)"
unit: "(B|request)"
target:
map_to:
name: "disk.\\1.\\2.rate"
unit: "\\1/s"
type: "gauge"
publishers:
- rpc://
- 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:
- rpc://
{% endif %}

View File

@ -0,0 +1,91 @@
###############################################################################
### [ WARNING ]
### ceilometer configuration file maintained by Juju
### local changes may be overwritten.
#################################################################################
{%- if pipeline_yaml -%}
{{ pipeline_yaml }}
{% else %}
---
sources:
- name: meter_source
interval: 600
meters:
- "*"
sinks:
- meter_sink
- name: cpu_source
interval: 600
meters:
- "cpu"
sinks:
- cpu_sink
- name: disk_source
interval: 600
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: 600
meters:
- "network.incoming.bytes"
- "network.incoming.packets"
- "network.outgoing.bytes"
- "network.outgoing.packets"
sinks:
- network_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://
{% endif %}

View File

@ -0,0 +1,101 @@
###############################################################################
### [ WARNING ]
### ceilometer configuration file maintained by Juju
### local changes may be overwritten.
#################################################################################
{%- if pipeline_yaml -%}
{{ pipeline_yaml }}
{% else %}
---
sources:
- name: meter_source
interval: 600
meters:
- "*"
sinks:
- meter_sink
- name: cpu_source
interval: 600
meters:
- "cpu"
sinks:
- cpu_sink
- cpu_delta_sink
- name: disk_source
interval: 600
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: 600
meters:
- "network.incoming.bytes"
- "network.incoming.packets"
- "network.outgoing.bytes"
- "network.outgoing.packets"
sinks:
- network_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: cpu_delta_sink
transformers:
- name: "delta"
parameters:
target:
name: "cpu.delta"
growth_only: True
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://
{% endif %}

View File

@ -0,0 +1,98 @@
###############################################################################
### [ WARNING ]
### ceilometer configuration file maintained by Juju
### local changes may be overwritten.
#################################################################################
{%- if pipeline_yaml -%}
{{ pipeline_yaml }}
{% else %}
---
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:
- notifier://
- name: cpu_sink
transformers:
- name: "rate_of_change"
parameters:
target:
name: "cpu_util"
unit: "%"
type: "gauge"
max: 100
scale: "100.0 / (10**9 * (resource_metadata.cpu_number or 1))"
publishers:
- notifier://
- name: cpu_delta_sink
transformers:
- name: "delta"
parameters:
target:
name: "cpu.delta"
growth_only: True
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://
{% endif %}

View File

@ -0,0 +1,98 @@
###############################################################################
### [ WARNING ]
### ceilometer configuration file maintained by Juju
### local changes may be overwritten.
#################################################################################
{%- if pipeline_yaml -%}
{{ pipeline_yaml }}
{% else %}
---
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:
- gnocchi://
- name: cpu_sink
transformers:
- name: "rate_of_change"
parameters:
target:
name: "cpu_util"
unit: "%"
type: "gauge"
max: 100
scale: "100.0 / (10**9 * (resource_metadata.cpu_number or 1))"
publishers:
- gnocchi://
- name: cpu_delta_sink
transformers:
- name: "delta"
parameters:
target:
name: "cpu.delta"
growth_only: True
publishers:
- gnocchi://
- 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:
- gnocchi://
- 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:
- gnocchi://
{% endif %}

View File

@ -126,6 +126,8 @@ class CeilometerUtilsTest(CharmTestCase):
'ceilometer-alarm-notifier',
'ceilometer-alarm-evaluator',
'ceilometer-agent-notification'],
'/etc/ceilometer/pipeline.yaml': [
'ceilometer-collector'],
'/etc/systemd/system/ceilometer-api.service.d/override.conf': [
'ceilometer-api'],
'/etc/haproxy/haproxy.cfg': ['haproxy'],
@ -150,6 +152,8 @@ class CeilometerUtilsTest(CharmTestCase):
'ceilometer-collector',
'ceilometer-api',
'ceilometer-agent-notification'],
'/etc/ceilometer/pipeline.yaml': [
'ceilometer-collector'],
'/etc/systemd/system/ceilometer-api.service.d/override.conf': [
'ceilometer-api'],
'/etc/haproxy/haproxy.cfg': ['haproxy'],