[naemon-dev] Naemon and plugins need to cooperate more

Magnus magnus at boden.cx
Mon Apr 6 12:48:49 CEST 2015


Hello,

Yes I do feel that it was never the intent but I do think it is a 
direction we should head in since it feels more optimal to just specify 
that this is a checkpoint firewall for example and then all relevant 
services will be checked. Of course this can be done with hostgroups but 
not if some checkpoint firewalls are clusters and some are not then you 
need two different hostgroups for that and it would add a hostgroup for 
each feature that might differ.

if we can help these more complex plugins from within naemon I think it 
is something we should do.

Thanks for the register 0 on hostgroups I didn't know that.

I can't find any information on updating the custom attributes with 
livestatus, what is the lql syntax for that?

Best Regards
Magnus

On 2015-04-06 11:24, Sven Nierlein wrote:
> Hi Magnus,
>
> Well, plugins are meant to be small check scripts which fetch and verify some numbers and things. You are creating
> more something like a check framework. Thats possible, but this was never meant to be done by plugins. However,
> a few things are possible already.
>
> 1. Templates might be a solution for this problem.
> 2. hostgroups with "register 0" should be invisible in the gui.
> 3. thats totally up to your plugins.
> 4. creating tmp files has always been a bad idea. You could store values in naemon custom attributes which can be retrieved and updated via livestatus.
>      The only cavehat with that, is that the custom attribute must exist already if you want to update it via livestatus. But since you generate your config
>      anyway, just create it empty.
>
> Cheers,
>   Sven
>
>
> On 05/04/15 13:00, Magnus wrote:
>> Hello,
>>
>> I am very interested in what future plans you guys have for naemon. To me naemon is to limited in the way plugins interact with naemon.
>>
>> For example a plugin should be able to tell if a service has been acknowledged. I use this in my plugins. Earlier i had to parse status.dat but now I use livestatus for that.
>>
>> Also for performance reasons (both on the naemon machine and snmp/network utilization) when monitoring a switch with a lot of interfaces I have written a plugin that fetches all the interfaces that should be monitored and creates services for each interface by creating cfg files and restarting naemon. There are a few problems with this, first creating the config files and restarting naemon can cause problems if someone is editing the config and the config is in an erranous state causes naemon to die. Also if there naemon is restarted (which only happens when new interfaces are discovered) then the plugins output is not collected by the restarted naemon process (I did find a workaround for this by waiting for a second and then submitting the main service results as passive though I don't feel very comfortable with this solution yet it works). For this typ of usage I envision the dynamic services doesn't even need to be added to the configuration files at all. A plugin should
>> be able to create "ghost" services that are only available when the plugin creates them after a restart they would be gone but would appear when the main service check script is run again.
>>
>> Perhaps creating services could be through livestatus but I think a new interface might be better. Using livestatus has the drawback that you have to know your own hostname and the service name (when checking for example if the service for which this script is being run has been acknowledged). An interface where you could query with filters like current_host and current_service for example would be very useful.
>>
>> I think naemon should strive to have an easy configuration and having to create 47 services when you monitor 47 different interfaces on a switch is unneccessary.
>>
>> I have a few more idees I would like to see in naemon.
>>
>> 1. Hosts that inherit hostgroups custom variables.
>>
>> 2. Hostgroups that are not visible in the web ui (I use hostgroups to have the same services for several hosts (for example in a cluster) but the hostgroup itself has no value and only adds more hostgroups that confuse operators).
>>
>> 3. Since I create a lot of passive services in my plugins I think having -c and -w is very limited since the same plugin could have a lot of different thresholds for different stuff so I use different custom variables for this, perhaps this should be more standardized in some way.
>>
>> 4. Creating the files in /tmp for storing information which a lot of plugins use seems less then optimal for me. I think a plugin should be able to create read/write variables within the naemon process of course this would need to be limited to a certain amount per host or something so a plugin cant create a memory leak we are most likely talking very small amounts of data her for example the last interface utilization counters and such. Naemon would store these in its state file so they are still there after a restart.
>>
>> I will involve myself in this both code and design wise but I would like for you guys to at least think this is a direction you think naemon should head in.
>>
>> Also my c coding skills are rusty so they might need some finishing touches by someone more skilled. I suck at graphics and web interfaces but I could also help with documentation and writing plugins.
>>
>> Regards
>> Magnus
>




More information about the Naemon-dev mailing list