DEPRECATED, Monasca Transform and Aggregation Engine
Go to file
gugug 326483ee4c Replace assertItemsEqual with assertCountEqual
assertItemsEqual was removed from Python's unittest.TestCase in
Python 3.3 [1][2]. We have been able to use them since then, because
testtools required unittest2, which still included it. With testtools
removing Python 2.7 support [3][4], we will lose support for
assertItemsEqual, so we should switch to use assertCountEqual.

[1] - https://bugs.python.org/issue17866
[2] - https://hg.python.org/cpython/rev/d9921cb6e3cd
[3] - testing-cabal/testtools#286
[4] - testing-cabal/testtools#277

Change-Id: I67ec6c5ea47b927e2ef44864afa9313e0956a90b
2020-07-12 11:26:07 +08:00
devstack do not set INFLUXDB_VERSION 2019-07-11 10:24:40 +02:00
doc/source Cleanup py27 support 2020-04-05 11:36:39 +02:00
docs Remove service_id from pre-transform spec 2018-07-17 15:39:24 -07:00
etc Set region in metric meta from config file 2018-03-27 16:47:46 -07:00
monasca_transform Update hacking version to latest 2019-06-12 13:22:41 +05:30
releasenotes/notes [ussuri][goal] Drop python 2.7 support and testing 2019-11-16 16:53:37 +00:00
scripts Enhanced refresh monasca transform script 2017-04-19 17:16:50 -07:00
tests Replace assertItemsEqual with assertCountEqual 2020-07-12 11:26:07 +08:00
tools/vagrant Replace git.openstack.org URLs with opendev.org URLs 2019-04-24 16:50:05 +00:00
.gitignore Add *.pyc files to .gitignore 2020-05-13 06:03:23 -05:00
.gitreview OpenDev Migration Patch 2019-04-19 19:28:05 +00:00
.stestr.conf Switch to using stestr 2018-06-29 09:45:40 +02:00
.zuul.yaml Add Python3 victoria unit tests 2020-04-23 21:29:06 +00:00
LICENSE monasca-transform initial commit 2016-05-26 00:10:37 +00:00
README.rst Update links in README 2018-09-07 12:57:34 -07:00
lower-constraints.txt Use unittest.mock instead of third party mock 2020-05-13 06:01:39 -05:00
requirements.txt Updated from global requirements 2018-05-04 11:48:45 -07:00
setup.cfg Cleanup py27 support 2020-04-05 11:36:39 +02:00
setup.py Cleanup py27 support 2020-04-05 11:36:39 +02:00
test-requirements.txt Use unittest.mock instead of third party mock 2020-05-13 06:01:39 -05:00
tox.ini [ussuri][goal] Drop python 2.7 support and testing 2019-11-16 16:53:37 +00:00

README.rst

Team and repository tags

image

Monasca Transform

monasca-transform is a data driven aggregation engine which collects, groups and aggregates existing individual Monasca metrics according to business requirements and publishes new transformed (derived) metrics to the Monasca Kafka queue.

  • Since the new transformed metrics are published as any other metric in Monasca, alarms can be set and triggered on the transformed metric.
  • Monasca Transform uses Apache Spark to aggregate data. Apache Spark is a highly scalable, fast, in-memory, fault tolerant and parallel data processing framework. All monasca-transform components are implemented in Python and use Sparks PySpark Python API to interact with Spark.
  • Monasca Transform does transformation and aggregation of incoming metrics in two phases.
    • In the first phase spark streaming application is set to retrieve in data from kafka at a configurable stream interval (default stream_inteval is 10 minutes) and write the data aggregated for stream interval to pre_hourly_metrics topic in kafka.
    • In the second phase, which is kicked off every hour, all metrics in metrics_pre_hourly topic in Kafka are aggregated again, this time over a larger interval of an hour. These hourly aggregated metrics published to metrics topic in kafka.

Use Cases handled by Monasca Transform

Please refer to Problem Description section on the Monasca/Transform wiki

Operation

Please refer to How Monasca Transform Operates section on the Monasca/Transform wiki

Architecture

Please refer to Architecture and Logical processing data flow sections on the Monasca/Transform wiki

To set up the development environment

The monasca-transform uses DevStack as a common dev environment. See the README.md in the devstack directory for details on how to include monasca-transform in a DevStack deployment.

Generic aggregation components

Monasca Transform uses a set of generic aggregation components which can be assembled in to an aggregation pipeline.

Please refer to the generic-aggregation-components document for information on list of generic aggregation components available.

Create a new aggregation pipeline example

Generic aggregation components make it easy to build new aggregation pipelines for different Monasca metrics.

This create a new aggregation pipeline example shows how to create pre_transform_specs and transform_specs to create an aggregation pipeline for a new set of Monasca metrics, while leveraging existing set of generic aggregation components.

Original proposal and blueprint

Original proposal: Monasca/Transform-proposal

Blueprint: monasca-transform blueprint