Project

General

Profile

Breve descrizione report icinga con jasper

https://www.icinga.org/about/icinga-reporting/get-started/
https://wiki.icinga.org/display/howtos/Icinga+Web+Reporting+Integration

Installo php-soap:

apt-get install php-soap

Abilitazione reporting:

Si abilita il reporting da parte di icinga andando ad aprire il file /etc/icinga-web/conf.d/module_reporting.xml in particolare si cambia a true il valore di module enabled :

nano /etc/icinga-web/conf.d/module_reporting.xml
<module enabled="true">

Dopo di che si deve effettuare la pulitura della cache, che deve essere fatta ogni volta che si cambia il file di configurazione di icinga-web:

/usr/lib/icinga-web/bin/clearcache.sh

Nel file /etc/icinga-web/conf.d/module_reporting.xml si cambiano anche i valori relativi ai parametri di collegamento a jasperserver
cambiando le righe:

...
<ae:parameter name="jasper_url">http://127.0.0.1:8080/jasperserver</ae:parameter>
...
...
<ae:parameter name="tree_root">/icinga</ae:parameter>
...

in:

...
<ae:parameter name="jasper_url">http://192.168.1.126:8080/jasperserver</ae:paramete>
...
...
<ae:parameter name="tree_root">/icinga/reports</ae:parameter>
...

Si effettua una nuova pulizia della cache:

/usr/lib/icinga-web/bin/clearcache.sh

Cronks:

Si procede con le modifiche al file /etc/icinga-web/conf.d/cronks.xml cambiando la riga:

...
<ae:parameter name="hide">true</ae:parameter>
...

nella riga:

...
<ae:parameter name="hide">false</ae:parameter>
...

Per le distribuzione Debian si deve creare una giusta cartella per i report con:

install --directory --mode=0770 --owner=www-data --group=www-data /var/cache/icinga-web/reports

Tornando al file /etc/icinga-web/conf.d/module_reporting.xml si deve aggiungere una riga per ridefinire cartella dei report:

nano /etc/icinga-web/conf.d/module_reporting.xml

aggiungendo una linea:

<setting name="dir.download">/var/cache/icinga-web/reports</setting>

ottenendo qualcosa del tipo:

<module enabled="true">
            <settings>
                    <setting name="jasperconfig.default">
                        <ae:parameter name="jasper_url">http://192.168.1.126:8080/jasperserver</ae:parameter>
                        <ae:parameter name="jasper_user">jasperadmin</ae:parameter>
                        <ae:parameter name="jasper_pass">jasperadmin</ae:parameter>
                        <ae:parameter name="tree_root">/icinga/reports</ae:parameter>
                    </setting>

                    <setting name="dir.download">/var/cache/icinga-web/reports</setting>
            </settings>
    </module>

MySQL

si fornisce a MySQL le funzioni su cui si basano i servizi importando il file availability.sql sulla macchina su cui è installato icinga con:

mysql icinga < icinga-reports-1.9.0/db/icinga/mysql/availability.sql

oppure copiandolo dalla macchina su cui si trova icinga-reports:

scp db/icinga/mysql/availability.sql mysqlmast:

per controllare che tutto sia effettivamente andato a buon fine si può fare:

mysql -u icinga-idoutils -p
Enter password:
mysql> SELECT * FROM INFORMATION_SCHEMA.ROUTINES;

ottenendo qualcosa del tipo:

+---------------------+-----------------+----------------+---------------------+--------------+----------------+--------------+--------------------+---------------+-------------------+-----------------+------------------+-----------------+----------+---------------+---------------------+---------------------+----------+-----------------+----------------+----------------------+----------------------+--------------------+
| SPECIFIC_NAME       | ROUTINE_CATALOG | ROUTINE_SCHEMA | ROUTINE_NAME        | ROUTINE_TYPE | DTD_IDENTIFIER | ROUTINE_BODY | ROUTINE_DEFINITION | EXTERNAL_NAME | EXTERNAL_LANGUAGE | PARAMETER_STYLE | IS_DETERMINISTIC | SQL_DATA_ACCESS | SQL_PATH | SECURITY_TYPE | CREATED             | LAST_ALTERED        | SQL_MODE | ROUTINE_COMMENT | DEFINER        | CHARACTER_SET_CLIENT | COLLATION_CONNECTION | DATABASE_COLLATION |
+---------------------+-----------------+----------------+---------------------+--------------+----------------+--------------+--------------------+---------------+-------------------+-----------------+------------------+-----------------+----------+---------------+---------------------+---------------------+----------+-----------------+----------------+----------------------+----------------------+--------------------+
| icinga_availability | NULL            | icinga         | icinga_availability | FUNCTION     | decimal(7,4)   | SQL          | NULL               | NULL          | NULL              | SQL             | NO               | READS SQL DATA  | NULL     | DEFINER       | 2013-07-22 13:57:32 | 2013-07-22 13:57:32 |          |                 | root@localhost | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
+---------------------+-----------------+----------------+---------------------+--------------+----------------+--------------+--------------------+---------------+-------------------+-----------------+------------------+-----------------+----------+---------------+---------------------+---------------------+----------+-----------------+----------------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)

si danno i permessi necessari all'utente che si collegherà ad icinga col client:

GRANT ALL ON icinga.* To 'icinga-idoutils'@'macchina_jasper' IDENTIFIED BY PASSWORD 'xxxxxxxxxxxxxxxxx';

anche se da documentazione basterebbe un:

GRANT EXECUTE ON icinga.* To <username>@<host>;

infine ottenendo qualcosa del tipo:

mysql> show grants for 'icinga-idoutils'@'macchina_jasper';
+----------------------------------------------------------------------------------------------------------------------------+
| Grants for icinga-idoutils@miller.fi.trl                                                                                   |
+----------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'icinga-idoutils'@'macchina_jasper' IDENTIFIED BY PASSWORD 'xxxxxxxxxxxxxxxxx'                       |
| GRANT EXECUTE ON `icinga`.* TO 'icinga-idoutils'@'macchina_jasper'                                                         |
+----------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

Accorgimenti su macchina Icinga:

a installazione avvenuta c'erano alcuni problemi riguardo i valori attribuiti di default ad alcune variabili del file /etc/php5/conf.d/suhosin.ini
per cui è risultato necessario cambiare alcuni valori da 64 a 128, seguendo le indicazioni ricavate consultando i log nel syslog:

less /var/log/syslog

Macchina Jasper:

Bisogna installare icinga-reports per cui:

git clone git://git.icinga.org/icinga-reports.git ; cd icinga-reports

dopo di che:

./configure --with-icinga-user=root --with-icinga-group=root --with-jasper-server=/opt/jasperreports-server-cp-5.1.0/

anche se da letteratura sarebbe stato:

./configure --with-jasper-server=/opt/jasperreports-server-cp-5.1.0/

ma vengono fuori problemi con l'username.

A questo punto poi si fa:

make install-mysql-connect

  o

make install

ed infine si riavvia jasper:

cd /opt/jasperreports-server-cp-5.1.0/

./ctlscript.sh stop

./ctlscript.sh start

Si accede a questo punto tramite pagina web con pw e username di default jasperadmin:

http://localhost:8080/jasperserver/login.html

nella sezione cartelle andiamo in root --> Icinga --> Data Sources e si controlla la pagina di configurazione IDO secondo quanto suggerito da letteratura (https://wiki.icinga.org/display/howtos/Setting+up+Icinga+with+Reporting)
avendo cura di cambiare la sezione Host e URL nel caso le installazioni di Jasper e Icinga fossero fatte su due macchine diverse (come nel caso da noi trattato).

Accorgimento su macchina jasper:

si è dovuto creare un utente Icinga sulla macchina per generare dei file che nel processo di installazione vengono controllati e nel caso non vengano trovati l'installazione non riesce ad andare a buon fine.