Icinga

What's New in Icinga Core 1.0.2 and Icinga Web 1.0.1

Icinga Core:

Enhancements:

* core: Schedule Downtime for host and all services now works as expected

* core: Servicechecks with excluded timeperiods are correctly re-scheduled

* core: Error out if service_description is missing in service definition

* core: Added syslogd local facility

* core: Use execv for active checks w/o metacharacters

* core: Speed up loading retention.dat into the Core

* core: Initscripts handle the lock file now correctly and outputs config errors

* core: Better Solaris detection (in progress)

* core: Add event profiling option and dumping entire scheduling queue

* cgis: display_name on host/service definition will be displayed in classical UI

* cgis: multiple urls for notes|action_url on host|service definition in classical UI

* cgis: removing a comment on the classical UI does not delete all of them anymore

* idoutils: IDOMOD now has it's own object version on the NEB API, this requires both Icinga and IDOUtils to be upgraded to 1.0.2 – check docs for more information upgrading_idoutils

* idoutils: Performance improvements on SQL queries and objects hash list

Fixes:

* core: Fixes for Notification not/incorrectly being sent/calculated

* core: A long list of patches pending on mailinglists and trackers, check the Changelog for more information

* idoutils: Fixed major bug on IDOUtils object relations, causing huge performance issues - added upgrade scripts too

To have a deeper look, please visit the Changelog

Icinga Web:

* Core code reduced and made more robust

* Core code detatached to its owning modules

* Module framework defined, extractor and installer

* Principals now works in one step (one function code)

* Instances included

* Ajax driven filters, made some new filters

* REST/Json api interface (web/api, https://dev.icinga.org/issues/305)

* New summary cronk (faster, faster, faster)

* New cronk list (also categories, faster, faster, faster)

* Single click in the web interface

* Translation (not complete)

Insidertips and more Documentation for Icinga-Web: Icinga-Wiki

To have a deeper look, please visit the changelog-web

Icinga Docs:

* Updates and fixes for quickstart guides

* Updates and fixes for upgrading Icinga and IDOUtils, visit the docs for more Information upgrading_idoutils

* Updates and fixes for Api-section

* Updates and fixes for Web-Install-Section

* Updates for objectdefinitions

* New extended docs for the IDOUtils, Chapter 11.

* New section Running icinga - "Diagnostics"

* New testing guides for Icinga: Icinga-Development

Insidertips and more Documentation for Icinga-Web: Icinga-Wiki

Should you find any issues, please report them to the following links:

Report Issue Icinga Core

Report Issue Icinga Web

Report Issue Icinga API

Report Issue Icinga Docs

Changelog of the Icinga Core

Icinga Core 1.0.2 - 30/06/2010

* core: init script shows config errors option; don't remove pidfile if icinga did not stop in a timely manner

* core: check if icinga running before starting; if died remove lockfile first

* core: add in sync retention facility (Ton Voon, Opsera Ltd)

* core: add new is_volatile setting of 2 for services, which respects the re-notification interval for notifications (Ton Voon)

* core: add Icinga option -S functions much like -s but will dump the entire scheduling queue is it would run, in addition to providing the summary data (Steven (Steven D. Morrey)

* core: icinga can send log messages to syslogd using a local facility instead of the default one

* core: enhanced diagnostic output when a regular expression fails to compile (Max Schubert)

* core: add state-based escalation ranges (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.

* core: add event profiling option for stats of event counts and time taken for events

* core: retention file loading speedup (Matthieu Kermagoret)

* cgi: add opt-in display_name from hosts/services definitions; if set, they will be shown in the classical ui

* cgi: re-add quick search to navmenu in order to provide quick host/service lookups without idoutils/api

* cgi: add event profiling stats of event counts and time taken for events in 'Performance Info'

* cgi: add config option show_all_services_host_is_authorized_for to cgi.cfg It's possible to disable that the user can see all services only being an authorized contact for the host

* cgi: add multiple urls for notes|action_url on host|service object definition (Jochen Bernd).

* idoutils: add config options to allow users decision on clearing realtime and config tables on Icinga core startup. Actual config objects are marked as (in)active, because disabling the clearing results in historical config

* idoutils: remove mysql binary selects, use case-sensitive collation instead (William Preston)

* idoutils: Spread the list of linked lists thinner (extend objects hash slots) (Opsera Ltd)

* idoutils: change select * into select [*_]id if unused results

* idoutils: add syslog output, if ido2db is unable to do initial db query

* idoutils: rewrite initscript not only depending on lockfile

* idoutils: check if ido2db running before starting; if died remove lockfile first

* idoutils: add upgrade scripts to fix object relations to historical data

* config: add trailing slash in apache config for html dir

FIXES:

* core: fix scheduling downtime for all services AND the host (cgi url, external commands)

* core: fix custom notifications being sent during downtimes (Sven Nierlein)

* core: fix spurious dollar signs added to command_lines (Alexander Wirt)

* core: fix for choosing next valid time on day of DST change when clocks go one hour backwards (Ton Voon)

* core: fix for nagios now erroring when "Error: Could not find any contactgroup matching..." displayed (Ton Voon)

* core: minor cleanups to icingastats.c (Eric Sesterhenn)

* core: remove dead code (Andreas Ericsson)

* core: introduce common/shared.c and include/shared.h (Andreas Ericsson)

* core: move cgiutils.h compile time option macros to config.h (Andreas Ericsson)

* core: icinga.c: remove conditional main() configuration (Andreas Ericsson)

* core: icinga.c: replace asprintf() + write_to_logs_and_console() with logit() (Andreas Ericsson)

* core: revamp logging somewhat (Andreas Ericsson)

* core: create logging.h, with stubs for the common function in cgiutils.c (Andreas Ericsson)

* core: Janitor patch: Remove unused variables (Andreas Ericsson)

* core: base/utils.c: typo-fix s/escape_newlines==/escape_newlines_please==/ (Andreas Ericsson)

* core: cgi/cmd.c: Squelch warning about empty gnu_printf format string (Andreas Ericsson)

* core: more linker tricks and less #ifdef's - log_debug_info() stubbed (Andreas Ericsson)

* core: common/objects.c: Use calloc() instead of malloc() + manual NULL'ing (Andreas Ericsson)

* core: macros: Protect against typos in macro names (Andreas Ericsson)

* core: macros: Add NOTIFICATIONISESCALATED to the list of macro names (Marc Powell)

* core: comments: Remove one comment at a time from hashlist (Hiren Patel)

* core: fix checking of the open(2) system call (David Glick)

* core: xodtemplate: Use macro magic to get rid of 900 LoC (Andreas Ericsson)

* core: more s/malloc(size) + init/calloc(1, size)/ replacements (Andreas Ericsson)

* core: header files: Remove dead prototypes (Andreas Ericsson)

* core: remove grab_contactgroup_macros() and its prototype (Andreas Ericsson)

* core: base/commands.c: Fix error path of opening checkresult files (Andreas Ericsson)

* core: base/nebmods.c: Replace local file-copy hack with my_fcopy() (Andreas Ericsson)

* core: enable compiler flag -Wall by default (base/cgi/common/idoutils)

* core: fix open() error checking in move_check_result_to_queue() (Andreas Ericsson)

* core: base/utils.c: Refactor my_fcopy() (Andreas Ericsson)

* core: xdata/xpddefault.c: Close perfdata files if fd's are >= 0 (Andreas Ericsson)

* core: fix xpddefault_{host,service}_perfdata_file_pipe not set properly on configuration re-read

* core: fix SIGSEGV in checks.c on Solaris (Torsten Huebler)

* core: added icinga object version variable in neb api for usage with idomod

* core: fix notification_period inheritance for services (Gordon Messmer)

* core: only catch SIGSEGV if we're not dumping core and running as a daemon (Andreas Ericsson)

* core: fix for notifications not being sent out when scheduled downtime is cancelled (Daniel Pouzzner)

* core: fix for first notification delay being calculated incorrectly, and notifications potentially going out early (reported by Pawel Malachowski)(Ethan Galstad)

* core: error out on services without description in service object definition

* core: fix servicechecks with timeperiods containing 'exclude' directives are incorrectly re-scheduled

* cgi: minor cleanups to cgiutils.c (Eric Sesterhenn)

* cgi: fix cmd.cgi incomplete output for command description

* cgi: fix typo: "stye" instead of "style" in cgi/tac.c

* cgi: check_daemon_running() not working on MacOS (Hendrik Baecker)

* cgi: fix CGIs don't show correct error on missing archived icinga-DATE.log file

* cgi: fix missing js files

* idoutils: Host DB inserts use string 'NULL\n' instead of NULL (William Preston)

* idoutils: ndo2db_get_object_id fails to return existing IDs (William Preston)

* idoutils: fix postgres wrong type in service_object_id

* idoutils: modify string escaping again (mysql, pgsql), needs a full rewrite though

* idoutils: fix for oracle when binding a NULL value on contactnotificationmethods

* idoutils: completely renamed idoutils (s/ndo/ido/g etc), removing old sources

* idoutils: fix compilation error of SUN_LEN on Solaris

Icinga Core 1.0.1 - 03/03/2010

* core: updated docs

* core: fix config parsing for icinga_user and icinga_group

* core: fix status.dat ok, no daemon running, show error instead of old data

* core: permanently remove sleep on run_event == FALSE in main loop (Max Schubert)

* core: add service_check_timeout_state configuration variable. This setting determines the state Icinga will report when a service check times out - it does not respond within service_check_timeout seconds.

  • c - Critical (default)

  • u - Unknown

  • w - Warning

  • o - OK

* core: add escalation_condition definition (Vitali Voroth DECOIT GmbH) The escalation_condition option is completely optional and can be defined for host escalations as well as for service escalations.

escalation_condition <condition> ( [ &/ | ] <condition> )* where <condition> is either host hostname = [u,d,o] or service hostname.service_description] = [w,u,c,o].

The escalation_condition accepts a list of one or more conditions separated by & (logical AND) or | (logical OR).

  • w = WARNING

  • u = UNKNOWN

  • c = CRITICAL

  • o = OK for services or UP for hosts

  • d = DOWN for hosts

* idoutils: add ido2db threaded housekeeper

  • periodic cleanup will now be performed in own thread

  • startup blocking behaviour removed

  • housekeeper will wait for idomod instance, idle wait using und db_hello

  • creates own db connection and does its job

* idoutils: add indexes for delete/select statements

  • delete/select will perform faster

  • getting cached objects with select runs faster

  • getting logentries within icinga-web is faster

* idoutils: reorganize db setup files for MySQL/Postgresql/Oracle

  • module/idoutils/db/<rdbms>/ holds needed files

  • module/idoutils/scripts/ with installdb/upgradedb for MySQL

  • updated Makefile, README

* idoutils: complete oracle rewrite to improve performance

query rewrite:

  • 1x SELECT latest data time as is (called only at startup)

  • dynamic binded procedure for DELETE on table by instance_id called at startup for cleaning config/status

  • dynamic binded procedure for DELETE on tably by instance_id, field<time called during periodic cleanup in threaded housekeeper

  • all other queries are prepared with their own statement handler

    • 4x DELETE

    • 52x MERGE

    • 9x INSERT

    • 9x UPDATE

    • 5x SELECT

  • rewritten getting cached object_id using select

  • all queries use binded unixtimestamp instead of prepared query string

  • removed autoincrement sequence and insert triggers to update primary key

  • added sequence for each table

  • INSERT INTO ... (id, ...) VALUES (seq_name.nextval, ...) will do the trick

  • added RETURNING id INTO :id for INSERT statements to save one round trip

  • MERGE does not support returning INTO, added SELECT seq_name.currval query instead for fetching last inserted id

  • add explicit upgrade information and provided procedure to alter sequence start when importing data (check oracle-upgrade-1.0.1.sql for more info)

* idoutils: add upgrade path for mysql/pgsql/oracle for 1.0.1

* idoutils: add initial debug output for idomod (to be set in idomod.cfg)

* idoutils: add database name in connection msg to syslog

* idoutils: change mysql db engine to innodb (no table locking, better transcations)

FIXES

* core: fix segfault in cmd.cgi

* core: fix event broker callback function self de-registering for callbacks (Sean Millichamp)

* core: add missing sound.js provided by scriptaculous

* core: string replaces for icinga

* core: typo fix in mrtg.cfg (Dennis van Zuijlekom)

* core: add init info as required by LSB

* core: fix perl tests

* core: fix missing clean & distclean against tap/ directory

* core: fix several libtap c TAP tests and cleanups

* core: refactor perl test to use icingaadmin

* core: add cgi argument 'nodaemoncheck' and tests

* core: add config.cgi test

* core: add subtests to extinfo tests

* core: add tests against histogram.cgi

* core: add $srcdir to paths

* core: fix idomod doesn't de-initialize after config error

* core: fix make fullinstall/idoutils without enabled idoutils during configure

* idoutils: modify string escaping for mysql and pgsql

* idoutils: fix pgsql table systemcommands (missing column 'output')

* idoutils: fix arraysize of es in save_custom_variables

* idoutils: rename ndomod.h to idomod.h

* idoutils: fix several naming issues

* idoutils: fix acknowledgments query, wrong buffer freed/set as query to db (Bruce Pennypacker)

* idoutils: fix contactnotification data array, command args were not provided (Bruce Pennypacker)

* idoutils: fix custom_variables object_id type int => unsigned long

Icinga Core 1.0 Stable - 16/12/2009

* core: create webserver conf.d dir if not existing

* core: output the correct config parameter name on error message

* core: run dos2unix on spec file

* core: check /proc/$pid instead of lock file while waiting for shutdown

* core: fix cgi/config.c typo

* core: fix typo in cgi/cmd.c

* core: applied nagios patches after 3.2.0

* idoutils: change default data_processing_options in idomod.cfg

* idoutils: fix missing query arguments in servicecheck query

* idoutils: fix thisversion and perl path generation in db install scripts

* idoutils: change db README to docs.icinga.org

* idoutils: fix wrong debug output in db_hello()

* idoutils: fix save custom variables segfault caused by wrong char*

* idoutils: fix duplicate rows in table servicecheck

* idoutils: fix duplicate rows in table systemcommands, timedevents, timedeventqueue (missing unique keys)

* idoutils: add upgrade path/sql queries for unique key failure - check the docs for upgrading information

* idoutils: Oracle improvents:

* add prepared statements for most called queries

- hoststatus

- servicestatus

- hostchecks

- servicechecks

- timedevents

- contact_notificationcommands

- programstatus

* modify data[] to get unixtimestamps only

* rewrite prepared statement queries to use SELECT unixts2date(unixtimestamp) FROM DUAL

* allow rebinding of params in prepared statement for multi execution

* prepared statement at db init

* bind params the correct way

* execute binded statement query instead of plain MERGE statement

* code is now the same as NDOUtils Oracle, but with

- better code base (current NDOUtils code)

- long_output

- SSL support

- better library: ocilib instead of own driver

- more prepared statements/bind param queries

* split code into ocilib OR libdbi

* --enable-oracle during configure decides which rdbm lib will be used

Icinga Core 1.0 RC - 28.10.2009

* idoutils: add Oracle support with oclilib

* idoutils: add ssl support

* idoutils: add configure --enable-oracle

* idoutils: add configure --enable-ssl

* idoutils: add configure -with-ocilib-lib/inc for ocilib detection

* idoutils: add oracle support to ido2db.cfg

* idoutils: add ocilib runtime version check

* idoutils: add ocilib linked at runtime (prevents setting of $ORACLE_HOME during configure)

* idoutils: add ocilib hack to temp #undef CONFIG_H during compiling

* idoutils: add #define USE_ORACLE set by --enable-oracle

* idoutils: add #ifndef USE_ORACLE #else #endif to get code compatible with libdbi

* idoutils: add ocilib connection, statement, resultset

* idoutils: add ocilib execute statement, commit (no autocommit since we want to use the pros of Oracle!)

* idoutils: add ocilib insert id for sequence handling

* idoutils: add ocilib free statement to match with sequences

* idoutils: add oracle sysdate instead of NOW()

* idoutils: add long_output to oracle.sql - introduce clob (Character Large Object)

* idoutils: add even more debugoutput for Oracle

* idoutils: modify configure to use OCI_CHARSET_ANSI

* idoutils: modify configure to set LD_LIBRARY_PATH for ido2db init script

* idoutils: modify formatting to get more readable

* idoutils: fix typecast bug - unsigned long is bigger then int

* idoutils: fix Oracle notif_timeperiod_object_id (30 chars max)

* idoutils: fix Oracle table serviceescalationcontactgroups (30 chars max)

* idoutils: fix hoststatus/servicestatus/servicecheck unique constraint updating mismatch

* idoutils: fix insert_or_update queries where update violates unique constraint

* idoutils: remove and ignore oracle table_prefix (30 chars max)

* idoutils: workaround to handle more than 4k data which may exceed service outputs incl. long perf_data

* core init: delete 'su' usage since all previously su touched files were created by the icinga user

* idoutils: fix unescape bug during tabstops

* idoutils: fix idomod/icinga segfault while try to use ssl on unix sockets

* core configure: set INIT_OPTS depending on detected host OS (no more root:root on FreeBSD?)

* core spec: added new spec file

* idoutils: fix case insensitive comparison in MySQL using BINARY

* idoutils: change ido2db.cfg: ndo2db_[user|group] to ido2db_[user|group]

* core web: fix missing gif icon copy

Icinga Core 0.8.4 - 16/09/2009

* idoutils: fix failure_prediction_options in tables hosts, services for postgres

* idoutils: add configure support for manual libdbi detection

* idoutils: fix typo laste_state (wrong column)

* idoutils: fix buffer freeing with NAGIOS_SIZEOF_ARRAY

* idoutils: delete old mysql files coming from ndoutils

* idoutils: add new versionhandling, idomod/ido2db now shows version of Icinga core

* idoutils: rename existing mysql/pgsql files, added upgrade/fix files

* idoutils: fix wrong typecast in servicestatusdata_add, no more segfault while query preparing

* idoutils: add experimental db trimming interval option in ido2db.cfg

* core: fix wrong copyright url for Ethan

Icinga Core 0.8.3 - 09/02/2009

* idoutils: add PostgreSQL support

* new Icinga documentation in docbook and html format

* fetch current Nagios patches

* fix support links after make

* idoutils: add note if install desired but not enabled

* idoutils: fix installing of rc.ido2db in make install-idoutils

* idoutils: add db/pgsql.sql, adapted table scheme for postgresql

* idoutils: add time conversion functions for postgresql

* idoutils: add try update, if affected rows=0, then insert queries for postgresql

* idoutils: modify insert queries, normalized to sql-standard

* idoutils: add insert-or-update functions in dbqueries.c, prepared for more rdbms

* idoutils: modify insert-or-update queries, build data array for functions

* idoutils: fix string escaping for postgresql

* idoutils: fix last insert id for postgresql - needs defined sequence id for table

* idoutils: modify command_line in commands table to varchar(1024)

* idoutils: add more debug output

* idoutils: Support 8192 chars of perfdata

Icinga Core 0.8.2 - 08/12/2009

* create a new basic ido2db init script

* idoutils: fix child signal handling in ido2db

* idoutils: fix escaping of customvars before insert

* idoutils: fix in buggy rotate command execution

* idoutils: fix fmt specifier in ndo2db_daemonize() error

* idoutils: added long_output support to IDOUtils

* idoutils: Fix for not retrying read on 'EAGAIN' and 'EINTR' soft errors (Opsera Ltd)

* idoutils: Allow externalcommands table to be trimmed with a specific time limit (Opsera Ltd)

* icinga-api added: The search function now uses the icinga-api submodule

* various minor changes

Icinga Core 0.8.1 - 06/17/2009

* Archived Logfiles renamed from Icinga-date-syntax.log => icinga-date-syntax.log (capital 'i')

* cherry picked latest Nagios Patches (see Nagios Changelog below)

* new ido2db command switch: '-f' don't daemonize the ido2db

* ido2db will now prints out available database drivers

* fix ido2db segfault when try to access non existing tables

* DocBook v5 conversion

* Fix menu frameset cols width

Icinga Core 0.8 - 05/19/2009

* Almost biggest deal to rename the components

* including IDOUtils (former NDOUtils) into the core code, updating configure & make to get in touch with it

* changed database handling in IDOUtils from native database support to libdbi (libdbi.sourceforge.net) as an abstraction layer, enable compile try with "configure --enable-idoutils"

* Included a new stylesheet/icon theme based on Vautour Style. Vautour Style have been created by Yoann LAMY.

The menu of Vautour Style use the javascript framework MooTools (http://mootools.net/). The icons of Vautour Style use "Silk icon set" (http://www.famfamfam.com/lab/icons/silk/) created by Mark James.

"Silk icon set" is licensed under Creative Commons Attribution 2.5 License (http://creativecommons.org/licenses/by/2.5/).

Changelog of the Icinga Web

Icinga Web 1.0.1 30/06/2010

* Core code reduced and made more robust

* Core code detatached to its owning modules

* Module framework defined, extractor and installer

* Principals now works in one step (one function code)

* Instances included

* Ajax driven filters, made some new filters

* REST/Json api interface (web/api, https://dev.icinga.org/issues/305)

* New summary cronk (faster, faster, faster)

* New cronk list (also categories, faster, faster, faster)

* Single click in the web interface

* Translation (not complete)

Icinga Web 0.9.1-beta- 03/03/2010

* Added some Icinga specific principal target classes

* Finished editing of principal targets for users and groups

* Added editing models for principals

* Finished principal target filtering in xml templates

* Added default Icinga filter targets

* Moved icinga lib to a new place

* Added principal target toolkit for api search queries

* Finished principal target framework

* Added full command specification

* Fixed filter window bug (#232)

* Added host- / service status filter

* Host- / serviceinfo info icons

* ExtJs update to version 3.1

* DB field for class length 80 (principal target)

* CVs different for host and service (schema changes)

* Make fix for files (make)

* Removed temp files

* Changes status icon files (from icinga theme, smaller)

* Added some more state (flapping, downtime)

* Makefile bin permission (#245)

* Drop decision for phing

* Adapted the phing db targets to gnu make

* Some makefile fixes, help text, targets

* Updated phing to stable version 2.3.3

* Added AC options for db installing

* AC rewrites build.properties for phing

* Database.xml is now substituted by AC

* Write some doc for the new install process

* Stateful framework is running

* Changed cookie encoding method to json

* Tabpanel is persistent

* Cookie write filter merges the data

* Static content (tactical overview)

* ExtJS persistent fixes

* Portal is persistent (column models)

* Portal columns determined when dragging over

* Tactical overview

* Portalcronks height persistent

* Async cronk creation (Render hidden, render, show)

* Tactical overview template engine (ready)

* Wrapped static content into a div

* Auto refresh grid panels (settings)

* Grid filters are persistent

* Default font style

* Head elements (still missing ???)

* Auth framework changed (Multiple, simultaneous)

* Checked persistent, user specific data

* Reducing mass persistent data of filter settings

* Implemented categories for the cronks

* Cronks for usergroups only (#262)

Icinga Web 0.9.1-alpha-16/12/2009

* Updated install-fromscratch.txt: Apache settings ...

* Removed the yui top menu and implemented top nav with ExtJ

* Removed yui

* Removed unused libraries (gc-prettify, jquery, firebug-lite)

* Cherry-picked Hendriks makefile changes

* Changed installer toolkit to make basic installs

* Installer fixes: paths and permissions

* Added explicit bin owner for webfiles

* Added rabbit dropping script to clear temp and bak files

* Added deflate to htaccess

* Fixed guest users for the menuextender (adding items before admin submenu)

* Commands should work (Templates, Ajax proc, command factory, auth, ...)

* Changing API result keys to uppercase

* Opera array type fixes (notification baloon)

* Added AC macro to detect the web user

* Global xml replacements within the templates (view proc)

* Updating ExtJS to 3.0.3

* Removed php notice warnings (isset, undef vars)

* Fixed make error (#206)

Icinga Web 0.9.0-alpha -28/10/2009

* This is the initial release, prototyping, testing, think about features