Ce module a été testé avec Centreon-Web version 2.5.4, il n’est pas compatible dans l’état avec les version 2.7.x. Un autre article a été réalisé pour la compatibilité.
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. Attention ce module n’a pas été réactualisé depuis quatre ans, pour qu’il fonctionne correctement, nous allons réaliser de nombreuses modifications.
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 Setup (3) de modules.
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.
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
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);
Nous continuerons avec le fichier /usr/share/centreon/www/modules/pdfreports/cron_pdfreports.php
A la ligne 149, modifiez
par
A la ligne 165, modifiez
par
$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
Rajoutez ceci vers la ligne 107
$period_arg = NULL;
if (count($argv) > 1)
$period_arg = $argv[1];
4 Customisation du module
Vous avez la possibilité de modifier certains paramètres généraux comme l’adresse du serveur de mail, le logo, l’adresse d’origine du mail, le chemin des reportings et l’auteur du Rapport. Sélectionnez le menu Administration / Option / Option / PDF reports
Si vous essayez de sauvegarder tel quel, vous obtiendrez un message d’erreur car le programme ne peux créer le dossier des fichiers de reporting (/usr/share/centreon/www/modules/pdfreports/generatedFiles/).
créez le dossier generatedFiles avec les bons droits.
su - centreon -c 'mkdir /usr/local/centreon/www/modules/pdfreports/generatedFiles'
su - centreon -c 'chmod 775 /usr/local/centreon/www/modules/pdfreports/generatedFiles’
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
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
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