Vous êtes ici:

Menu


Stacks Image 43913
Avertissement
Ce module a été testé avec les versions 19.10, 20.04 et 21.04 de Centreon. Il est aussi compatible avec la version 21.10 avec un ajout de paquet, merci à MicZil pour sa contribution.
Stacks Image 43684
Je vous présente aujourd'hui le travail de Victor Hugo dos Santos, il s'agit d'un dépôt GitHub centreon_report_to_pdf. Ce script python permet de générer automatiquement un extrait du Dashbord Reporting de Centreon au format PDF. Ce script est indépendant de la plateforme Centreon et peut-être installé sur n'importe quel serveur Linux. Si le script est installé sur un Central, on utilisera l'API Clapi sinon on utilisera l'autologin de Centreon.

1 Installation

1.1 Prérequis

Pour utiliser le programme, vous aurez besoin de Python et au minimum de la version 3.5. Pour Debian 10, pas souci nous en sommes à la version 3.7. Nous aurons besoin du programme d'installation pip.
Debian
apt-get install python3 python3-pip y
CENTREON
yum install rh-python36 -y
Pour CentOS, définissez la version 3.6 par défaut.
CENTREON
scl enable rh-python36 bash
Pour rendre l'opération permanente, placez l'instruction suivante dans le fichier bashrc de votre profil.
CENTREON
vi ~/.bashrc
ajoutez la ligne suivante
source scl_source enable rh-python36
Stacks Image 43916
Centreon version 21.10
Installez les paquets suivants
apt-get install gcc python3-devel
Stacks Image 43973
Raspberry
Si vous vous installez le module dans un PI 3 avec Raspbian Stretch
sudo apt-get install python3-pip python3-pandas

Modifiez le fichier requirements.txt comme ceci
reportlab>=3.5
pandas>=0.19
requests>=2.23

1.2 Installation du dépôt git

Installez git si besoin.
Debian
apt-get install git -y
CENTREON
yum install git -y
Récupérez les sources avec la commande git
git clone https://github.com/vhsantos/centreon_report_to_pdf.git
Lancez les prérequis pour python
cd centreon_report_to_pdf/centreon_report_to_pdf/

Debian
pip3 install -r requirements.txt

CENTREON
pip install -r requirements.txt
Stacks Image 43952
Installation centreon
Si vous avez ce message d'erreur :
erreur-python
lancez la commande suivante :
pip install upgrade --pip

relancez la commande de prérequis.

2 Utilisation du programme

Le script fonctionne de plusieurs manières. Tout d'abord, par défaut, le programme utilise un fichier de configuration nommé GlobalVars.py. Mais il est possible de créer plusieurs fichiers de configuration comme l'exemple config_example.ini se trouvant dans le même dossier. Avant de commencer la configuration, nous allons créer notre contact Centreon pour utiliser le script.

2.1 Activation de l'autologin

Tout d'abord, il faut activer l'autologin. Sélectionnez le menu Administration > Paramètres > Centreon web ( Administration > Parameters > Centreon UI ). Cochez "Activer la connexion automatique" (Enable Autologin) dans la section Propriétés d'authentification (Authentication properties).
Stacks Image 43959

2.2 Création du contact

Le script peut être utilisé sur le Central ou sur un autre serveur. Il est fortement conseillé d'utiliser un contact ayant des droits peu élevé et de limiter la vue au dashboard de reporting pour des raisons de sécurité. Sélectionnez le menu Configuration -> Users -> Contacts/User, ajoutez le contact dashboard.
Stacks Image 43838
Onglet Informations générales
Pour créer l'autologin (serveur différent du Central), cliquez sur Generate dans l'onglet Centreon Authentication.
Stacks Image 43841
Onglet Centreon Authentication

2.2a Création de l'ACL pour le contact dashboard

Nous sommes obligés de configurer les ACL pour le contact dashboard afin qu'il puisse avoir accès au reporting. L'ACL se déroule en plusieurs étapes. Commençons par le groupe d'accès.
Stacks Image 43850
Création du groupe d'accès
Continuons par l'accès aux menus de l'IHM Centreon
Stacks Image 43855
Création de l'accès aux menus
Nous finirons par l'accès aux resources Centreon. Dans access_dashboard, nous sélectionnons All Ressurces dans l'onglet Autorisation (Authorizations information)
Stacks Image 43860
Autorisation des ressources

2.3 Connexion avec l'autologin Centreon

Le script est installé sur un serveur différent du Central. Nous devons utiliser l'autologin pour accéder aux informations de Centreon.

2.3a Configuration du fichier ini

Il faut créer le fichier de configuration pour réaliser notre génération de PDF. Créez le fichier config.ini dans le dossier centreon_report_to_pdf en copiant le fichier exemple .
cd centreon_report_to_pdf
cp config_example.ini config.ini
Modifiez les lignes en gras en fonction de votre configuration. Attention la configuration est prévue pour les version 19.10 et 20.04
[CENTREON_SERVER]
#server_url = https://yourserver.com/centreon/
# If "Autologin" is set, "User" and "Password" will be ignored.
# If you want to use "User" and "Password", you need to comment "Autologin"
server_url = http://192.168.1.182/centreon/
autologin_url = http://192.168.1.182/centreon/index.php?autologin=1&useralias=dashboard&token=oclPLMEW14

[REPORT]
# Some valid values to period: 'yesterday', 'this_week', 'last_week', 'this_month', 'last_month', 'this_year' 'last_year', 'custom'
# If 'custom' is set, you need to define 'custom_period_start' and 'custom_period_start' too.
# Examples: 24/03/2020 - 15/Jan/2020 - 2020/17/03 - 02-15-2022
period=yesterday
pdf_output_file = /tmp/centreon_report_VHS.pdf
csv_download_filepath = /tmp/centreon.csv

[REPORTS_ID]
# The list of Host and Service Groups IDs that you want process.
# You can get the IDs using the instruccions from here
# /usr/share/centreon/bin/centreon -u admin -p centreon_pass -o HG -a show
# /usr/share/centreon/bin/centreon -u admin -p centreon_pass -o SG -a show
hosts_groups = 1
services_groups =

[SMTP]
send_pdf_by_email = false
Stacks Image 43966
Version 21.04
L'url est la suivante
autologin_url = http://192.168.1.182/centreon/main.php?p=30701&autologin=1&useralias=dashboard&token=oclPLMEW14
Dans notre exemple, nous configurons l'autologin avec le contact dashboard. Nous voulons une reporting pour la journée d'hier. Le fichier PDF sera créé dans le dossier /tmp. Il faudra lister les id des groupes d'hôtes et de services avec l'API Centreon Clapi afin de les déclarer. Dans l'exemple ci-dessus, nous afficherons que le premier groupe d'hôtes mais de groupe de services. Nous n'utiliserons pas la fonctionnalité de messagerie.

2.3b Test du programme.

Lancez la commande suivante :
Debian
python3 centreon_report_to_pdf.py -c config.ini
CENTREON
python centreon_report_to_pdf.py -c config.ini
Stacks Image 43932
Can't determinte the type of report on the CSV.
- Vérifiez les accès du user dashboard. Vous pouvez utiliser le lien de votre fichier config.ini
http://192.168.1.182/centreon/index.php?autologin=1&useralias=dashboard&token=oclPLMEW14

- Vérifiez si les id des groupe d'hôtes et/ou de services sont valides.
/usr/share/centreon/bin/centreon -u admin -p passwd -o HG -a show
/usr/share/centreon/bin/centreon -u admin -p passwd -o SG -a show

ZeroDivisionError: float division by zero
Il manque des données dan un hostgroup ou un servicegroup. Adaptez votre configuration ou adapter votre fichier config.ini
Le fichier PDF est créé, voici un extrait.
Stacks Image 43879
Le groupe d'hôtes Serveur_linux est généré.

2.4 Connexion avec l'API Centreon Clapi

Le script est installé sur le serveur Central. Nous utiliserons le même contact dashboard, l'autologin peut-être désactivé puisque l'on utilisera l'API Clapi pour accéder aux informations de Centreon.

2.4a Configuration du fichier ini

Il faut créer le fichier de configuration pour réaliser notre génération de PDF. Créez le fichier config2.ini dans le dossier centreon_report_to_pdf. Ajoutez les lignes suivantes :
[CENTREON_SERVER]
#server_url = https://yourserver.com/centreon/
# If "Autologin" is set, "User" and "Password" will be ignored.
# If you want to use "User" and "Password", you need to comment "Autologin"
server_url = http://192.168.1.182/centreon/
user = dashboard
password = centreon

[REPORT]
# Some valid values to period: 'yesterday', 'this_week', 'last_week', 'this_month', 'last_month', 'this_year' 'last_year', 'custom'
# If 'custom' is set, you need to define 'custom_period_start' and 'custom_period_start' too.
# Examples: 24/03/2020 - 15/Jan/2020 - 2020/17/03 - 02-15-2022
period=this_month
pdf_output_file = /tmp/centreon_report_VHS.pdf
csv_download_filepath = /tmp/centreon.csv

[REPORTS_ID]
# The list of Host and Service Groups IDs that you want process.
# You can get the IDs using the instruccions from here
# /usr/share/centreon/bin/centreon -u admin -p centreon_pass -o HG -a show
# /usr/share/centreon/bin/centreon -u admin -p centreon_pass -o SG -a show
hosts_groups = 1
services_groups =

[SMTP]
send_pdf_by_email = false
Dans notre exemple, nous ajoutons le nom et mot de passe du contact dashboard. Nous voulons une reporting pour le mois courant. Le fichier PDF sera créé dans le dossier /tmp. Il faudra lister les id des groupes d'hôtes et de services avec l'API Centreon Clapi afin de les déclarer. Dans l'exemple ci-dessus, nous afficherons que le premier groupe d'hôtes mais de groupe de services. Nous n'utiliserons pas la fonctionnalité de messagerie.

2.4b Test du programme.

Lancez la commande suivante :
Debian
python3 centreon_report_to_pdf.py -c config2.ini
CENTREON
python centreon_report_to_pdf.py -c config2.ini
Le fichier PDF est créé, voici un extrait.
Stacks Image 43910
Le groupe d'hôtes Serveur_linux est généré.

2.5 Envoi d'email

Nous avons la possibilité d'envoyer un email contenant le fichier pdf. Voici une configuration utilisant le relay Postfix du serveur Centreon.
[SMTP]
send_pdf_by_email = true
email_from = centreon@yourdomain.com
email_to = username@gmail.com
email_subject = Centreon PDF Report
email_body_txt_file = email_body.txt
email_server = localhost
email_ssl_or_tls = tls
email_port = 25
email_authentication = false
Vous recevrez ce type de message.
Stacks Image 43929
Exemple de message
Modifiez le fichier email_body.txt pour customiser votre corps de message. Voilà ce tutoriel est terminé. Pour automatiser l'envoi de mail, il sera possible d'ajouter une tâche planifiée avec le cron.

2.6 Ajout d'une page de couverture

Nous avons la possibilité de créer une page de couverture personnalisée. Ajoutez un dossier logo et insérez une image en jpg. Notez les dimensions en pixels pour le fichier de configuration.
mkdir /root/logo
Rajoutons ces lignes
[COVER]
include_cover_page = true
cover_logo_file = /root/logo/logo_sugarbug.jpeg
cover_logo_size_x = 100
cover_logo_size_y = 50
cover_title_1 = Rapport de disponibilité
cover_title_2 = SugarBug
cover_text_1 = Démo Centreon Report to PDF
cover_text_2 =
cover_extra_info = true
# date format examples : %b/%d/%Y - %c - %d/%m/%y (%A) - Report Week Number: %w
# https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
cover_date_format = Date: %d / %B / %Y
Voici la page qui sera générée lors des prochains rapports.
Stacks Image 43947
Le groupe d'hôtes Serveur_linux est généré.
Le tutoriel est terminé, il y a certainement d'autres améliorations à apporter à ce module.
comments powered by Disqus

Nous utilisons des cookies pour nous permettre de mieux comprendre comment le site est utilisé. En continuant à utiliser ce site, vous acceptez cette politique.