Event To Sample Publisher

https://blueprints.launchpad.net/ceilometer/+spec/event-to-sample-publisher

Problem description

Bracket events like compute.instance.create.latency created from BP: Transformers for events pipeline https://blueprints.launchpad.net/ceilometer/+spec/events-pipeline-transformers need to be published and stored as sample.

The bracket events created from transformers in events pipeline are new events/metrics with any kind of latency time spans like time.instance.creation or time.instance.life that is a delta time between compute.instance.create.start/end, compute.instance.create.end/delete.end, etc.

Proposed change

Add a new notifier publisher and use this publisher in event transformer, when there is a new transformed event from events pipeline transformers, convert it to notification, send it back to ceilometer notification listener, the notification payload is generated from event traits, then the sample pipeline will convert and publish it into sample.

For example, for compute.instance.create.latency event, Firstly, add this publisher(for example: tosamplenotifier://) to sink in event transformer for this event

- name: instance_create_bracketer_sink
  transformers:
      - name: "bracket"
        parameters:
          ........
  publishers:
      - tosamplenotifier://

then, add meter schema in meters.yaml

- name: 'compute.instance.create.latency'
  event_type:
    - 'compute.instance.create.latency'
  type: 'gauge'
  unit: 's'
  volume: $.payload.latency
  user_id: $.payload.user_id
  project_id: $.payload.tenant_id
  resource_id: $.payload.instance_id
The notification payload send back to message bus is generated from event traits, will be like this ::

{‘latency’: 0.355098, ‘user_id’: u’0f1b1e94ec2045af9f49f9b7e1d6b409’, ‘service’: u’network.yuntong-ThinkStation’, ‘resource_id’: u’67d1c4b3-84aa-42d1-a857-2d1481fe21dd’, ‘tenant_id’: u’c8ce7938e38b4612a8b3daab441b804c’, ‘request_id’: u’req-597a85ec-ebab-492f-8288-b6b72fc476b5’, ‘project_id’: u’c8ce7938e38b4612a8b3daab441b804c’, ‘publisher_id’: ‘compute.yuntong-ThinkStation’}

and finally, the compute.instance.create.latency sample will be like this ::

Resource ID

Name

Type

Volume

Unit

Timestamp

e8e8adf5-8ba1-4247-b1af-1e8c928563e7

compute.instance.create.latency

gauge

7.133763

s

2015-09-16T07:04:58.540929

Alternatives

None.

Data model impact

None.

REST API impact

None.

Security impact

None.

Pipeline impact

This spec proposes additional publisher for event transformers in event_pipeline.yaml

Other end user impact

None.

Performance/Scalability Impacts

None

Other deployer impact

Configuration options in event_pipeline.yaml. Configuration options in meter.yaml.

Developer impact

None.

Implementation

Assignee(s)

Primary assignee:

yuntongjin

Ongoing maintainer:

yuntongjin

Work Items

  • Add a new publisher that will send the convert notification to sample listener.

Future lifecycle

None

Dependencies

Transformers for events pipeline https://review.openstack.org/#/c/162167/

Testing

  • Extend messaging publisher testing.

Documentation Impact

  • Capture new meters which from event brackelet transformers.

References

https://blueprints.launchpad.net/ceilometer/+spec/events-pipeline-transformers