[openstack-dev] [all] how to send messages (and events) to our users
Ryan Brown
rybrown at redhat.com
Wed Apr 8 12:42:07 UTC 2015
On 04/07/2015 02:34 PM, Sandy Walsh wrote:
>
>> Tooling in general seems to be moving towards richer event data as well.
>> The logging tools (Loggly/Logstash/PaperTrail/zillions of others) are
>> intended to take your unstructured logs and turn them into events, so
>> why not have Heat output structured events that we can present to the
>> user with Ceilometer rather than sending log lines (through syslog or
>> otherwise) and using tooling to reassemble them into events later.
>
> The trend in the monitoring space seems to be:
>
> 1. Alarms are issued from Metrics as Events.
> (events can issue alarms too, but conventional alarming is metric based)
> 2. Multiple events are analyzed to produce Metrics (stream processing)
> 3. Go to Step 1
>
Indeed. I sort of envisioned heat sending out events that are then
consumed both as metrics and by the user (where appropriate). In
StackTach I can see that being implemented as
/--> resource events ----> other tools
Heat --> Winchester ---> notifications stream ------> user
\--> metrics stream --> alerts --/
>> TL;DR: I think what we really want is a place to send and react to
>> *events*. Logs are a way to do that, of course, but the Ceilometer way
>> sounds pretty attractive.
>
> The difference is structured vs. unstructured data. Elasticsearch-based
> solutions tend to ignore structure by looking at keywords. Some solutions,
> like TopLog, infer a structure by gleaning regexs from logs.
>
> Events start as structured data. More so, we're looking at establishing
> AVRO-based schema definitions on top of these events (slow progress).
Yeah, I'd really like to have a schema for Heat events so we can have a
single event stream and repackage events for different consumption goals
(metrics, notifications, programmatic interaction, etc).
> If anything we should consider changing the logging library to use structured
> messages. Specifically:
>
> log("The %(foo)s did %(thing)s" % {'foo':'x', 'thing':'action'})
> it would be
> log({'message':"The %(foo)s did %(thing)s", 'foo':'x', 'thing':'action'})
>
> Which can still be formatted for conventional logs, but also sent as a
> notification or as a higher-level structure to things like ES, TopLog, etc.
> The driver can decide.
>
>> * CloudWatch has you send unstructured log messages, then build filters
>> to parse them into quantifiable events, then set alarms on those metrics.
>
> Having to build filters is a relatively error-prone approach compared to the
> methods described above.
I wasn't saying *we* should do the unstructured message + regex filters
strategy, I was just pointing out the CW solution for folks who hadn't
used it.
>>> [snip]
>
> The Fujitsu team have already added logging support to Monasca (with an
> elasticsearch backend) and HP is currently adding StackTach.v3 support for
> notification->event conversion as well as our Winchester event stream
> processing engine. Also, this is based on Kafka vs. RabbitMQ, which has better
> scaling characteristics for this kind of data.
Oooh, I'll have a look into that, Kafka as an event bus sounds like a
good fit. I have the same concern Angus voiced earlier about Zaqar
though. What's the deployment of StackTach.v3 across OpenStack
installations? Is it mostly deployed for Helion/Rackspace, or are
smaller deployers using it as well?
>
>> This could be extended to richer JSON events that include the stack,
>> resources affected in the update, stats like "num-deleted-resources" or
>> "num-replaced-resources", autoscaling actions, and info about stack errors.
>
> Some of these sound more like a metrics than notifications. We should be
> careful not to misuse the two.
I think they're events, and have facets that are quantifiable as metrics
(num-replaced-resources on an update action) and that should be
user-visible (update is complete, or autoscaling actions taken).
>> Is there a way for users as-is to view those raw notifications, not just
>> the indexed k/v pairs?
>
> In StackTach.v3 we ship the raw notifications to HDFS for archiving, but
> expose the reduced event via the API. The message-id links the two.
>
> Lots more here: http://www.stacktach.com
Thanks! I'll have to read up.
--
Ryan Brown / Software Engineer, Openstack / Red Hat, Inc.
More information about the OpenStack-dev
mailing list