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.
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 yCENTREON
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 ~/.bashrcajoutez la ligne suivante
source scl_source enable rh-python36
Installez les paquets suivants
apt-get install gcc python3-devel
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 -yCENTREON
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
Si vous avez ce message d'erreur :
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).
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.
Pour créer l'autologin (serveur différent du Central), cliquez sur Generate dans l'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.
Continuons par l'accès aux menus de l'IHM Centreon
Nous finirons par l'accès aux resources Centreon. Dans access_dashboard, nous sélectionnons All Ressurces dans l'onglet Autorisation (Authorizations information)
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
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.iniCENTREON
python centreon_report_to_pdf.py -c config.ini
- 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.
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.iniCENTREON
python centreon_report_to_pdf.py -c config2.ini
Le fichier PDF est créé, voici un extrait.
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.
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.
Le tutoriel est terminé, il y a certainement d'autres améliorations à apporter à ce module.