)]}'
{"specs/juno/alarms-gnocchi-integration.rst":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2fdc9c6fa763607f3696f382c427402b362d048a","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"   a) altering entities to add an archive with the alarm evaluator\u0027s"},{"line_number":31,"context_line":"      desired granularity (breaks the data ownership principle, since alarm"},{"line_number":32,"context_line":"      evaluator does not own the entities)"},{"line_number":33,"context_line":"   b) tagging entities (still requires a search through the tags at each evaluation)"},{"line_number":34,"context_line":"   c) ..."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_7a3beae9","line":32,"updated":"2014-07-25 14:54:22.000000000","message":"An alternative idea I kicked around was to introduce EntityClasses, and support cross-aggregation over all the entities in a class.\n\n(An EntityClass might be created for example for all the instances in an autoscaling group)","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"7632025e589bacc44e4a05ee470f80402ea49fe9","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"   a) altering entities to add an archive with the alarm evaluator\u0027s"},{"line_number":31,"context_line":"      desired granularity (breaks the data ownership principle, since alarm"},{"line_number":32,"context_line":"      evaluator does not own the entities)"},{"line_number":33,"context_line":"   b) tagging entities (still requires a search through the tags at each evaluation)"},{"line_number":34,"context_line":"   c) ..."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_b9ee6d1f","line":32,"in_reply_to":"baada198_5030c554","updated":"2014-07-25 15:52:18.000000000","message":"Yeah, that\u0027s similar to my recollection of the counter-idea to EntityClasses that we agreed at mid-cycle in Paris:\n\n* separate archiving policies from entities, so that we can be sure when a number of entities are compatible from a cross-aggregation PoV (i.e. they all share an archiving policy)\n* add the equivalent to dimensional tags as strongly-typed resource attributes (e.g. server.group for instance to support autoscaling)\n* set those attributes on the resource when the first sample is seen with the corresponding metadata (assuming immuatble metadata, that would line up with resource creation by the ceilometer dispatcher)\n* allow the resource selection and cross-entity measures query to be combined in a single API call, e.g. GET /v1/resource/{server.group\u003dfoo}/entities/cpu_util, in which case the cross-entity aggregation is done within gnocchi","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"065737f2ae8f19cb876436eb7bbc34cf3c340a0a","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"   a) altering entities to add an archive with the alarm evaluator\u0027s"},{"line_number":31,"context_line":"      desired granularity (breaks the data ownership principle, since alarm"},{"line_number":32,"context_line":"      evaluator does not own the entities)"},{"line_number":33,"context_line":"   b) tagging entities (still requires a search through the tags at each evaluation)"},{"line_number":34,"context_line":"   c) ..."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_df34bafc","line":32,"in_reply_to":"baada198_57c4145f","updated":"2014-07-28 09:05:38.000000000","message":"Yeap, sifting through the resources to find the correct entities for each alarm was exactly what I wanted to avoid. So the compromise we discussed at mid-cycle was to allow the set of matching resources and their relevant entities to be identified via a *single* query: \n\n GET /v1/resource/{server.group\u003dfoo}/entities/cpu_util\n\n(so that, at least, the matching and cross-aggregation is done within gnocchi)","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"ae2acd13d8bc076538d94f3c1cad0acb69e68503","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"   a) altering entities to add an archive with the alarm evaluator\u0027s"},{"line_number":31,"context_line":"      desired granularity (breaks the data ownership principle, since alarm"},{"line_number":32,"context_line":"      evaluator does not own the entities)"},{"line_number":33,"context_line":"   b) tagging entities (still requires a search through the tags at each evaluation)"},{"line_number":34,"context_line":"   c) ..."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_5030c554","line":32,"in_reply_to":"baada198_7a3beae9","updated":"2014-07-25 15:18:48.000000000","message":"I think this is what we renamed to archiving policy right? and having the same being mandatory to do any kind of dynamic computing/aggregation over several entities?","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"bfe1f78fd5f2c8bc066674ff6940447bb8bb0576","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"   a) altering entities to add an archive with the alarm evaluator\u0027s"},{"line_number":31,"context_line":"      desired granularity (breaks the data ownership principle, since alarm"},{"line_number":32,"context_line":"      evaluator does not own the entities)"},{"line_number":33,"context_line":"   b) tagging entities (still requires a search through the tags at each evaluation)"},{"line_number":34,"context_line":"   c) ..."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_57c4145f","line":32,"in_reply_to":"baada198_b9ee6d1f","updated":"2014-07-28 07:03:51.000000000","message":"This would still be great to have for general queries, but for evaluating potentially tens of thousands of alarms over tens of thousands of resources, you still have to sift through the resources to find the correct entities for each alarm, every time you evaluate the alarms - as opposed to having the correct datapoints for each alarm in its one entity already.","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2fdc9c6fa763607f3696f382c427402b362d048a","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"*TL;DR*: This approach moves the processing and filtering to when the samples"},{"line_number":42,"context_line":"are ingested instead of when the alarm is evaluated and thus enables the alarms"},{"line_number":43,"context_line":"to be evaluated in near real-time AND provides wide-dimension alarming compatible"},{"line_number":44,"context_line":"with Gnocchi."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_3a2a527e","line":42,"updated":"2014-07-25 14:54:22.000000000","message":"I had to do a double-take on this paragraph after reading to the end, as I had wrongly assumed that the proposal was going to move the evaluation logic, as well as the filtering, into the ingestion path.\n\nSo it might make sense to make it clear in this paragraph that the evaluation logic will still be at arms-length, as it is now.","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"bfe1f78fd5f2c8bc066674ff6940447bb8bb0576","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"*TL;DR*: This approach moves the processing and filtering to when the samples"},{"line_number":42,"context_line":"are ingested instead of when the alarm is evaluated and thus enables the alarms"},{"line_number":43,"context_line":"to be evaluated in near real-time AND provides wide-dimension alarming compatible"},{"line_number":44,"context_line":"with Gnocchi."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_972cec4b","line":42,"in_reply_to":"baada198_3a2a527e","updated":"2014-07-28 07:03:51.000000000","message":"Will do.","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2fdc9c6fa763607f3696f382c427402b362d048a","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"*TL;DR*: This approach moves the processing and filtering to when the samples"},{"line_number":42,"context_line":"are ingested instead of when the alarm is evaluated and thus enables the alarms"},{"line_number":43,"context_line":"to be evaluated in near real-time AND provides wide-dimension alarming compatible"},{"line_number":44,"context_line":"with Gnocchi."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Let\u0027s leverage the TSDBaaS (Gnocchi) and have a separate entity for each alarm."}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_da2eb68c","line":43,"updated":"2014-07-25 14:54:22.000000000","message":"\"near real-time\"\n\n... wouldn\u0027t the alarm evaluator still be working off a periodic interval?","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"bfe1f78fd5f2c8bc066674ff6940447bb8bb0576","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"*TL;DR*: This approach moves the processing and filtering to when the samples"},{"line_number":42,"context_line":"are ingested instead of when the alarm is evaluated and thus enables the alarms"},{"line_number":43,"context_line":"to be evaluated in near real-time AND provides wide-dimension alarming compatible"},{"line_number":44,"context_line":"with Gnocchi."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Let\u0027s leverage the TSDBaaS (Gnocchi) and have a separate entity for each alarm."}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_7c457f99","line":43,"in_reply_to":"baada198_da2eb68c","updated":"2014-07-28 07:03:51.000000000","message":"Yes it would, poor choice of words on my part. I just wanted to say that an evaluation is no longer a time-consuming task, so if you have say ten thousand alarms, they can all be evaluated very quickly, within a small time frame.","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2fdc9c6fa763607f3696f382c427402b362d048a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"Let\u0027s leverage the TSDBaaS (Gnocchi) and have a separate entity for each alarm."},{"line_number":47,"context_line":"Each such entity would contain all the data points relevant to its alarm and would"},{"line_number":48,"context_line":"have an archive that would be set up according to the evaluation interval, alarm"},{"line_number":49,"context_line":"period and aggregation method."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"This simplifies the aforementioned process to:"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_7a5a0a83","line":49,"updated":"2014-07-25 14:54:22.000000000","message":"Note that currently all aggregation methods are supported for all archives in gnocchi ... i.e. there is no way currently to restrict the swift driver to only store pre-aggregated means, but not any of (median, min, max, sum, count, first, last etc.)","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"7632025e589bacc44e4a05ee470f80402ea49fe9","unresolved":false,"context_lines":[{"line_number":46,"context_line":"Let\u0027s leverage the TSDBaaS (Gnocchi) and have a separate entity for each alarm."},{"line_number":47,"context_line":"Each such entity would contain all the data points relevant to its alarm and would"},{"line_number":48,"context_line":"have an archive that would be set up according to the evaluation interval, alarm"},{"line_number":49,"context_line":"period and aggregation method."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"This simplifies the aforementioned process to:"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_594d513a","line":49,"in_reply_to":"baada198_708309cb","updated":"2014-07-25 15:52:18.000000000","message":"Yeah, that could be a neat optimization.","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"ae2acd13d8bc076538d94f3c1cad0acb69e68503","unresolved":false,"context_lines":[{"line_number":46,"context_line":"Let\u0027s leverage the TSDBaaS (Gnocchi) and have a separate entity for each alarm."},{"line_number":47,"context_line":"Each such entity would contain all the data points relevant to its alarm and would"},{"line_number":48,"context_line":"have an archive that would be set up according to the evaluation interval, alarm"},{"line_number":49,"context_line":"period and aggregation method."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"This simplifies the aforementioned process to:"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_708309cb","line":49,"in_reply_to":"baada198_7a5a0a83","updated":"2014-07-25 15:18:48.000000000","message":"We can do that if there\u0027s a point (and there might be).","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2fdc9c6fa763607f3696f382c427402b362d048a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"2. compare them with threshold"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Also, statistics for one period are calculated only once, whereas currently,if a"},{"line_number":57,"context_line":"period falls within multiple evaluations, its statistics are recalculated every time."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":".. You can skip the analogy if you want, it\u0027s not really necessary :-)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_ba84a2b1","line":57,"updated":"2014-07-25 14:54:22.000000000","message":"\"period falls within multiple evaluations\"\n\nSo that\u0027s an interesting point, and is a deliberate aspect of the current design ... i.e. the periods \"creep forward\" in time with each evaluation interval.\n\nThe motivation for doing that, as opposed to clamping the periods to wall-clock boundaries, is to avoid the leading period generally being under-specified.","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"bfe1f78fd5f2c8bc066674ff6940447bb8bb0576","unresolved":false,"context_lines":[{"line_number":54,"context_line":"2. compare them with threshold"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Also, statistics for one period are calculated only once, whereas currently,if a"},{"line_number":57,"context_line":"period falls within multiple evaluations, its statistics are recalculated every time."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":".. You can skip the analogy if you want, it\u0027s not really necessary :-)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_f7c9a8ab","line":57,"in_reply_to":"baada198_ba84a2b1","updated":"2014-07-28 07:03:51.000000000","message":"Right, I got carried away here. Note that even with a plain old statistics query the benefit of not having to search through the database still remains, you simply take the statistics of this one entity.\n\nBut there is plenty of space for optimization here in regard to how the statistics calculations are implemented in Gnocchi. Since we already keep aggregates of coarser granularities, they could be combined in a smart way to optimize the calculation (similar to what we discussed at the summit https://wiki.openstack.org/wiki/Ceilometer/AlarmEvaluatorJuno). But that\u0027s stuff for a different blueprint!","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2fdc9c6fa763607f3696f382c427402b362d048a","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"  When a sample arrives, the distributor walks through the decision tree and"},{"line_number":100,"context_line":"  gets a list of the alarms (their entities, rather) this sample is relevant to."},{"line_number":101,"context_line":"  It then pushes a new datapoint into those entities."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The decision tree is a multi-level map. The levels are as follows (TBD):"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_3586e365","line":101,"updated":"2014-07-25 14:54:22.000000000","message":"Are you concerned with the storage duplication here at all?\n\ne.g. the cpu_util samples for all the instances in an autoscaling group could be stored/aggregated 3 times:\n\n* once in the \"normal\" per-instance entity\n* once in the per-group entity for the \"high-water-mark\" alarm\n* once in the per-group entity for the \"how-water-mark\" alarm","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"bfe1f78fd5f2c8bc066674ff6940447bb8bb0576","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"  When a sample arrives, the distributor walks through the decision tree and"},{"line_number":100,"context_line":"  gets a list of the alarms (their entities, rather) this sample is relevant to."},{"line_number":101,"context_line":"  It then pushes a new datapoint into those entities."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The decision tree is a multi-level map. The levels are as follows (TBD):"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_774cb83f","line":101,"in_reply_to":"baada198_3586e365","updated":"2014-07-28 07:03:51.000000000","message":"I\u0027m not, since I was thinking of specifying a TTL on the alarm entities with respect to the alarm evaluation interval, period length and amount of periods. So the entity would only contain, say, the last \u003cnumber_of_periods\u003e*\u003cperiod_length\u003e seconds of datapoints.","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"065737f2ae8f19cb876436eb7bbc34cf3c340a0a","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"  When a sample arrives, the distributor walks through the decision tree and"},{"line_number":100,"context_line":"  gets a list of the alarms (their entities, rather) this sample is relevant to."},{"line_number":101,"context_line":"  It then pushes a new datapoint into those entities."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The decision tree is a multi-level map. The levels are as follows (TBD):"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_bf18e684","line":101,"in_reply_to":"baada198_774cb83f","updated":"2014-07-28 09:05:38.000000000","message":"A-ha, yes, a tight TTL on the alarm entities would indeed largely address the duplication issue.","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2fdc9c6fa763607f3696f382c427402b362d048a","unresolved":false,"context_lines":[{"line_number":110,"context_line":"The values stored are sets of entities for the sample to be pushed to. This"},{"line_number":111,"context_line":"would allow us very fast dispatch of relevant sample volumes to their respective"},{"line_number":112,"context_line":"alarm entities. This approach is feasible with the current state of metadata"},{"line_number":113,"context_line":"but would be even more performant if the metadata was more constrained."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"::"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_95e5ef0b","line":113,"updated":"2014-07-25 14:54:22.000000000","message":"\"the metadata was more constrained\"\n\nInterestingly, that is the emerging approach with gnocchi in general, i.e. strongly typed resources\n\n(e.g. instances versus images versus volumes, each with a well-defined set of attributes)","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"bfe1f78fd5f2c8bc066674ff6940447bb8bb0576","unresolved":false,"context_lines":[{"line_number":110,"context_line":"The values stored are sets of entities for the sample to be pushed to. This"},{"line_number":111,"context_line":"would allow us very fast dispatch of relevant sample volumes to their respective"},{"line_number":112,"context_line":"alarm entities. This approach is feasible with the current state of metadata"},{"line_number":113,"context_line":"but would be even more performant if the metadata was more constrained."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"::"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_37f400ce","line":113,"in_reply_to":"baada198_95e5ef0b","updated":"2014-07-28 07:03:51.000000000","message":"Yes, it would allow a much more optimized implementation.","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2fdc9c6fa763607f3696f382c427402b362d048a","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    |   RPC    | Alarm     |"},{"line_number":125,"context_line":"    |publisher | publisher |"},{"line_number":126,"context_line":"    |          |  (new)    |"},{"line_number":127,"context_line":"    +-----+----+------+----+"},{"line_number":128,"context_line":"      RPC |           |"},{"line_number":129,"context_line":"          v           +-----------+ RPC (horizontally scalable)"},{"line_number":130,"context_line":"    +----------+                  |"}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_957a4f23","line":127,"updated":"2014-07-25 14:54:22.000000000","message":"One interesting aspect of the Alarm publisher is that it would be possible to constrain the samples gathered for alarming purposes to some subset of the pipelines.\n\ne.g. only allow alarming on cpu_util","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"bfe1f78fd5f2c8bc066674ff6940447bb8bb0576","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    |   RPC    | Alarm     |"},{"line_number":125,"context_line":"    |publisher | publisher |"},{"line_number":126,"context_line":"    |          |  (new)    |"},{"line_number":127,"context_line":"    +-----+----+------+----+"},{"line_number":128,"context_line":"      RPC |           |"},{"line_number":129,"context_line":"          v           +-----------+ RPC (horizontally scalable)"},{"line_number":130,"context_line":"    +----------+                  |"}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_7763d8aa","line":127,"in_reply_to":"baada198_957a4f23","updated":"2014-07-28 07:03:51.000000000","message":"Yes, good idea!","commit_id":"bf88813299fbbee2ad6350423e3fd9b76a4a9110"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"f715f787b4a2dccc617fe1be5a366ae3f234affe","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"**IMPLEMENTATION DETAILS**"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"This change would be implemented with two new components."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"* *Alarm Publisher*"},{"line_number":95,"context_line":"  A new Ceilometer pipeline publisher, which publishes the samples to Alarm"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_82ac7b8a","line":92,"updated":"2014-07-29 08:55:45.000000000","message":"If the AlarmPublisher send Sample objects over RPC to the AlarmDistributor.\n\nI wonder why we need a AlarmPublisher and why the AlarmDistributor is not just Dispatcher ?\n\n\u003e Written by eglynn: One interesting aspect of the Alarm publisher is that it would be possible to constrain the samples gathered for alarming purposes to some subset of the pipelines. e.g. only allow alarming on cpu_util\n\nWhat do you think if we just add to the rpc publisher a topic param, so the pipeline can have: rpc://?topic\u003dalarming\nSo we can describe into the pipeline what are the meters we want to use for alarming purpose.\n\nNext, we can improve the collector to dispatch accordingly to the topic: (Note: we can already do that with a limitation of 1 collector \u003d\u003d 1 topic)\n\n    {\n        \u0027\u003cTOPIC\u003e\u0027: [\u0027dispatcher1\u0027, \u0027dispatcher2\u0027],\n        \u0027metering: [\u0027database\u0027, \u0027gnocchi\u0027],\n        \u0027alarming: [\u0027alarm_distributor\u0027],\n        \u0027logging\u0027: [\u0027file\u0027],\n    }","commit_id":"a1ae06c05f7cec266fafe176cd29cf4554cc666a"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"3a84ab2f361cf1669029f337c588fadd5215e124","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"**IMPLEMENTATION DETAILS**"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"This change would be implemented with two new components."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"* *Alarm Publisher*"},{"line_number":95,"context_line":"  A new Ceilometer pipeline publisher, which publishes the samples to Alarm"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_f84406ba","line":92,"in_reply_to":"baada198_82ac7b8a","updated":"2014-07-29 09:15:56.000000000","message":"I think the idea of using the RPC publisher with a configurable topic is great! The alarm publisher would in essence just publish to a different topic, true.\n\nI\u0027m not so sure about moving the distribution into the dispatcher, though. Since you implemented a separate storage logic for alarms, we have practically completely separated the alarms from the rest of Ceilometer. Putting alarm distributor into a dispatcher would tie the alarms back into core Ceilo, but I like the separation of concerns.\n\nIn addition, alarm distributor might be more resource-intensive than the rest of the collector\u0027s tasks, so I guess it would be good to be able to scale it out independently. About the YACA (yet another ceilometer agent) argument, we could merge evaluator \u0026 notifier into one agent, so we\u0027d still be left with barely 2 agents for alarming, which is practically nothing ;-)","commit_id":"a1ae06c05f7cec266fafe176cd29cf4554cc666a"}]}
