These instructions were modified from documentation already on the [http://docs.icinga.org/1.4.0/en/ Icinga Website]. They are geared toward installing Icinga v1.4.
<div style="display:block;float:right;clear:right;margin-left:1em;text-align:center">[[File:Icinga-screenshot.png|275px|right|thumb|alt=Icinga Web 2.0 Interface|Icinga Web 2.0 Interface Screenshot]]</div>
These instructions are the combined effort documented in the following Icinga Documentation pages:
* [http://docs.icinga.org/1.4.0/en/ Icinga Version 1.4 Documentation]** [http://docs.icinga.org/1.4.0/en/quickstart-icinga.html Icinga Quickstart]** [http://docs.icinga.org/1.4.0/en/quickstart-idoutils.html Icinga with IDOUtils Quickstart]** [http://docs.icinga.org/1.4.0/en/icinga-web-scratch.html Installation of the Icinga-Web Frontend]** [http://docs.icinga.org/1.4.0/en/icinga-api.html Installation and use of the Icinga API]** [http://docs.icinga.org/1.2.0/en/icinga-web-pnp.html Integration of PNP4Nagios into Icinga Web]
* [https://wiki.icinga.org/display/howtos/Setting+up+icinga-mobile Setting up icinga-mobile]
Create /var/hda/web-apps/icinga/html/index.html and give it the following contents.
{{Text|Text=
<pre><nowiki><html>
<head>
<body>
</body>
</html></nowiki></pre>}}
'''NOTE:''' Icinga will install to /usr/local/icinga. Icinga Web will install to /usr/local/icinga-web
Download the [https://git.icinga.org/index?p=icinga-api.git;a=snapshot;h=refs/heads/master;sf=tgz latest Icinga API] from git snapshot as seen in the [http://docs.icinga.org/1.4.0/en/icinga-api.html Icinga API] documentation.
Move all source tarballs to /usr/local/src/ on your HDA server.
== Compile and install Icinga with IDOUtils ==
Create an icinga user, icinga-cmd group, and add the apache user and icinga user to the icinga-cmd group.
{{Code|<pre>
useradd -m icinga
groupadd icinga-cmd
usermod -a -G icinga-cmd icinga
usermod -a -G icinga-cmd apache}}</pre>
Now lets do some compiling.
{{Code|<pre>cd /usr/local/src/
tar -xzf icinga-1.4.2.tar.gz
cd icinga-1.4.2
make all
make fullinstall
}}</pre>
Edit the ''/usr/local/icinga/etc/objects/contacts.cfg'' config file with your favorite editor and change the email address associated with the icingaadmin contact definition to the address you'd like to use for receiving alerts.
Create the icinga db/user/pass for IDOUtils to use and import the mysql database (you should still be in ''/usr/local/src/icinga-1.4.2'' working directory).{{Code|<pre>hda-create-db-and-user icingamysql -u icinga -picinga icinga < module/idoutils/db/mysql/mysql.sql}}</pre>
Configure the Apache config located in ''/etc/httpd/conf.d/''
{{Code|<pre>
ls /etc/httpd/conf.d/ <nowiki>|</nowiki> grep icinga
#you should see two files. Something like 1002-icinga.conf and icinga.conf
#and move </VirtualHost> from the middle of the file to the end.
#be sure to confirm that the contents of icinga.conf are within 1002-icinga.conf before removing it
rm -f /etc/httpd/conf.d/icinga.conf}}</pre>
Start icinga, idoutils and restart the apache server.
{{Code|<pre>service icinga start
service ido2db start
service httpd restart}}</pre>
Visit http://icinga and make sure that it is currently working.
== Install Nagios Plugins ==
Time to compile again!
{{Code|<pre>cd /usr/local/src/
tar -xzf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
make
make install
service icinga restart}}</pre>
Now visit http://icinga/ and click on Service Detail in the menu on the left under Status. After about 5 mins everything should slowly start turning green.
== Install the latest Icinga API ==
Don't worry, there's nothing to compile here. But you still have to configure and install the Icinga API.
#and move </VirtualHost> from the middle of the file to the end.
#be sure to confirm that the contents of icinga-web.conf are within 1002-icinga.conf before removing it
rm -f /etc/httpd/conf.d/icinga-web.conf*}}</pre>
Restart icinga, idoutils, and apache.
{{Code|<pre>service icinga restartservice httpd restart}}</pre>Go to the webpath (http://icinga/icinga-web/) and check if the webinterface web interface starts without exceptions (database connections web and api). You can login with user 'root' and password 'password'.
== Install the Icinga Mobile Interface ==
Time for more source work!
{{Code|<pre>cd /usr/local/src/
#if you want the latest then run git clone http://git.icinga.org/icinga-mobile.git
unzip icinga-mobile-0.1.0.zip
make compile
make install
make install-apache-config}}</pre>
Now we need to do the same thing with the virtual server as we did originally with the Icinga install so that it shows up for our Virtual Host.
Now go to http://icinga/icinga-web and log in as root. Click on Admin > Users and Add new user. Give it the following settings.
Now on your iPhone or Android phone visit http://icinga/icinga-mobile. After it says request failed click on config. Change the Icinga Web URL to reflect your server name. For instance my server is icinga.home so your URL should be http://icinga.home/icinga-web. Make the Auth key "mobileaccess" without quotes.
=== Known Issues ===
* You have to make the server for icinga-web the exact same as what you access icinga-mobile on the config page of Icinga Mobile. For security reasons cross domain AJAX requests are denied. Example if you're accessing http://xyz/icinga-mobile then Icinga Web URL must be http://xyz/icinga-web. You can change the default credentials in Icinga Mobile from the instructions in the [https://wiki.icinga.org/display/howtos/Setting+up+icinga-mobile#Settingupicinga-mobile-Changingdefaultcredentials%28optional%29 Icinga Wiki] by editing ''/usr/local/src/icinga-mobile/lib/Model/IcingaConfiguration.js''. You will have to recompile and reinstall Icinga Mobile (without running "make install-apache-config").
* Icinga Mobile works neither with the desktop or mobile version of Firefox.
* You may have to visit your fully qualified domain name on your mobile phone to access Icinga. For instance going to http://icinga.home/icinga-mobile instead of http://icinga/icinga-mobile because the mobile browsers will attempt to search it like icinga is a keyword for a search engine.
== Add Icinga servers to the Admin CP ==
You will want to add two servers to your HDA Admin Control Panel. One for Icinga and one for IDOUtils.
Now PNP4Nagios is installed. You can visit PNP4Nagios by going to http://icinga/pnp4nagios
=== Integrating PNP4Nagios into Icinga ===
Read [http://docs.pnp4nagios.org/pnp-0.6/webfe PNP4Nagios documentation] for integrating PNP4Nagios into the Icinga Classic web interface. Read the [http://docs.icinga.org/1.42.0/en/icinga-web-pnp.html Icinga documentation] for integrating PNP4Nagios into the new Icinga Web 2.0 interface.
==== Classic Interface ====
Add the following lines to the top of ''/usr/local/icinga/etc/objects/templates.cfg''
Edit /usr/local/icinga/etc/objects/templates.cfg and within the ''generic-service'' definition add the following line underneath "''name generic-service''".
{{Text|Text=<pre><nowiki>use srv-pnp</nowiki></pre> ==== New Interface ====First make backup copies of the configuration files you need to modify.<pre>cd /usr/local/icinga-web/app/modules/Cronks/data/xml/grid/cp icinga-host-template.xml icinga-host-template.bakcp icinga-service-template.xml icinga-service-template.bak</pre>Now edit ''icinga-host-template.xml'' and right before the line ''<field name="host_info">'' add the following following field definition.<pre><nowiki><field name="pnp4nagios_host_link"><!-- datasource maps a data field from api call --><datasource><parameter name="field">HOST_NAME</parameter></datasource> <display><parameter name="visible">true</parameter><parameter name="label">Perfdata</parameter><parameter name="width">55</parameter> <parameter name="Ext.grid.Column"><parameter name="menuDisabled">true</parameter><parameter name="fixed">true</parameter></parameter> <parameter name="jsFunc"><!-- function to display column with icon in host status grid view --><parameter><parameter name="namespace">Cronk.grid.ColumnRenderer</parameter><parameter name="function">columnImage</parameter><parameter name="type">renderer</parameter> <parameter name="arguments"><parameter name="image">images/icons/application_view_gallery.png</parameter><parameter name="css">x-icinga-grid-link</parameter><parameter name="attr"><parameter name="qtip">Show host perfdata for this host</parameter></parameter></parameter></parameter> <!-- create cell click event for the previously defined column --><parameter><parameter name="namespace">Cronk.grid.IcingaColumnRenderer</parameter><parameter name="function">iFrameCronk</parameter><parameter name="type">cellclick</parameter><parameter name="arguments"><parameter name="title">Host perfdata for {host_name}</parameter><parameter name="url"><![CDATA[/pnp4nagios/index.php/graph?host={host_name}&srv=_HOST_]]></parameter><parameter name="activateOnClick">true</parameter></parameter></parameter></parameter></display> <filter><parameter name="enabled">false</parameter></filter> <order><parameter name="enabled">false</parameter></order></field></nowiki></pre>Edit ''icinga-service-template.xml'' and right before the line ''<field name="service_info">'' add the following following field definition.<pre><nowiki><field name="pnp4nagios_service_link"><!-- datasource maps a data field from api call --><datasource><parameter name="field">SERVICE_NAME</parameter></datasource> <display><parameter name="visible">true</parameter><parameter name="label">Perfdata</parameter><parameter name="width">55</parameter> <parameter name="Ext.grid.Column"><parameter name="menuDisabled">true</parameter><parameter name="fixed">true</parameter></parameter> <parameter name="jsFunc"><!-- function to display column with icon in host status grid view --><parameter><parameter name="namespace">Cronk.grid.ColumnRenderer</parameter><parameter name="function">columnImage</parameter><parameter name="type">renderer</parameter> <parameter name="arguments"><parameter name="image">images/icons/application_view_gallery.png</parameter><parameter name="css">x-icinga-grid-link</parameter><parameter name="attr"><parameter name="qtip">Show perfdata for this service</parameter></parameter></parameter></parameter> <!-- create cell click event for the previously defined column --><parameter><parameter name="namespace">Cronk.grid.IcingaColumnRenderer</parameter><parameter name="function">iFrameCronk</parameter><parameter name="type">cellclick</parameter><parameter name="arguments"><parameter name="title">Service perfdata for {service_name}on {host_name}</parameter><parameter name="url"><![CDATA[/pnp4nagios/index.php/graph?host={host_name}&srv={service_name}]]></parameter><parameter name="activateOnClick">true</parameter></parameter></parameter></parameter></display> <filter><parameter name="enabled">false</parameter></filter> <order><parameter name="enabled">false</parameter></order></field></nowiki></pre>You now have to clear the Icinga Web cache to finalize applying the settings you changed.<pre>/usr/local/icinga-web/bin/clearcache.sh</pre>