<div dir="ltr">Thanks for the quick response Kienan,<div>Your proposal is exactly how we were thinking the monitor application could work, so we'll go with that for now.</div><div>Reacting to absence of an event (watch dog) would really be a good complement to the existing trigger types.</div><div>It's a really useful feature for a flight recorder in embedded medium real-time applications, is the team open to feature requests?</div><div>Cheers</div><div>Damien</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Sep 12, 2024 at 12:57 AM Kienan Stewart <<a href="mailto:kstewart@efficios.com">kstewart@efficios.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Damien,<br>
<br>
On 2024-09-11 18:38, Damien Berget via lttng-dev wrote:<br>
> Good day,<br>
> We are trying to see what it the best way to monitor some applications <br>
> not hitting a deadline. Ideally something like a watchdog that needs <br>
> to be pat regularly and if timeout is reached triggers the snapshot.<br>
><br>
> Before we reinvent the wheel and code some userland applications, is <br>
> there a canonical way in LTTng to do it? I found this <br>
> <<a href="https://review.lttng.org/c/lttng-tools/+/9657/9" rel="noreferrer" target="_blank">https://review.lttng.org/c/lttng-tools/+/9657/9</a>> that is suspiciously <br>
> close maybe?<br>
><br>
I don't think the the proposed changes you linked to are useful or <br>
related to what you hope to achieve. The patch series is a concept about <br>
how some types of UST ring buffer stalls might be addressed by the <br>
session daemon. After a quick glance, the monitoring seems to be more <br>
closely related to the 'monitor timer', which is used to sample <br>
statistical information channels[1].<br>
<br>
<br>
There is a concept of triggers[2]; however triggers react to the <br>
presence of events rather than the absence thereof.<br>
<br>
<br>
I think a small user space application that monitors the state of other <br>
applications is more the direction to head in. There's at least of <br>
couple of ways that a snapshot on unhealthy state could be achieved:<br>
<br>
<br>
* Use liblttng-ctl to trigger a snapshot from your watchdog <br>
application[3][4].<br>
<br>
* Have the watchdog application exec `lttng snapshot record`[5].<br>
<br>
* Have the watchdog application emit some sort of "health state" events <br>
with some data (e.g. health_okay, health_bad, ...) per your usage <br>
requirements, and configure a trigger[2] to take a snapshot on the <br>
"health state" events that have the non-okay state.<br>
<br>
<br>
Depending on your tracing configuration - channel overwrite/discard <br>
mode[6], buffer sizes, blocking mode, and number of events it is <br>
possible that events may not be recorded. I would privilege using <br>
liblttng-ctl or exec'ing `lttng snapshort record` if you want a stronger <br>
guarantee that your watchdog will cause a snapshot to be taken.<br>
<br>
<br>
I would love to hear if there are other ideas. Regardless, hope this helps!<br>
<br>
<br>
thanks,<br>
<br>
kienan<br>
<br>
<br>
[1]: <a href="https://lttng.org/docs/v2.13/#doc-channel-timers" rel="noreferrer" target="_blank">https://lttng.org/docs/v2.13/#doc-channel-timers</a><br>
<br>
[2]:  <a href="https://lttng.org/docs/v2.13/#doc-trigger" rel="noreferrer" target="_blank">https://lttng.org/docs/v2.13/#doc-trigger</a><br>
<br>
[3]:  <a href="https://lttng.org/docs/v2.13/#doc-liblttng-ctl-lttng" rel="noreferrer" target="_blank">https://lttng.org/docs/v2.13/#doc-liblttng-ctl-lttng</a><br>
<br>
[4]: <a href="https://github.com/lttng/lttng-tools/tree/master/src/lib/lttng-ctl" rel="noreferrer" target="_blank">https://github.com/lttng/lttng-tools/tree/master/src/lib/lttng-ctl</a><br>
<br>
[5]: <a href="https://lttng.org/man/1/lttng-snapshot/v2.13/" rel="noreferrer" target="_blank">https://lttng.org/man/1/lttng-snapshot/v2.13/</a><br>
<br>
[6]: <br>
<a href="https://lttng.org/docs/v2.13/#doc-channel-overwrite-mode-vs-discard-mode" rel="noreferrer" target="_blank">https://lttng.org/docs/v2.13/#doc-channel-overwrite-mode-vs-discard-mode</a><br>
<br>
<br>
> Thanks,<br>
> Cheers<br>
><br>
> -- <br>
> *Damien Berget*<br>
> Embedded Platform Lead<br>
> <a href="mailto:damien.berget@flyzipline.com" target="_blank">damien.berget@flyzipline.com</a><br>
><br>
> _______________________________________________<br>
> lttng-dev mailing list<br>
> <a href="mailto:lttng-dev@lists.lttng.org" target="_blank">lttng-dev@lists.lttng.org</a><br>
> <a href="https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev" rel="noreferrer" target="_blank">https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev</a><br>
</blockquote></div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><b>Damien Berget</b></div></div>