Yesterday we migrated our mailing lists away from Sourceforge. Today it’s time to migrate our release downloads. You may wonder why we are leaving a feature rich and free platform. The answer is simple – Sourceforge has grown to be too bloated with ads for our liking. Not only on their website and mailing list footers, but also by wrapping popular tools with their advertising installer. We do not want this to happen to Icinga or our users, and have therefore sought out possible alternatives.
Many community members have asked us “Why don’t you use GitHub for development?”. Though GitHub offers a complete toolstack for development, we still prefer our set of tools – Redmine for issue tracking & development organisation, deeply integrated with the existing Git server and its hooks, and further, Confluence as feature-rich wiki alternative. However, there is one big advantage to using GitHub – forks & pull requests make sending patches easier for everyone.
That’s primarly the reason why we’re now hosting a Git mirror on GitHub available at https://github.com/Icinga. Fork Icinga, send pull requests. But please be sure to notify Icinga developers using our Development Tracker by creating a new issue. Releases will continue to be organized in Redmine; something we won’t change thanks to 5 years of habit, sorry 😉
Furthermore GitHub offers a release feature – Git tags are automatically available as archive downloads. While this hurts in some areas (‘icinga-core-1.10.0’ vs ‘icinga-1.10.0’), we’ve found a subtle solution for that: All releases contain an additional binary, are verified ok & uploaded by the Icinga release manager(s) ensuring the quality of the release process 🙂
For example, if you want to download Icinga 1.10.2, then follow this url (or use the version identifier for a more direct approach). Then click the green download “icinga-1.10.2.tar.gz” button as shown in the image below:
All future releases (Icinga 1.11, Icinga 2, Icinga Web 2) will be uploaded to our new release platform. Thanks to GitHub for an awesome free service!
P.S.: We are in the process of migrating existing virtual appliances into a new style of demo boxes, much like the existing Icinga 2 Vagrant box 🙂
We finally made our decision to step away from GIT, and get back to the origin SCM used by Nagios for a long time – CVS. It will enhance our current development capabilities and allow us to develop even faster with speed of light.
The first import is still in progress, you can follow it over here on the cvsweb of sourceforge. Stay tuned …
Update 2.4.2011 02:25: We are failing to import GIT into CVS, so we’ll stay on GIT ;-))
Last year, I found gource for visualization of Icinga’s GIT repositories. One of my fellow twitter followers (@crsp) was so passionate about new Icinga Gource episodes – so here they are … including a short Icinga Mobile intro 🙂
From last year’s end til now – it’s huge what happened there… Stay tuned for upcoming releases and enjoy the show! =) Icinga Core
Now that you have read about IDOUtils and the CGIs, it is time for the big one 🙂 Icinga Core All changes, fixes and enhancements do not affect compatibility to Nagios ™ – you’ll just get more fixes and enhancements if you decide to move over to Icinga.
The list of fixes and code improvements is rather long thanks to Andreas Ericsson who is working on his own Nagios ™ development branches. All those recent commits have been reworked into Icinga Core (if not already done). There were some nifty patches making developers life more easy and the source code a bit more readable and reusable.
Furthermore protection against typos in macro names has been added next to missing NOTIFICATIONISESCALATED macro. Performance data files are now closed correctly and the pipes are also set properly on configuration re-read. SIGSEGV in checkson Solaris have been fixed thanks to Thorsten Huebler. There are also some other fixes for Solaris which are currently in development (thanks Alexander Skwar).
The fix by Ton Voon for choosing next valid time on day of DST change when clocks go one hour backwards is also in 1.0.2.
Next to that Ton Voon provided the in sync retention facility on the core by Opsera Ltd which has been reworked into Icinga – we think this might be useful. Also, there was a Nagios ™ patch for adding new is_volatile setting of 2 for services, which respects the re-notification interval for notifications which also can be found applied and tested in Icinga Core.
There was a bug removing comments – now it is fixed and removing one comment will not remove all of them. Scheduling a downtime for all services and the host now works as expected. Also custom notifications are not sent anymore during downtimes (thanks Sven Nierlein). notification_period inheritance for services has been fixed using a patch by Gordon Messmer. Notifications not being sent out when scheduled downtime is cancelled is also fixed next to the fix for first notification delay being calculated incorrectly causing notifications potentially going out early.
The initscript has been slightly reworked in order to show config errors as an own option. Furthermore the output is saved into a file which will can be looked up after a normal start. The initscript also does not remove the pid file anymore if Icinga did not stop in a timely manner. If a lockfile without running PID is found during startup, it will be removed instead of bailing out.
Starting the Core now throws an error if contactgroups are not matching. This happens now too if a service description is missing on a service object definition (if defined in used template there won’t be an error!). Servicechecks with timeperiods containing ‘exclude’ directives are now correctly re-scheduled – this is noted in Nagios ™ Changelog for 3.4 and will be fixed in Icinga 1.0.2.
Steven D. Morrey implemented a patch for an extended scheduling queue which has been slightly reworked and improved for Icinga. The -S option functions much like -s but will dump the entire scheduling queue is it would run, in addition to providing the summary data.
Steven also created another patch long time ago – adding an event profiling option for stats of event counts and time taken for events. We integrated that as a config option in icinga.cfg and took the chance to add those stats to the current CGIs in ‘Performance Info’ – in case the option is enabled of course.
We finally implemented the state-based escalation ranges feature by Mark Gius: “The directives first_notification and last_notification apply to the total count of notifications on a particular service or host. It is sometimes desirable to escalate after the Nth critical notification, rather than after a total number of N notifications have been sent.”
Max Schubert’s patch to add enhanced diagnostic output when a regular expression fails to compile also has been added to Icinga.
There have been questions about another syslog facility – Icinga can now send log messages to syslogd using a local facility instead of the default one. If enabled you can chose between 0 to 7.
Currently Icinga uses popen and system to run active check commands with shell intepretation. If using execv instead so there won’t be no shell expansion required. This means that 1 less process (sh) is required to execute an active check, which should give a performance improvement. When running the active check, check if there are any shell metacharacters. If there are, fallback to the shell invocation. Otherwise use the new execv method.
We had a speedup of parsing status.dat a while ago, now Matthieu Kermagoret provided another patch for minimizing loading time of the retention file. From his reports, they used a standard setup with 1500 hosts, 19000 services and around 80 000 comments – before the restart took 20 minutes. Having the patch applied, only 2.6 seconds (!).
Icinga Core, CGIs & IDOUtils fit perfectly together with Docs, the API and the new Web. Please help us test for the upcoming release on 30.6.2010 (counter is GMT+1) and report issues !!! 🙂 Interested in Icinga development and (re-)implement features and resolve performance issues? – Then please get in touch:
* IRC: irc.freenode.net #icinga #icinga-devel
* Icinga Portal