* bug#62163: Suppress logging shepherd evaluation in mcron.log
@ 2023-03-13 15:59 Bruno Victal
2023-03-24 12:22 ` Maxim Cournoyer
0 siblings, 1 reply; 14+ messages in thread
From: Bruno Victal @ 2023-03-13 15:59 UTC (permalink / raw)
To: 62163; +Cc: mirai
Upon mcron job completion, /var/log/mcron.log is spammed with:
“shepherd: Evaluating user expression (and (defined? (quote transient?)) (map (# ?) ?))”
These shepherd lines should be suppressible.
/var/log/mcron.log snippet:
--8<---------------cut here---------------start------------->8---
2023-03-13 16:52:00 243 my-heartbeat-job job: running...
2023-03-13 16:52:00 243 my-heartbeat-job job: Healthcheck: OK
2023-03-13 16:52:00 243 my-heartbeat-job job: shepherd: Evaluating user expression (and (defined? (quote transient?)) (map (# ?) ?)).
2023-03-13 16:52:00 243 my-heartbeat-job job: completed in 0.087s
--8<---------------cut here---------------end--------------->8---
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-03-13 15:59 bug#62163: Suppress logging shepherd evaluation in mcron.log Bruno Victal
@ 2023-03-24 12:22 ` Maxim Cournoyer
2023-03-28 16:25 ` Ludovic Courtès
0 siblings, 1 reply; 14+ messages in thread
From: Maxim Cournoyer @ 2023-03-24 12:22 UTC (permalink / raw)
To: Bruno Victal; +Cc: Ludovic Courtès, 62163
Hi,
Bruno Victal <mirai@makinata.eu> writes:
> Upon mcron job completion, /var/log/mcron.log is spammed with:
> “shepherd: Evaluating user expression (and (defined? (quote transient?)) (map (# ?) ?))”
>
> These shepherd lines should be suppressible.
>
>
> /var/log/mcron.log snippet:
>
> 2023-03-13 16:52:00 243 my-heartbeat-job job: running...
> 2023-03-13 16:52:00 243 my-heartbeat-job job: Healthcheck: OK
> 2023-03-13 16:52:00 243 my-heartbeat-job job: shepherd: Evaluating user expression (and (defined? (quote transient?)) (map (# ?) ?)).
> 2023-03-13 16:52:00 243 my-heartbeat-job job: completed in 0.087s
>
I think this was already fixed in Shepherd on its master branch. Ludo,
could you please confirm?
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-03-24 12:22 ` Maxim Cournoyer
@ 2023-03-28 16:25 ` Ludovic Courtès
2023-03-28 16:32 ` Bruno Victal
0 siblings, 1 reply; 14+ messages in thread
From: Ludovic Courtès @ 2023-03-28 16:25 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: 62163, Bruno Victal
Hi,
Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
> Bruno Victal <mirai@makinata.eu> writes:
>
>> Upon mcron job completion, /var/log/mcron.log is spammed with:
>> “shepherd: Evaluating user expression (and (defined? (quote transient?)) (map (# ?) ?))”
>>
>> These shepherd lines should be suppressible.
>>
>>
>> /var/log/mcron.log snippet:
>>
>> 2023-03-13 16:52:00 243 my-heartbeat-job job: running...
>> 2023-03-13 16:52:00 243 my-heartbeat-job job: Healthcheck: OK
>> 2023-03-13 16:52:00 243 my-heartbeat-job job: shepherd: Evaluating user expression (and (defined? (quote transient?)) (map (# ?) ?)).
>> 2023-03-13 16:52:00 243 my-heartbeat-job job: completed in 0.087s
>>
>
> I think this was already fixed in Shepherd on its master branch. Ludo,
> could you please confirm?
Nope. :-) What is ‘my-heartbeat-job’ doing?
The “Evaluating…” message occurs when using the ‘eval’ action of the
‘root’ service, as in “herd eval root '(+ 2 2)'”.
Ludo’.
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-03-28 16:25 ` Ludovic Courtès
@ 2023-03-28 16:32 ` Bruno Victal
2023-03-30 10:22 ` Ludovic Courtès
0 siblings, 1 reply; 14+ messages in thread
From: Bruno Victal @ 2023-03-28 16:32 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 62163, Maxim Cournoyer
Hi Ludo’,
On 2023-03-28 17:25, Ludovic Courtès wrote:
>
> Nope. :-) What is ‘my-heartbeat-job’ doing?
It queries shepherd to see if a service is running and sends a restart if required.
It looks like this: (#$task is what will perform the actual checks)
--8<---------------cut here---------------start------------->8---
(define* (heartbeat-supervisor #:key (name #f) service task
#:allow-other-keys)
;; Query service status and restart if needed.
(program-file
(format #f "~@[~a-~]heartbeat-supervisor.scm" name)
(with-imported-modules (source-module-closure
'((gnu services herd)))
#~(begin
(use-modules (gnu services herd)
(srfi srfi-1))
(define (is-service-running? sym)
(lambda (x)
(and (live-service-running x)
(memq sym (live-service-provision x)))))
(let ((running? (not (null?
(any (is-service-running? '#$service)
(current-services))))))
(when running?
(case (status:exit-val (system* #$task))
((0) #t)
((125)
(format #t "Heartbeat worker error~%"))
(else
(format #t "Issuing restart for service '~a'~%" '#$service)
(restart-service '#$service)))))
(exit)))))
--8<---------------cut here---------------end--------------->8---
This message also shows up if you're using certbot-service-type,
so it's not specific to the snippet above.
Cheers,
Bruno
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-03-28 16:32 ` Bruno Victal
@ 2023-03-30 10:22 ` Ludovic Courtès
2023-03-30 11:21 ` Bruno Victal
2023-03-31 11:52 ` Bruno Victal
0 siblings, 2 replies; 14+ messages in thread
From: Ludovic Courtès @ 2023-03-30 10:22 UTC (permalink / raw)
To: Bruno Victal; +Cc: 62163, Maxim Cournoyer
Hi,
Bruno Victal <mirai@makinata.eu> skribis:
> On 2023-03-28 17:25, Ludovic Courtès wrote:
>>
>> Nope. :-) What is ‘my-heartbeat-job’ doing?
>
> It queries shepherd to see if a service is running and sends a restart if required.
Isn’t that what #:respawn? #t is supposed to do? :-)
If you find that #:respawn? doesn’t work, then we should fix it.
> (define* (heartbeat-supervisor #:key (name #f) service task
> #:allow-other-keys)
> ;; Query service status and restart if needed.
> (program-file
> (format #f "~@[~a-~]heartbeat-supervisor.scm" name)
> (with-imported-modules (source-module-closure
> '((gnu services herd)))
> #~(begin
> (use-modules (gnu services herd)
> (srfi srfi-1))
>
> (define (is-service-running? sym)
> (lambda (x)
> (and (live-service-running x)
> (memq sym (live-service-provision x)))))
>
> (let ((running? (not (null?
> (any (is-service-running? '#$service)
> (current-services))))))
You can send messages to the bitbucket with:
(parameterize ((shepherd-message-port (%make-void-port "w0")))
…)
HTH,
Ludo’.
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-03-30 10:22 ` Ludovic Courtès
@ 2023-03-30 11:21 ` Bruno Victal
2023-03-31 2:10 ` Maxim Cournoyer
2023-03-31 12:18 ` Ludovic Courtès
2023-03-31 11:52 ` Bruno Victal
1 sibling, 2 replies; 14+ messages in thread
From: Bruno Victal @ 2023-03-30 11:21 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 62163, Maxim Cournoyer
On 2023-03-30 11:22, Ludovic Courtès wrote:
> Hi,
>
> Bruno Victal <mirai@makinata.eu> skribis:
>
>> On 2023-03-28 17:25, Ludovic Courtès wrote:
>>>
>>> Nope. :-) What is ‘my-heartbeat-job’ doing?
>>
>> It queries shepherd to see if a service is running and sends a restart if required.
>
> Isn’t that what #:respawn? #t is supposed to do? :-)
>
> If you find that #:respawn? doesn’t work, then we should fix it.
Oh, I should have explained better here.
Re-spawn works, it's the (daemon) service that might misbehave/go unresponsive without crashing,
i.e. HTTP backend stops responding to API requests but the server is still up.
The job performs a "health-check" and restarts it if it doesn't get the appropriate response.
A concrete situation where this could be of use is for logs.guix that occasionally stops
recording.
>
> You can send messages to the bitbucket with:
>
> (parameterize ((shepherd-message-port (%make-void-port "w0")))
> …)
Thanks!
I'm still curious as to exactly what/which lines cause shepherd to output the lines.
Cheers,
Bruno
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-03-30 11:21 ` Bruno Victal
@ 2023-03-31 2:10 ` Maxim Cournoyer
2023-03-31 12:18 ` Ludovic Courtès
1 sibling, 0 replies; 14+ messages in thread
From: Maxim Cournoyer @ 2023-03-31 2:10 UTC (permalink / raw)
To: Bruno Victal; +Cc: Ludovic Courtès, 62163
Hi,
Bruno Victal <mirai@makinata.eu> writes:
> On 2023-03-30 11:22, Ludovic Courtès wrote:
>> Hi,
>>
>> Bruno Victal <mirai@makinata.eu> skribis:
>>
>>> On 2023-03-28 17:25, Ludovic Courtès wrote:
>>>>
>>>> Nope. :-) What is ‘my-heartbeat-job’ doing?
>>>
>>> It queries shepherd to see if a service is running and sends a restart if required.
>>
>> Isn’t that what #:respawn? #t is supposed to do? :-)
>>
>> If you find that #:respawn? doesn’t work, then we should fix it.
>
> Oh, I should have explained better here.
> Re-spawn works, it's the (daemon) service that might misbehave/go unresponsive without crashing,
> i.e. HTTP backend stops responding to API requests but the server is still up.
> The job performs a "health-check" and restarts it if it doesn't get the appropriate response.
>
> A concrete situation where this could be of use is for logs.guix that occasionally stops
> recording.
So some kind of supervisor for the job, that specific run time checks to
ensure the process is still doing its job, if I understand correctly. I
wonder if this use case could be integrated into our Shepherd services
themselves, via some supervisor slot or similar, that would run some
script periodically.
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-03-30 11:21 ` Bruno Victal
2023-03-31 2:10 ` Maxim Cournoyer
@ 2023-03-31 12:18 ` Ludovic Courtès
1 sibling, 0 replies; 14+ messages in thread
From: Ludovic Courtès @ 2023-03-31 12:18 UTC (permalink / raw)
To: Bruno Victal; +Cc: 62163, Maxim Cournoyer
Hi,
Bruno Victal <mirai@makinata.eu> skribis:
> On 2023-03-30 11:22, Ludovic Courtès wrote:
[...]
>>> It queries shepherd to see if a service is running and sends a restart if required.
>>
>> Isn’t that what #:respawn? #t is supposed to do? :-)
>>
>> If you find that #:respawn? doesn’t work, then we should fix it.
>
> Oh, I should have explained better here.
> Re-spawn works, it's the (daemon) service that might misbehave/go unresponsive without crashing,
> i.e. HTTP backend stops responding to API requests but the server is still up.
> The job performs a "health-check" and restarts it if it doesn't get the appropriate response.
OK. It still means that the service in question is kinda broken, right?
> A concrete situation where this could be of use is for logs.guix that occasionally stops
> recording.
Oh you mean ‘goggles-bot’? Yeah I wonder why it occasionally goes
wrong, but really I think Someone™ should debug it (it’s a small script
in maintenance.git).
>> You can send messages to the bitbucket with:
>>
>> (parameterize ((shepherd-message-port (%make-void-port "w0")))
>> …)
>
> Thanks!
> I'm still curious as to exactly what/which lines cause shepherd to output the lines.
The “Evaluating” line is emitted by shepherd, logged, and sent to
clients (for instance when you do ‘herd eval root '(+ 2 3)'’).
(gnu services herd) provides a client that echoes those messages to
‘shepherd-message-port’.
Does that make sense?
Ludo’.
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-03-30 10:22 ` Ludovic Courtès
2023-03-30 11:21 ` Bruno Victal
@ 2023-03-31 11:52 ` Bruno Victal
2023-03-31 22:10 ` Ludovic Courtès
1 sibling, 1 reply; 14+ messages in thread
From: Bruno Victal @ 2023-03-31 11:52 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 62163, Maxim Cournoyer
On 2023-03-30 11:22, Ludovic Courtès wrote:
>
> You can send messages to the bitbucket with:
>
> (parameterize ((shepherd-message-port (%make-void-port "w0")))
> …)
While it does work for expunging them from mcron log, I noticed that
these lines are also polluting /var/log/messages and the snippet above
doesn't handle that.
Is there perhaps something else I'm missing?
Thanks,
Bruno
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-03-31 11:52 ` Bruno Victal
@ 2023-03-31 22:10 ` Ludovic Courtès
2023-04-27 13:24 ` Ludovic Courtès
0 siblings, 1 reply; 14+ messages in thread
From: Ludovic Courtès @ 2023-03-31 22:10 UTC (permalink / raw)
To: Bruno Victal; +Cc: 62163, Maxim Cournoyer
Bruno Victal <mirai@makinata.eu> skribis:
> On 2023-03-30 11:22, Ludovic Courtès wrote:
>>
>> You can send messages to the bitbucket with:
>>
>> (parameterize ((shepherd-message-port (%make-void-port "w0")))
>> …)
>
> While it does work for expunging them from mcron log, I noticed that
> these lines are also polluting /var/log/messages and the snippet above
> doesn't handle that.
> Is there perhaps something else I'm missing?
Nope, you cannot prevent them from ending up in /var/log/messages; they
are purposefully logged.
Ludo’.
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-03-31 22:10 ` Ludovic Courtès
@ 2023-04-27 13:24 ` Ludovic Courtès
2023-04-27 16:12 ` Bruno Victal
0 siblings, 1 reply; 14+ messages in thread
From: Ludovic Courtès @ 2023-04-27 13:24 UTC (permalink / raw)
To: Bruno Victal; +Cc: 62163, Maxim Cournoyer
Hi Bruno,
Ludovic Courtès <ludo@gnu.org> skribis:
> Bruno Victal <mirai@makinata.eu> skribis:
>
>> On 2023-03-30 11:22, Ludovic Courtès wrote:
>>>
>>> You can send messages to the bitbucket with:
>>>
>>> (parameterize ((shepherd-message-port (%make-void-port "w0")))
>>> …)
>>
>> While it does work for expunging them from mcron log, I noticed that
>> these lines are also polluting /var/log/messages and the snippet above
>> doesn't handle that.
>> Is there perhaps something else I'm missing?
>
> Nope, you cannot prevent them from ending up in /var/log/messages; they
> are purposefully logged.
What should we do about this bug? Am I right that the conclusion is
that ‘my-heartbeat-job’ could send herd/shepherd output to the bit
bucket? If yes, we can close this bug.
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-04-27 13:24 ` Ludovic Courtès
@ 2023-04-27 16:12 ` Bruno Victal
2023-04-28 3:52 ` Maxim Cournoyer
2023-05-03 20:01 ` Ludovic Courtès
0 siblings, 2 replies; 14+ messages in thread
From: Bruno Victal @ 2023-04-27 16:12 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 62163, Maxim Cournoyer
Hi Ludo’,
On 2023-04-27 14:24, Ludovic Courtès wrote:
> Hi Bruno,
>
> Ludovic Courtès <ludo@gnu.org> skribis:
>
>> Bruno Victal <mirai@makinata.eu> skribis:
>>
>>> On 2023-03-30 11:22, Ludovic Courtès wrote:
>>>>
>>>> You can send messages to the bitbucket with:
>>>>
>>>> (parameterize ((shepherd-message-port (%make-void-port "w0")))
>>>> …)
>>>
>>> While it does work for expunging them from mcron log, I noticed that
>>> these lines are also polluting /var/log/messages and the snippet above
>>> doesn't handle that.
>>> Is there perhaps something else I'm missing?
>>
>> Nope, you cannot prevent them from ending up in /var/log/messages; they
>> are purposefully logged.
Perhaps we could have a “low-noise” way to query for running services? (or non modifying actions done on shepherd)
Filling /var/log/messages with messages of (IMO) dubious value seems counterproductive.
> What should we do about this bug? Am I right that the conclusion is
> that ‘my-heartbeat-job’ could send herd/shepherd output to the bit
> bucket? If yes, we can close this bug.
Parameterizing the shepherd-message-port did cut the shepherd messages from the mcron log, yes.
Cheers,
Bruno
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-04-27 16:12 ` Bruno Victal
@ 2023-04-28 3:52 ` Maxim Cournoyer
2023-05-03 20:01 ` Ludovic Courtès
1 sibling, 0 replies; 14+ messages in thread
From: Maxim Cournoyer @ 2023-04-28 3:52 UTC (permalink / raw)
To: Bruno Victal; +Cc: Ludovic Courtès, 62163-done
Hello,
Bruno Victal <mirai@makinata.eu> writes:
> Hi Ludo’,
>
> On 2023-04-27 14:24, Ludovic Courtès wrote:
>> Hi Bruno,
>>
>> Ludovic Courtès <ludo@gnu.org> skribis:
>>
>>> Bruno Victal <mirai@makinata.eu> skribis:
>>>
>>>> On 2023-03-30 11:22, Ludovic Courtès wrote:
>>>>>
>>>>> You can send messages to the bitbucket with:
>>>>>
>>>>> (parameterize ((shepherd-message-port (%make-void-port "w0")))
>>>>> …)
>>>>
>>>> While it does work for expunging them from mcron log, I noticed that
>>>> these lines are also polluting /var/log/messages and the snippet above
>>>> doesn't handle that.
>>>> Is there perhaps something else I'm missing?
>>>
>>> Nope, you cannot prevent them from ending up in /var/log/messages; they
>>> are purposefully logged.
>
> Perhaps we could have a “low-noise” way to query for running services? (or non modifying actions done on shepherd)
> Filling /var/log/messages with messages of (IMO) dubious value seems counterproductive.
>
>> What should we do about this bug? Am I right that the conclusion is
>> that ‘my-heartbeat-job’ could send herd/shepherd output to the bit
>> bucket? If yes, we can close this bug.
>
> Parameterizing the shepherd-message-port did cut the shepherd messages from the mcron log, yes.
Alright, closing then.
What a team :-).
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 14+ messages in thread
* bug#62163: Suppress logging shepherd evaluation in mcron.log
2023-04-27 16:12 ` Bruno Victal
2023-04-28 3:52 ` Maxim Cournoyer
@ 2023-05-03 20:01 ` Ludovic Courtès
1 sibling, 0 replies; 14+ messages in thread
From: Ludovic Courtès @ 2023-05-03 20:01 UTC (permalink / raw)
To: Bruno Victal; +Cc: 62163, Maxim Cournoyer
Hi,
Bruno Victal <mirai@makinata.eu> skribis:
>>>> While it does work for expunging them from mcron log, I noticed that
>>>> these lines are also polluting /var/log/messages and the snippet above
>>>> doesn't handle that.
>>>> Is there perhaps something else I'm missing?
>>>
>>> Nope, you cannot prevent them from ending up in /var/log/messages; they
>>> are purposefully logged.
>
> Perhaps we could have a “low-noise” way to query for running services? (or non modifying actions done on shepherd)
> Filling /var/log/messages with messages of (IMO) dubious value seems counterproductive.
The reasoning was that “eval is evil”, as we know :-), so we’d rather
log uses of ‘herd eval root’.
Ludo’.
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2023-05-03 20:02 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-13 15:59 bug#62163: Suppress logging shepherd evaluation in mcron.log Bruno Victal
2023-03-24 12:22 ` Maxim Cournoyer
2023-03-28 16:25 ` Ludovic Courtès
2023-03-28 16:32 ` Bruno Victal
2023-03-30 10:22 ` Ludovic Courtès
2023-03-30 11:21 ` Bruno Victal
2023-03-31 2:10 ` Maxim Cournoyer
2023-03-31 12:18 ` Ludovic Courtès
2023-03-31 11:52 ` Bruno Victal
2023-03-31 22:10 ` Ludovic Courtès
2023-04-27 13:24 ` Ludovic Courtès
2023-04-27 16:12 ` Bruno Victal
2023-04-28 3:52 ` Maxim Cournoyer
2023-05-03 20:01 ` Ludovic Courtès
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).