Ce module a été modifié par mes soins pour être compatible avec Centreon-Web version 2.7.x, il n’est pas exempt de bugs. Merci de m’informer des éventuelles erreurs que vous aurez constatées.
Attention, actuellement, ce module n'est plus compatible avec les versions 2.8.x.
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
Installez git si besoin.
Debian
apt-get install git -yCENTREON
yum install git -y
Récupérez les sources avec la commande git
git clone https://github.com/Centreon-Community/centreon-pdf-reports.git
Lancez l'installation.
cd centreon-pdf-reports
./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.
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. Installez le programme suivant :
Debian
apt-get install dos2unix -yCENTREON
yum install dos2unix -y
Utilisez la commande suivante :
dos2unix /etc/cron.d/pdfreports
dos2unix: converting file /etc/cron.d/pdfreports to UNIX format ...
Il faut modifier le fichier car une syntaxe n’est par accepté par le service cron comme le montre le fichier /var/log/syslog (Debian)
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.
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
# Purge
0 4 * * * centreon /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
par
A la ligne 127, modifiez
par
$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
par
Rajoutez vers la ligne 62, la fonction suivante
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
par
$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
par
$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
par
A la ligne 149, modifiez
par
A la ligne 165, modifiez
par
$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
par
De même il faut modifier la fonction qui n’existe plus.
vers la ligne 81, modifiez
par
Rajoutez ceci vers la ligne 107
$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.
Ajouter un reporting, saisir le nom et la description. Cliquez sur Enabled.
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.
Ensuite ajoutez un contact et le groupe associé (obligatoire). Paramétrez la rétention des reportings. Cliquez sur Save.
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.
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