ndoutils 1.4b7 vs 1.4b9

Michael Friedrich michael.friedrich at univie.ac.at
Thu Jul 15 13:18:52 CEST 2010


Hi,

Carl Friend wrote:
>> Well I've sent a patch a few months ago to nagios-devel but iirc it's
>> only in CVS, not within a new beta release. An Icinga user pointed me to
>> that problem.
>>
>> http://markmail.org/message/jsolx6j6jl74aqpj
>> https://dev.icinga.org/issues/219
>>      
>     I caught one of those (the errant declaration) but missed the
> botched int vs. long problem.  Since I located the patch, I'll give
> things another go this evening if I get time.  Thanks!
>    

The int vs long problem is normally handled by the compiler, I just 
changed the way queries are being prepared and handled due to the fact 
that I wanted IDOUtils to support Postgresql and Oracle too in 
combination with Icinga Core and the new Icinga Web.
So this is a minor flaw, and not causing segfaults on NDOUtils - I just 
provided that patch too in order to resolve all issues. Sadly this did 
not reach the community yet, but it can be easily patched yourself - as 
you just did ;-)

>     I looked at the lists and didn't see the indices and constraints
> alluded to here.  Can you point them out, please.

Hmmm well we had several discussions on nagios-devel and some off-list 
too. And especially while developing on the Nagios fork, Icinga.

Basically it came up with the duplicated row issue on the servicechecks 
table which happened to affect systemcommands and timedevents too. It 
was a major bug in Icinga IDOUtils back in November 2009, which has been 
evaluated and fixed - also providing upgrade scripts for preventing data 
loss of existing installations. Postgresql and Oracle were not affected 
since their unique constraints are fulfilled within the WHERE clauses too.
Was quite an easy way to resolve that, but the discussion about NDOUtils 
having that bug too on the nagios-devel lists died silently in a 
proposed RFC and nothing happened since then.

http://www.mail-archive.com/nagios-users@lists.sourceforge.net/msg29949.html
http://markmail.org/message/uhpzyksg4dieiulh#query:[Nagios-devel]%20[RFC]%20-%20NDOUtils%20duplicate%20lines%20problem+page:1+mid:qnt2titl2px3cck2+state:results
http://markmail.org/message/kz56ajbcthumdx7r?q=[Nagios-devel]+NODutils:+Duplicate+lines+in+servicechecks+table+for+each+service+check&page=1&refer=lxmgqlihzdy4jbg2
http://markmail.org/message/lxmgqlihzdy4jbg2

The proposed way to fix that can be found in the Icinga Dev Tracker:

https://dev.icinga.org/issues/173
https://dev.icinga.org/issues/181
https://dev.icinga.org/issues/195
https://dev.icinga.org/issues/209

Considering the newly introduced BINARY select of rows within the 
objects table - as we discussed about case sensitive WHERE conditions - 
it comes to another performance issue. The binary comparison of two 
values might work in smaller environments and without the need of 
hitting quite high performance on queries. Since MySQL does not set the 
case sensitive collation to columns by default, the binary comparison 
was just a workaround to compare that bit by bit. The real solution 
would have been in changing the collation (thanks to William Preston, 
the binary selects are gone in IDOUtils 1.0.2)

The discussion is quite pro binary, but after my report, nothing else 
happened.

http://markmail.org/message/hga5hsaeo4pcl6fi?q=[Nagios-devel]+Case-insensitive+objects+in+NDOutils

You can follow the resolution here: https://dev.icinga.org/issues/361


> changes I applied to the database with the 1.4b9 update.  However,
> 1.4b9 *does* provide some additional indices that dramatically speed
> up certain maintenance operations, so I don't want to lose those.
>    

1.4b9 does not provide all of them in the mods file, some are still 
missing (https://dev.icinga.org/issues/228 and GIT repository). And the 
schema proposes MyISAM as DB engine, which is rather bad if you have 
some other cleaning scripts running (like Nagios XI proposes an external 
php cronjob cleaner next to the normal one - which is just lol). MyISAM 
enforces full table locks and if a DELETE interferes with an INSERT - 
holy shit, that will be fun for *domod and the core.
That's one of the reasons why Icinga IDOUtils insist on InnoDB as DB 
engine because the housekeeping has been extended into its own thread, 
not interfering with the normal INSERT/UPDATE procedure. InnoDB slows 
down an INSERT a bit, but the overall benefit of only having a row lock 
and cleaning old historical data parallel to getting new data is just 
wonderful. We had some reports that IDO2DB in comparison with NDO2DB 
runs ~30% faster...
But this patch is rather big and unified for Icinga IDOUtils, developed 
initially by Hendrik, tested by the team and finally reworked by myself 
catching up with the community in 1.0.1 - check the blog entries on 
www.icinga.org :)

There are some other bugfixes, and some feature rich enhancements, but 
regarding the more or less dead development and even more the behavior 
of Nagios Enterprises and its president cannot convince me to backport 
those patches onto the actual NDOUtils code. Sadly to say for the 
community, but well.


Anyways, if you consider patching those things yourself, consider Icinga 
with IDOUtils as an alternative too.

Kind regards,
Michael

PS: Sorry for mentioning Icinga and fork and so on. Since it catches up 
with the topic, I think it's worth to talk about that a bit with the 
Nagios community too.

-- 
DI (FH) Michael Friedrich
michael.friedrich at univie.ac.at
Tel: +43 1 4277 14359

Vienna University Computer Center
Universitaetsstrasse 7 A-1010 Vienna, Austria


------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue. 
::: Messages without supporting info will risk being sent to /dev/null





More information about the Users mailing list