help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Services and log management/monitoring


From: rendaw
Subject: Re: Services and log management/monitoring
Date: Sat, 20 Apr 2019 00:47:27 +0900
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.3

On 4/19/19 9:09 PM, Ludovic Courtès wrote:
> Hi,
>
> rendaw <address@hidden> skribis:
>
>> I think fundamentally what I'd most like to know is when should I use a
>> Shepherd service vs a non-Shepherd service.  Maybe it's as simple as: if
>> you don't have any specific requirements always define a Shepherd service.
> It’s hard to answer that question in the abstract.  Do you have an
> example in mind that we could work through?

Yeah, so the basic example I was thinking of is I have an executable
binary (a server for diagnostics) I'd like to run when the computer boots.

>
>> Beyond what a service actually is though I have a few more questions:
>>
>> * Both
>> https://www.gnu.org/software/guix/manual/en/html_node/Service-Composition.html
>> and
>> https://www.gnu.org/software/guix/manual/en/html_node/Shepherd-Services.html#Shepherd-Services
>> appear to show a dependency graph.
> The first page shows a service extension graph.
>
> The second page shows a graph of dependencies among Shepherd services.
>
> These are two different beasts.

Ah okay, that explains a lot - I was completely misinterpreting the
extension graph then.  I'm afraid I don't know what extension means in
this context.  Is it similar to OOP extension, where a "Dog" is-a
"Canine"?  Looking at the graphic, "accounts" depends-on "etc" (the
directory/mount?) makes a lot more sense to me than "accounts" is-a
"etc".  Similarly I would assume that the udev service runs udevd, but
if upower and colord are both "udev" services (because they extend udev)
does that mean if I run both the upower and colord services then my
system will have 3 instances of udevd running?

I'm fairly sure that's not what it means, but if extends isn't an
inheritance relationship and it's not a dependency relationship I'm not
sure what it is.

Is the udev service in the shepherd graph different then the udev
service (-type?) in the service extension graph?  That might be a factor
in my confusion.

>>   Are the dependency graphs Shepherd and non-Shepherd services
>> entirely separate?  Or maybe I'm completely misunderstanding
>> "extension" in this context.  Can an inet service depend on a non-inet
>> service?  Can an inet service depend on a d-bus service?  * Is there a
>> way to hook into service events - that is, run some code when a
>> service starts or stops?
> An inetd service cannot “depend” on a non-inetd service; a D-Bus service
> cannot depend on a non-D-Bus service.  Both D-Bus and inetd have their
> own notion of what a service is, how to start it, etc., which is
> separate from what the Shepherd does.

So suppose I have an mcron job that needs an ssh tunnel managed by
shepherd to be started, or an inetd handler that needs data files on a
network mount to run... is it possible to express those ordering
dependencies?  Or a service that subscribes the server to external
webhooks, and needs the webhook listeners (inetd handlers) to be started
before registering.

I assume the answer to my 2nd question from the previous email - if
there's a way to run code when a service's state changes - is that there
currently isn't such hooking mechanism.

>
> I reckon that calling everything a “service” does not help understand
> all this…

I don't think it's an unreasonable choice of words :) - there's just a
lot that isn't fitting in mentally for me.

And thank you for your patience with the answers, I think I'm drawing
much closer to understanding all this.  Once I've figured it out I'll
definitely write something up in case someone else has the same issues.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]