<div dir="ltr">Looks amazing!<div><br></div><div>Just adding a screenshot so people will see how nice it is :) [1]</div><div><br></div><div>[1] <a href="http://graphite.phx.ovirt.org/dashboard/snapshot/qvdhPL34HoUpygGldklmT5uLUnRyj19E">http://graphite.phx.ovirt.org/dashboard/snapshot/qvdhPL34HoUpygGldklmT5uLUnRyj19E</a><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 18, 2016 at 10:36 AM, David Caro <span dir="ltr">&lt;<a href="mailto:dcaro@redhat.com" target="_blank">dcaro@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"><span class="">On 04/17 23:55, Nadav Goldin wrote:<br>
&gt; &gt;<br>
&gt; &gt; I think that will change a lot per-project basis, if we can get that info<br>
&gt; &gt; per<br>
&gt; &gt; job, with grafana then we can aggregate and create secondary stats (like<br>
&gt; &gt; bilds<br>
&gt; &gt; per hour as you say).<br>
&gt; &gt; So I&#39;d say just to collect the &#39;bare&#39; data, like job built event, job<br>
&gt; &gt; ended,<br>
&gt; &gt; duration and such.<br>
&gt;<br>
&gt; agree. will need to improve that, right now it &#39;pulls&#39; each X seconds via<br>
&gt; the CLI,<br>
&gt; instead of Jenkins sending the events, so it is limited to what the CLI can<br>
&gt; provide and not that efficient. I plan to install [1] and do the opposite<br>
&gt; (Jenkins will send a POST request with the data on each build<br>
&gt; event and then it would be sent to graphite)<br>
<br>
</span>Amarchuk had already some ideas on integrating collectd with jenkins, imo that<br>
will work well for &#39;master&#39; related stats and more difficult for others like<br>
job started, etc. but worth looking at it<br>
<span class=""><br>
&gt;<br>
&gt; Have you checked the current ds fabric checks?<br>
&gt; &gt; There are already a bunch of fabric tasks that monitor jenkins, if we<br>
&gt; &gt; install<br>
&gt; &gt; the nagiosgraph (see ds for details) to send the nagios performance data<br>
&gt; &gt; into<br>
&gt; &gt; graphite, we can use them as is to also start alarms and such<br>
&gt; &gt;<br>
&gt; Icinga2 has integrated graphite support, so after the upgrade we will<br>
&gt; get all of our alarms data sent to graphite &#39;out-of-the-box&#39;.<br>
<br>
</span>+1!<br>
<span class=""><br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt;     dcaro@akhos$ fab -l | grep nagi<br>
&gt; &gt;     do.jenkins.nagios.check_build_load                      Checks if the<br>
&gt; &gt; bui...<br>
&gt; &gt;     do.jenkins.nagios.check_executors                       Checks if the<br>
&gt; &gt; exe...<br>
&gt; &gt;     do.jenkins.nagios.check_queue                           Check if the<br>
&gt; &gt; buil...<br>
&gt; &gt;     do.provision.nagios_check                               Show a summary<br>
&gt; &gt; of...<br>
&gt; &gt;<br>
&gt; &gt; Though those will not give you the bare data (were designed with nagios in<br>
&gt; &gt; mind, not graphite so they are just checks, the stats were added later)<br>
&gt; &gt;<br>
&gt; &gt; There&#39;s also a bunch of helpers functions to create nagios checks too.<br>
&gt; &gt;<br>
&gt;<br>
&gt; cool, wasn&#39;t aware of those fabric checks.<br>
&gt; I think for simple metrics(loads and such) we could use that(i.e. query<br>
&gt; Jenkins from fabric)<br>
&gt; but for more complicated queries we&#39;d need to query graphite itself,<br>
&gt; with this[2] I could create scripts that query graphite and trigger Icinga<br>
&gt; alerts.<br>
&gt; such as: calculate the &#39;expected&#39; slaves load for the next hour(in graphite)<br>
&gt; and then:<br>
&gt; Icinga queries graphite -&gt; triggers another Icinga alert -&gt; triggers custom<br>
&gt; script(such as<br>
&gt; fab task to create slaves)<br>
<br>
</span>I&#39;d be careful with the reactions for now, but yes, that&#39;s great.<br>
<div class="HOEnZb"><div class="h5"><br>
&gt;<br>
&gt; for now, added two more metrics: top 10 jobs in past X time, and<br>
&gt; avg number of builds running / builds waiting in queue in the past X time.<br>
&gt; some metrics might &#39;glitch&#39; from time to time as there is not a lot of data<br>
&gt; yet<br>
&gt; and it mainly counts integer values while graphite is oriented towards<br>
&gt; floats, so the data has to be smoothed(usually with movingAverage())<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; [1]<br>
&gt; <a href="https://wiki.jenkins-ci.org/display/JENKINS/Statistics+Notification+Plugin" rel="noreferrer" target="_blank">https://wiki.jenkins-ci.org/display/JENKINS/Statistics+Notification+Plugin</a><br>
&gt; [2] <a href="https://github.com/klen/graphite-beacon" rel="noreferrer" target="_blank">https://github.com/klen/graphite-beacon</a><br>
&gt;<br>
&gt; On Fri, Apr 15, 2016 at 9:39 AM, David Caro &lt;<a href="mailto:dcaro@redhat.com">dcaro@redhat.com</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; On 04/15 01:24, Nadav Goldin wrote:<br>
&gt; &gt; &gt; Hi,<br>
&gt; &gt; &gt; I&#39;ve created an experimental dashboard for Jenkins at our Grafana<br>
&gt; &gt; instance:<br>
&gt; &gt; &gt; <a href="http://graphite.phx.ovirt.org/dashboard/db/jenkins-monitoring" rel="noreferrer" target="_blank">http://graphite.phx.ovirt.org/dashboard/db/jenkins-monitoring</a><br>
&gt; &gt; &gt; (if you don&#39;t have an account, you can enrol with github/google)<br>
&gt; &gt;<br>
&gt; &gt; Nice! \o/<br>
&gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; currently it collects the following metrics:<br>
&gt; &gt; &gt; 1) How many jobs in the Build Queue are waiting per slaves&#39; label:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; for instance: if there are 4 builds of a job that is restricted to &#39;el7&#39;<br>
&gt; &gt; &gt; and 2 builds of another job<br>
&gt; &gt; &gt; which is restricted to &#39;el7&#39; in the build queue we will see 6 for &#39;el7&#39;<br>
&gt; &gt; in<br>
&gt; &gt; &gt; the first graph.<br>
&gt; &gt; &gt; &#39;No label&#39; sums jobs which are waiting but are unrestricted.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; 2) How many slaves are idle per label.<br>
&gt; &gt; &gt; note that the slave&#39;s labels are contained in the job&#39;s labels, but not<br>
&gt; &gt; &gt; vice versa, as<br>
&gt; &gt; &gt; we allow regex expressions such as (fc21 || fc22 ). right now it treats<br>
&gt; &gt; &gt; them as simple<br>
&gt; &gt; &gt; strings.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; 3) Total number of online/offline/idle slaves<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; besides the normal monitoring, it can help us:<br>
&gt; &gt; &gt; 1) minimize the difference between &#39;idle&#39; slaves per label and jobs<br>
&gt; &gt; waiting<br>
&gt; &gt; &gt; in the build queue per label.<br>
&gt; &gt; &gt; this might be caused by unnecessary restrictions on the label, or maybe<br>
&gt; &gt; by<br>
&gt; &gt; &gt; the<br>
&gt; &gt; &gt; &#39;Throttle Concurrent Builds&#39; plugin.<br>
&gt; &gt; &gt; 2) decide how many VMs and which OS to install on the new hosts.<br>
&gt; &gt; &gt; 3) in the future, once we have the &#39;slave pools&#39; implemented, we could<br>
&gt; &gt; &gt; implement<br>
&gt; &gt; &gt; auto-scaling based on thresholds or some other function.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &#39;experimental&#39; - as it still needs to be tested for stability(it is based<br>
&gt; &gt; &gt; on python-jenkins<br>
&gt; &gt; &gt; and graphite-send) and also more metrics can be added(maybe avg running<br>
&gt; &gt; time<br>
&gt; &gt; &gt; per job? builds per hour? ) - will be happy to hear.<br>
&gt; &gt;<br>
&gt; &gt; I think that will change a lot per-project basis, if we can get that info<br>
&gt; &gt; per<br>
&gt; &gt; job, with grafana then we can aggregate and create secondary stats (like<br>
&gt; &gt; bilds<br>
&gt; &gt; per hour as you say).<br>
&gt; &gt; So I&#39;d say just to collect the &#39;bare&#39; data, like job built event, job<br>
&gt; &gt; ended,<br>
&gt; &gt; duration and such.<br>
&gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; I plan later to pack it all into independent fabric tasks(i.e. fab<br>
&gt; &gt; &gt; do.jenkins.slaves.show)<br>
&gt; &gt;<br>
&gt; &gt; Have you checked the current ds fabric checks?<br>
&gt; &gt; There are already a bunch of fabric tasks that monitor jenkins, if we<br>
&gt; &gt; install<br>
&gt; &gt; the nagiosgraph (see ds for details) to send the nagios performance data<br>
&gt; &gt; into<br>
&gt; &gt; graphite, we can use them as is to also start alarms and such.<br>
&gt; &gt;<br>
&gt; &gt;     dcaro@akhos$ fab -l | grep nagi<br>
&gt; &gt;     do.jenkins.nagios.check_build_load                      Checks if the<br>
&gt; &gt; bui...<br>
&gt; &gt;     do.jenkins.nagios.check_executors                       Checks if the<br>
&gt; &gt; exe...<br>
&gt; &gt;     do.jenkins.nagios.check_queue                           Check if the<br>
&gt; &gt; buil...<br>
&gt; &gt;     do.provision.nagios_check                               Show a summary<br>
&gt; &gt; of...<br>
&gt; &gt;<br>
&gt; &gt; Though those will not give you the bare data (were designed with nagios in<br>
&gt; &gt; mind, not graphite so they are just checks, the stats were added later)<br>
&gt; &gt;<br>
&gt; &gt; There&#39;s also a bunch of helpers functions to create nagios checks too.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Nadav<br>
&gt; &gt;<br>
&gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; Infra mailing list<br>
&gt; &gt; &gt; <a href="mailto:Infra@ovirt.org">Infra@ovirt.org</a><br>
&gt; &gt; &gt; <a href="http://lists.ovirt.org/mailman/listinfo/infra" rel="noreferrer" target="_blank">http://lists.ovirt.org/mailman/listinfo/infra</a><br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; David Caro<br>
&gt; &gt;<br>
&gt; &gt; Red Hat S.L.<br>
&gt; &gt; Continuous Integration Engineer - EMEA ENG Virtualization R&amp;D<br>
&gt; &gt;<br>
&gt; &gt; Tel.: <a href="tel:%2B420%20532%20294%20605" value="+420532294605">+420 532 294 605</a><br>
&gt; &gt; Email: <a href="mailto:dcaro@redhat.com">dcaro@redhat.com</a><br>
&gt; &gt; IRC: dcaro|dcaroest@{freenode|oftc|redhat}<br>
&gt; &gt; Web: <a href="http://www.redhat.com" rel="noreferrer" target="_blank">www.redhat.com</a><br>
&gt; &gt; RHT Global #: 82-62605<br>
&gt; &gt;<br>
<br>
&gt; _______________________________________________<br>
&gt; Infra mailing list<br>
&gt; <a href="mailto:Infra@ovirt.org">Infra@ovirt.org</a><br>
&gt; <a href="http://lists.ovirt.org/mailman/listinfo/infra" rel="noreferrer" target="_blank">http://lists.ovirt.org/mailman/listinfo/infra</a><br>
<br>
<br>
--<br>
David Caro<br>
<br>
Red Hat S.L.<br>
Continuous Integration Engineer - EMEA ENG Virtualization R&amp;D<br>
<br>
Tel.: <a href="tel:%2B420%20532%20294%20605" value="+420532294605">+420 532 294 605</a><br>
Email: <a href="mailto:dcaro@redhat.com">dcaro@redhat.com</a><br>
IRC: dcaro|dcaroest@{freenode|oftc|redhat}<br>
Web: <a href="http://www.redhat.com" rel="noreferrer" target="_blank">www.redhat.com</a><br>
RHT Global #: 82-62605<br>
</div></div><br>_______________________________________________<br>
Infra mailing list<br>
<a href="mailto:Infra@ovirt.org">Infra@ovirt.org</a><br>
<a href="http://lists.ovirt.org/mailman/listinfo/infra" rel="noreferrer" target="_blank">http://lists.ovirt.org/mailman/listinfo/infra</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Eyal Edri<br>Associate Manager</div><div>RHEV DevOps<br>EMEA ENG Virtualization R&amp;D<br>Red Hat Israel<br><br>phone: +972-9-7692018<br>irc: eedri (on #tlv #rhev-dev #rhev-integ)</div></div></div></div></div>
</div>