Vous êtes ici:

Menu


Stacks Image 43690
Avertissement
Ce module a été modifié par mes soins pour être compatible avec Centreon-Web version 2.7.x et ultérieure, il n’est pas exempt de bug. Merci de m’informer des éventuelles erreurs que vous aurez constatées.
Stacks Image 43684
Ce module permet d’envoyer des messages avec un rapport d’état de disponibilité des groupe d’hôtes et de services. Les reportings sont au format PDF et sont envoyés aux destinataires en fonction de la période choisie. Voici une procédure pour le rendre compatible avec la version 2.7x de Centreon-Web.

1 Installation du module

Récupérez les sources avec la commande git
git clone https://github.com/Centreon-Community/centreon-pdf-reports.git
Lancez l'installation.
./install.sh -i
Vous obtiendrez le résultat suivant.
###############################################################################
# #
# Module : PDFReports version 1.0 #
# #
###############################################################################
------------------------------------------------------------------------
Checking all needed binaries
------------------------------------------------------------------------
rm OK
cp OK
mv OK
/bin/chmod OK
/bin/chown OK
echo OK
more OK
mkdir OK
find OK
/bin/grep OK
/bin/cat OK
/bin/sed OK

------------------------------------------------------------------------
Load parameters
------------------------------------------------------------------------
Please specify the directory that contains "instCentWeb.conf"
Saisissez le chemin des fichiers de configuration de Centreon généralement situé dans le dossier /etc/centreon.
> /etc/centreon

------------------------------------------------------------------------
PDFReports Module Installation
------------------------------------------------------------------------
Replacing macros OK
Setting right OK
Setting owner/group OK
Create module directory OK
Copying module OK
Copying cron file OK
Delete temp install directory OK

The pdfreports.1.0 installation is finished OK
See README and the log file for more details.
###############################################################################
# #
# Please go to the URL : http://your-server/centreon/ #
# to finish the setup #
# #
# #
###############################################################################

2 Configuration du module

Sélectionnez Administration (1) / Extensions (2) et éventuellement Modules (3) de la section Extensions.
Stacks Image 43704
Cliquez sur l’icône action pour l’installation du module
Stacks Image 43707
Cliquez sur install Module
Stacks Image 43710
Le module est installé.

3 Adaptation du module

Le fichier /etc/cron.d/pdfreports est au format MS-DOS. Nous allons enlever les ^M sur les fins de ligne. Utilisez les commandes suivantes :
apt-get install dos2unix
dos2unix /etc/crond.d/pdfreports
Il faut modifier le fichier car une syntaxe n’est par accepté par le service cron comme le montre le fichier /var/log/syslog
Oct  4 09:59:01 deb260nagios /usr/sbin/cron[1981]: (*system*pdfreports) RELOAD (/etc/cron.d/pdfreports)
Oct 4 09:59:01 deb260nagios cron[1981]: Error: bad username; while reading /etc/cron.d/pdfreports
Oct 4 09:59:01 deb260nagios /usr/sbin/cron[1981]: (*system*pdfreports) ERROR (Syntax error, this crontab file will be ignored)
Il va falloir supprimer la variable $CRONTAB_EXEC_USER dans le fichier /etc/crond.d/pdfreports car elle n’est pas accepté par le service cron. De plus l’utilisateur apache ne donne pas satisfaction pour la construction des PDF comme le montre la copie d’écran ci-dessous.
Stacks Image 43790
Erreur avec l’utilisateur apache
Nous allons utiliser l’utilisateur centreon. Nous allons préparer le dossier du module avec les commandes suivantes. adaptez les chemins en fonction de votre installation.
chown -R centreon: /usr/share/centreon/www/modules/pdfreports/
chmod 775 /usr/share/centreon/www/modules/pdfreports
Modifions, maintenant le fichier /etc/cron.d/pdfreports. Ajoutons l’utilisateur centreon et ajoutons un paramètre pour la commande de purge des fichiers.
############################
# daily at 4 am
0 4 * * * centreon /usr/bin/php -q $PDFREPORTSPURGE yesterday >> $LOGFILE_PURGE 2>&1
5 4 * * * centreon /usr/bin/php -q $PDFREPORTS yesterday >> $LOGFILE 2>&1

# weekely at 3 am
0 3 * * 0 centreon /usr/bin/php -q $PDFREPORTSPURGE thisweek >> $LOGFILE_PURGE 2>&1
5 3 * * 0 centreon /usr/bin/php -q $PDFREPORTS thisweek >> $LOGFILE 2>&1

#0 4 * * * $CRONTAB_EXEC_USER /usr/bin/php -q $PDFREPORTS last7days >> $LOGFILE 2>&1

# last day of month at 6 am
0 6 28-31 * * centreon [ `/bin/date +\%d` -gt `/bin/date +\%d -d "1 day"` ] && /usr/bin/php -q $PDFREPORTSPURGE thismonth >> $LOGFILE_PURGE 2>&1
5 6 28-31 * * centreon [ `/bin/date +\%d` -gt `/bin/date +\%d -d "1 day"` ] && /usr/bin/php -q $PDFREPORTS thismonth >> $LOGFILE 2>&1

#0 4 * * * $CRONTAB_EXEC_USER /usr/bin/php -q $PDFREPORTS last30days >> $LOGFILE 2>&1

# Every first day of the month at 4 am
0 4 1 * * centreon /usr/bin/php -q $PDFREPORTSPURGE lastmonth >> $LOGFILE_PURGE 2>&1
5 4 1 * * centreon /usr/bin/php -q $PDFREPORTS lastmonth >> $LOGFILE 2>&1

#0 4 * * * $CRONTAB_EXEC_USER /usr/bin/php -q $PDFREPORTS thisyear >> $LOGFILE 2>&1
Ce fichier servira à l’envoi automatique des reportings. Vous constaterez que seul les rapports correspondants aux périodes yesterday, thisweek, thismonth et lastmonth seront traités. Nous devons modifier le fichier /usr/share/centreon/www/modules/pdfreports/PDF-Func.php afin de rediriger la copie des fichiers PDF dans le bon répertoire.
A la ligne 123, modifiez
$pdfDirName = getGeneralOptInfo("pdfreports_path_gen") . $endYear.$endMonth.$endDay . "/";

par
$pdfDirName = getGeneralOptInfo("pdfreports_path_gen") . $path_www . "/";

A la ligne 127, modifiez
mkdir($pdfDirName);

par
mkdir($pdfDirName,0775,true);
Une erreur sur l’utilisation d’un fonction PHP ayant le même nom avec la version 2.7x empêche la page de configuration de s’afficher dans l’interface Web. Il faut donc modifier quelques fichiers PHP. Commençons par le fichier /usr/share/centreon/www/modules/pdfreports/DB-Func.php. Nous partirons du principe que vous avez installer Centreon dans /usr/share/centreon.
A la ligne 64, modifiez
function getCentreonVersion()

par
function getCentreonVersionPdf()

Rajoutez vers la ligne 62, la fonction suivante

function getVersionNagios() {
global $pearDB;
$DBRESULT = $pearDB->query("SELECT `value` FROM `options` WHERE `key` = 'nagios_version' LIMIT 1");
$row = $DBRESULT->fetchRow();
$DBRESULT->free();
return $row["value"];
}
Modifier le fichier /usr/share/centreon/www/modules/pdfreports/cron_pdfreports.php.
A la ligne 73, modifiez
$centreon_version =getCentreonVersion();

par
$centreon_version =getCentreonVersionPdf();
Modifier le fichier /usr/share/centreon/www/modules/pdfreports/cron_pdfreports_purge.php.
A la ligne 73, modifiez
$centreon_version =getCentreonVersion();

par
$centreon_version =getCentreonVersionPdf();
Une fonction a été déplacée et ne fonctionne plus avec la version Centreon-Web 2.7, donc toujours dans le fichier /usr/share/centreon/www/modules/pdfreports/cron_pdfreports.php.
vers la ligne 83, modifiez
$centreon = new Centreon($centreonAuth->userInfos,getVersion());

par
$centreon = new Centreon($centreonAuth->userInfos,getVersionNagios());

A la ligne 149, modifiez
$Allfiles[] = pdfGen( getMyHostGroupName($hgs_id), 'hgs', $start_date, $end_date, $stats, $l , $reportinfo["report_title"] , "" );

par
$Allfiles[] = pdfGen( getMyHostGroupName($hgs_id), 'hgs', $start_date, $end_date, $stats, $l , $reportinfo["report_title"] , $reportinfo['report_id'] );

A la ligne 165, modifiez
$Allfiles[] = pdfGen( getMyServiceGroupName($sg_id), 'sgs', $start_date, $end_date, $sg_stats, $l,  $reportinfo["report_title"] , «  »);

par
$Allfiles[] = pdfGen( getMyServiceGroupName($sg_id), 'sgs', $start_date, $end_date, $sg_stats, $l,  $reportinfo["report_title"] , $reportinfo['report_id'] );
Modifier le fichier /usr/share/centreon/www/modules/pdfreports/cron_pdfreports_purge.php
A la ligne 70, modifiez
$centreon_version =getCentreonVersion();

par
$centreon_version =getCentreonVersionPdf();

De même il faut modifier la fonction qui n’existe plus.
vers la ligne 81, modifiez
$centreon = new Centreon($centreonAuth->userInfos,getVersion());

par
$centreon = new Centreon($centreonAuth->userInfos,getVersionNagios());

Rajoutez ceci vers la ligne 107
$period_arg = NULL;

if (count($argv) > 1)
$period_arg = $argv[1];
Il faudra aussi modifier un enregistrement dans la table topology de la base Centreon pour afficher le menu PDF Reports dans la section Administration. Connectez-vous en ligne de commande dans la base Centreon.
mysql -u centreon -p centreon
Modifiez l’enregistrement suivant :
UPDATE `centreon`.`topology` SET `topology_parent` = '501', `topology_page` = '50120' WHERE `topology`.`topology_url_opt` = '&o=pdfreports';

4 Customisation du module

en cours de réalisation.

5 Paramétrage d’un reporting PDF

Maintenant, nous pouvons attaquez le paramétrage de notre module. PDF reports nous permet d’envoyer des reporting Hosts group et Services group. Sélectionnez le menu Configuration / PDF Reports. Cliquez sur Add. Le design est à améliorer, mais pour l’instant cela fonctionne.
Stacks Image 43717
La page des reportings
Ajouter un reporting, saisir le nom et la description. Cliquez sur Enabled.
Stacks Image 43722
Description d’un reporting
Saisir un Titre, l’objet du message qui vous sera envoyé et le texte du corps de message. Ensuite indiqué la période souhaitée et le ou les groupes d’hôtes et services.
Stacks Image 43742
Paramétrage du reporting
Ensuite ajoutez un contact et le groupe associé (obligatoire). Paramétrez la rétention des reportings. Cliquez sur Save.
Stacks Image 43739
Notification du reporting

6 Test du module

Si vous avez bien configuré votre module, vous devriez recevoir le lendemain, votre premier reporting comme ceci. Il reste encore quelques améliorations comme la mise à jour du logo Centreon. Chose faite en modifiant le fichier centreon.gif que vous retrouverez dans le dossier /usr/share/centreon/www/modules/pdfreports/img/headers.
Stacks Image 43753
Exemple de message
Vous pouvez aussi forcer l’envoi d’email comme ci-dessous. Attention, le chemin doit correspondre à votre installation.
/usr/bin/php -q /usr/share/centreon/www/modules/pdfreports/cron_pdfreports.php yesterday
comments powered by Disqus
 Vous êtes ici: