<div dir="ltr">I won&#39;t force the technical decision, I don&#39;t think we necessarily need to separate Alerts and Metrics as 2 separate servers. I barely found examples where Metrics is needed without Alerting and vice-versa.<div><br></div><div>So whatever offer the best performance for the 2 together (and doesn&#39;t require a rewrite) would be great.<br><div><br></div><div>(Today we have Metrics only in OpenShift, but there are already requests to add alerting).</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 18, 2016 at 3:46 PM, Jay Shaughnessy <span dir="ltr">&lt;<a href="mailto:jshaughn@redhat.com" target="_blank">jshaughn@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <br>
    <font face="Calibri">It&#39;s possible the solution proposed by John
      should be the ultimate goal.  It has the advantage of creating a
      distribution of Metrics+Alerting while also solving an H Services
      performance issue.  But I don&#39;t really buy this argument which
      distills down to, &quot;what if there are bugs?&quot;.  And I don&#39;t really
      buy into John&#39;s argument that the JMS use in H Services has an
      inherent performance issue.  Without the full publishing of all
      metrics, and the subsequent filtering by alerting, I&#39;m sure it can
      handle what we throw at it and plenty more.  Finally, I don&#39;t
      really agree with Lucas that John&#39;s approach is a major
      architectural change, it presents a packaging issue and adds some
      integration code.  It doesn&#39;t propose removal of JMS/bus in H
      Services.<br>
      <br>
      So personally, I don&#39;t have an issue with PR-568 as an immediate
      solution to the existing performance issue.  </font><font face="Calibri"><font face="Calibri">I also don&#39;t mind if we close
        it and immediately implement John&#39;s approach as it potentially
        gives us two wins for the price of one.</font>  And I also don&#39;t
      mind if PR-568 is an interim solution if we decide to defer the
      co-packaging approach.  I think we need a decision from Heiko and
      Thomas as to how to proceed, and minimally, I appreciate that
      Lucas has been proactive in providing at least one solution.<br>
      <br>
    </font><div><div class="h5"><br>
    <div>On 8/17/2016 6:57 PM, Stefan Negrea
      wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">
        <div>One of the contentions that I have with PR-568 is that
          introduces more failures points for data prior to reaching
          Alerts. Publishing all data directly is a simple proposition:
          data comes in, is persisted to Cassandra, and at the same time
          sent via JMS. The PR introduces multiple additional failure
          points and a failure in the Metrics will go unnoticed. For
          example, what if the filtering mechanism all of a sudden
          crashed, what then? What if the data being filtered does not
          match the expectations from Alerts; as in Alerts requested
          data for a metric id to be sent but Metrics lost track of that
          and does not report data for that metric id.<br>
          <br>
        </div>
        Going back to the replies from Randall, in order for PR-568 to
        be an alternative to what is done today, we will need to design
        a lot of additional features to get the same level of delivery
        confidence and guarantee that we have today (without the PR).<br>
        <div>
          <div><br>
            <br>
            <a href="https://github.com/hawkular/hawkular-metrics/pull/568" target="_blank">https://github.com/hawkular/<wbr>hawkular-metrics/pull/568</a><br>
            <br>
          </div>
        </div>
      </div>
      <div class="gmail_extra"><br clear="all">
        <div>
          <div data-smartmail="gmail_signature">
            <div dir="ltr">
              <div>
                <div dir="ltr">Thank you,<br>
                  Stefan Negrea<br>
                  <br>
                </div>
              </div>
            </div>
          </div>
        </div>
        <br>
        <div class="gmail_quote">On Wed, Aug 17, 2016 at 4:45 PM, Jay
          Shaughnessy <span dir="ltr">&lt;<a href="mailto:jshaughn@redhat.com" target="_blank">jshaughn@redhat.com</a>&gt;</span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
            +1.  Although Randall is right, there is definitely a chance
            of<br>
            inconsistency between what is persisted and what is
            processed by<br>
            alerting, I think it&#39;s acceptable for our purposes.  In
            general users<br>
            have historically accepted that server downtime can result
            in missed<br>
            alerts.  Moreover, almost all of the alerting scenarios
            involve behavior<br>
            over time.<br>
            <div>
              <div><br>
                <br>
                On 8/17/2016 5:44 AM, Michael Burman wrote:<br>
                &gt; Hi,<br>
                &gt;<br>
                &gt; Storing to Cassandra and JMS is not atomic as
                Cassandra does not provide transactions and especially
                not 2PC. So they&#39;re two different writes and can always
                result in inconsistency, no matter the secondary
                transport protocol. Also, is alerts even capable of
                handling all the possible crash scenarios? And do we
                even care about such a small window of potential data
                loss to the alerting engine in the case of a crash
                (which will take down both metrics &amp; alerts on that
                node) ? We don&#39;t provide strict consistency with default
                metrics setting either, defaulting to one node
                acknowledges in Cassandra. There are multiple
                theoretical scenarios where we could in multi node
                scenario lose data or get inconsistencies.<br>
                &gt;<br>
                &gt; I think these are acceptable however for our use
                case. Even assuming we would lose one &quot;node down&quot;
                datapoint, that same situation probably persist for the
                next datapoint -&gt; alert triggers, if you lose one
                metric datapoint from a bucket the calculated averages
                or percentiles etc only suffer a minor precision
                imperfection. Not to mention that almost everything in
                monitoring is already a discrete information sampled at
                certain point of time and not a continuous real value,
                so precision is lost before it even arrives to us.<br>
                &gt;<br>
                &gt; For those reasons I&#39;d say these &quot;problems&quot; are more
                academical, without any real world implications in this
                domain.<br>
                &gt;<br>
                &gt;    - Micke<br>
                &gt;<br>
                &gt; ----- Original Message -----<br>
                &gt; From: &quot;Randall Hauch&quot; &lt;<a href="mailto:rhauch@redhat.com" target="_blank">rhauch@redhat.com</a>&gt;<br>
                &gt; To: &quot;Discussions around Hawkular development&quot; &lt;<a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a>&gt;<br>
                &gt; Sent: Tuesday, August 16, 2016 7:42:56 PM<br>
                &gt; Subject: Re: [Hawkular-dev] metrics on the bus<br>
                &gt;<br>
                &gt; I agree that the distributed system is probably
                more fault tolerant when using JMS than putting
                everything into a single app and forgoing JMS.<br>
                &gt;<br>
                &gt; BTW, does metrics write data to Cassandra and
                publish to JMS atomically? If not, that’s also a window
                for failure that might result in data loss. Something to
                consider if Hawkular requires complete consistency and
                can’t afford data loss.<br>
                &gt;<br>
                &gt;&gt; On Aug 16, 2016, at 11:08 AM, John Sanda &lt;<a href="mailto:jsanda@redhat.com" target="_blank">jsanda@redhat.com</a>&gt;
                wrote:<br>
                &gt;&gt;<br>
                &gt;&gt; With the JMS solution we have in place right
                now, data points are published after they have persisted
                in Cassandra. We can certainly keep that same behavior.<br>
                &gt;&gt;<br>
                &gt;&gt;&gt; On Aug 16, 2016, at 11:49 AM, Randall Hauch
                &lt;<a href="mailto:rhauch@redhat.com" target="_blank">rhauch@redhat.com</a>&gt;
                wrote:<br>
                &gt;&gt;&gt;<br>
                &gt;&gt;&gt; Sorry, I’ve been lurking. One thing to
                consider is how each approach handles failures. For
                example, what happens if the system crashes after
                processed by metrics but before alerts picks it up? Will
                the system become inconsistent or will some events be
                lost before alerts sees them?<br>
                &gt;&gt;&gt;<br>
                &gt;&gt;&gt; Really, in order for the system to be
                completely fault tolerant, each component has to be
                completely atomic. Components that use “dual writes”
                (e.g., write to one system, then write to another
                outside of a larger transaction) will always be subject
                to losing data/events during a very inopportune failure.
                Not only that, a system comprised of multiple components
                that individually are safe might still be subject to
                losing data/events.<br>
                &gt;&gt;&gt;<br>
                &gt;&gt;&gt; I hope this is helpful.<br>
                &gt;&gt;&gt;<br>
                &gt;&gt;&gt; Randall<br>
                &gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt; On Aug 16, 2016, at 10:25 AM, John
                Sanda &lt;<a href="mailto:jsanda@redhat.com" target="_blank">jsanda@redhat.com</a>&gt;
                wrote:<br>
                &gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt; I considered clustering before making
                the suggestion. MetricDataListener listens to a JMS
                topic for data points. When it receives data points, it
                passes those data points to AlertsEngine which in turn
                writes the data points into an ISPN, distributed cache.
                And then it looks like those data point get processed
                via a cache entry listener in AlertsEngineImpl. If I
                understand this data flow correctly, then I think it
                will work just as well if not better in a single WAR.
                Rather than getting notifications from a JMS topic,
                MetricDataListener can receive notifications from an
                Observable that pushes data point as they received in
                client requests. Metrics will also subscribe to that
                same Observable so that it can persist the data points.
                The fact that alerts is using a distributed cache works
                to our advantage here because it provides a mechanism
                for distributing data across nodes.<br>
                &gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt; On Aug 16, 2016, at 3:29 AM, Lucas
                Ponce &lt;<a href="mailto:lponce@redhat.com" target="_blank">lponce@redhat.com</a>&gt;
                wrote:<br>
                &gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt; This is a big point.<br>
                &gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt; I can see pros and cons on it.<br>
                &gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt; First thing it comes to me is that
                metrics has a stateless nature meanwhile alerts is
                stateful.<br>
                &gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt; So a first coupling would work for
                a single node but when we want to scale our troubles can
                start as the design in clustered scenarios is completely
                different and a single .war won&#39;t help IMO.<br>
                &gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt; I don&#39;t think our current design is
                bad, in the context of the HAWKULAR-1102 and working in
                a demand publishing draft we are addressing the business
                issues that triggered this discussion.<br>
                &gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt; But I would like to hold this topic
                for a future architecture face to face meeting, to
                discuss it from all angles as we did on Madrid.<br>
                &gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt; (Counting with a face to face
                meeting in a reasonable timeframe, of course).<br>
                &gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt; Lucas<br>
                &gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt; ----- Mensaje original -----<br>
                &gt;&gt;&gt;&gt;&gt;&gt; De: &quot;John Sanda&quot; &lt;<a href="mailto:jsanda@redhat.com" target="_blank">jsanda@redhat.com</a>&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt; Para: &quot;Discussions around
                Hawkular development&quot; &lt;<a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a>&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt; Enviados: Lunes, 15 de Agosto
                2016 16:45:28<br>
                &gt;&gt;&gt;&gt;&gt;&gt; Asunto: Re: [Hawkular-dev]
                metrics on the bus<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt; We use JMS in large part
                because metrics and alerts are in separate WARs (I<br>
                &gt;&gt;&gt;&gt;&gt;&gt; realize JMS is used for other
                purposes, but I am speaking strictly about<br>
                &gt;&gt;&gt;&gt;&gt;&gt; this scenario). Why not deploy
                metrics and alerts in the same WAR and<br>
                &gt;&gt;&gt;&gt;&gt;&gt; altogether bypass JMS? As data
                points are ingested, we broadcast them using<br>
                &gt;&gt;&gt;&gt;&gt;&gt; an Rx subject to which both
                metrics and alerts subscribe. We could do this<br>
                &gt;&gt;&gt;&gt;&gt;&gt; is in away that still keeps
                metrics and alerts decoupled as they are today.<br>
                &gt;&gt;&gt;&gt;&gt;&gt; We would also have the added
                benefit of having a stand alone deployment for<br>
                &gt;&gt;&gt;&gt;&gt;&gt; metrics and alerts.<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt; On Aug 10, 2016, at 9:37 AM,
                Jay Shaughnessy &lt; <a href="mailto:jshaughn@redhat.com" target="_blank">jshaughn@redhat.com</a>
                &gt; wrote:<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt; Yes, in fact I should have made
                it more clear that this whole discussion is<br>
                &gt;&gt;&gt;&gt;&gt;&gt; bounded by H Metrics and H
                Alerting in the H Services context, so limiting<br>
                &gt;&gt;&gt;&gt;&gt;&gt; this to HS/Bus integration code
                is what we&#39;d want to do.<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt; On 8/10/2016 4:06 AM, Heiko
                W.Rupp wrote:<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt; Someone remind me please.<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt; That bus-sender in/or
                hawkular-metrics is not an<br>
                &gt;&gt;&gt;&gt;&gt;&gt; internal detail of metrics, but
                rather sort of<br>
                &gt;&gt;&gt;&gt;&gt;&gt; &#39;external add-on&#39;?<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt; If so, the logic to filter (or
                create many subscriptions)<br>
                &gt;&gt;&gt;&gt;&gt;&gt; could go into it and would not
                touch the core metrics.<br>
                &gt;&gt;&gt;&gt;&gt;&gt; Metrics would (as it does
                today) forward all new data-<br>
                &gt;&gt;&gt;&gt;&gt;&gt; points into this sender and the
                sender can then decide<br>
                &gt;&gt;&gt;&gt;&gt;&gt; how to proceed.<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt; ______________________________<wbr>_________________<br>
                &gt;&gt;&gt;&gt;&gt;&gt; hawkular-dev mailing list <a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a><br>
                &gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailma<wbr>n/listinfo/hawkular-dev</a><br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt; ______________________________<wbr>_________________<br>
                &gt;&gt;&gt;&gt;&gt;&gt; hawkular-dev mailing list<br>
                &gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a><br>
                &gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailma<wbr>n/listinfo/hawkular-dev</a><br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt;&gt; ______________________________<wbr>_________________<br>
                &gt;&gt;&gt;&gt;&gt;&gt; hawkular-dev mailing list<br>
                &gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a><br>
                &gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailma<wbr>n/listinfo/hawkular-dev</a><br>
                &gt;&gt;&gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt;&gt; ______________________________<wbr>_________________<br>
                &gt;&gt;&gt;&gt;&gt; hawkular-dev mailing list<br>
                &gt;&gt;&gt;&gt;&gt; <a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a><br>
                &gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailma<wbr>n/listinfo/hawkular-dev</a><br>
                &gt;&gt;&gt;&gt;<br>
                &gt;&gt;&gt;&gt; ______________________________<wbr>_________________<br>
                &gt;&gt;&gt;&gt; hawkular-dev mailing list<br>
                &gt;&gt;&gt;&gt; <a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a><br>
                &gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailma<wbr>n/listinfo/hawkular-dev</a><br>
                &gt;&gt;&gt;<br>
                &gt;&gt;&gt; ______________________________<wbr>_________________<br>
                &gt;&gt;&gt; hawkular-dev mailing list<br>
                &gt;&gt;&gt; <a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a><br>
                &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailma<wbr>n/listinfo/hawkular-dev</a><br>
                &gt;&gt;<br>
                &gt;&gt; ______________________________<wbr>_________________<br>
                &gt;&gt; hawkular-dev mailing list<br>
                &gt;&gt; <a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a><br>
                &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailma<wbr>n/listinfo/hawkular-dev</a><br>
                &gt;<br>
                &gt; ______________________________<wbr>_________________<br>
                &gt; hawkular-dev mailing list<br>
                &gt; <a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a><br>
                &gt; <a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailma<wbr>n/listinfo/hawkular-dev</a><br>
                &gt;<br>
                &gt; ______________________________<wbr>_________________<br>
                &gt; hawkular-dev mailing list<br>
                &gt; <a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a><br>
                &gt; <a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailma<wbr>n/listinfo/hawkular-dev</a><br>
                <br>
                ______________________________<wbr>_________________<br>
                hawkular-dev mailing list<br>
                <a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a><br>
                <a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailma<wbr>n/listinfo/hawkular-dev</a><br>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>______________________________<wbr>_________________
hawkular-dev mailing list
<a href="mailto:hawkular-dev@lists.jboss.org" target="_blank">hawkular-dev@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/hawkular-dev</a>
</pre>
    </blockquote>
    <br>
  </div></div></div>

<br>______________________________<wbr>_________________<br>
hawkular-dev mailing list<br>
<a href="mailto:hawkular-dev@lists.jboss.org">hawkular-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/hawkular-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/hawkular-dev</a><br>
<br></blockquote></div><br></div>