Vous êtes ici:

Menu


Stacks Image 43913
Avertissement
Ce module fonctionne avec les versions 19.10 et 20.04 de Centreon
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
Stacks Image 43916
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

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 à configurer, nous allons créer notre contact Centreon pour utiliser le script.

2.1 Création du contact

Le script peut être utilisé sur le Central ou sur un autre serveur. Pour cette dernière solution, il faudra activer l'autologin. 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.1a 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 All Resources, nous ajouterons le groupe d'accès acces_dashboard.
Stacks Image 43860
Création de l'accès aux menus

2.2 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.2a 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 config1.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/
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
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.2b Test du programme.

Lancez la commande suivante :
Debian
python3 centreon_report_to_pdf.py -c config1.ini
CENTREON
python centreon_report_to_pdf.py -c config1.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 config1.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
Le fichier PDF est créé, voici un extrait.
Stacks Image 43879
Le groupe d'hôtes Serveur_linux est généré.

2.3 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ésactiver puisque l'on utilisera les API Clapi 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 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.3b Test du programme.

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

2.4 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.5 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