Rapports automatisés avec Grafana
Découvrez comment configurer et recevoir des rapports mensuels automatisés de vos infrastructures avec l'intégration Grafana de Logiserv.

Le système de rapports automatisés de Logiserv génère et envoie des rapports mensuels détaillés de vos infrastructures directement par email, avec des données visuelles et des analyses de performance complètes.
Architecture des rapports
graph TD
A[Données Zabbix] --> B[Grafana Server]
B --> C[Moteur de rapports]
C --> D[Génération PDF/Images]
D --> E[Système d'envoi]
E --> F[Email automatique]
F --> G[Destinataires configurés]
Génération automatique des rapports
Dans la section Rapports de votre tableau de bord, vous pouvez consulter la configuration de vos rapports mensuels automatiques.
Configuration par parc
// Structure d'un rapport Grafana
interface GrafanaCreateReportParams {
nameAndSubject: string; // "Rapport Mensuel - [Parc]"
additionalRecipientEmail: string; // Email de l'utilisateur
groupName: string; // Nom du groupe Zabbix
hostNames: string[]; // Liste des serveurs surveillés
dashboardUid?: string; // Dashboard Grafana utilisé
}
Création automatique
Lors de la configuration de votre parc, le système :
- Détecte votre parc et les serveurs associés
- Génère automatiquement un rapport Grafana
- Configure la planification mensuelle
- Ajoute vos destinataires email
- Active l'envoi automatique le dernier jour du mois
Contenu des rapports
Métriques principales incluses
Chaque rapport mensuel contient :
Performance système
- Utilisation CPU : Moyenne, pics, tendances mensuelles
- Consommation mémoire : RAM utilisée, évolution dans le temps
- Espace disque : Utilisation par partition, alertes de capacité
- Trafic réseau : Bande passante consommée, pics d'activité
Disponibilité des services
- Temps de fonctionnement : Uptime de chaque serveur
- Incidents détectés : Pannes, redémarrages, maintenances
- Performance applicative : Temps de réponse des services
- Alertes déclenchées : Historique des notifications
Format et présentation
// Configuration du rapport PDF
const reportOptions = {
orientation: "landscape", // Format paysage
layout: "grid", // Disposition en grille
pdfShowTemplateVariables: false, // Masquer les variables
pdfCombineOneFile: true, // Un seul fichier PDF
scaleFactor: 2, // Haute résolution
formats: ["pdf", "image"] // PDF + images
};
Planification intelligente
Envoi mensuel automatique
// Configuration de la planification
const schedule = {
startDate: now.toISOString(), // Date de début
endDate: null, // Pas de fin
frequency: "monthly", // Fréquence mensuelle
workdaysOnly: false, // Tous les jours
dayOfMonth: "last", // Dernier jour du mois
timeZone: "Indian/Mauritius" // Fuseau horaire
};
Calcul des dates d'envoi
Le système calcule automatiquement :
// Algorithme de calcul de la prochaine date
function calculateNextReportDate(frequency: string, dayOfMonth: string) {
const now = new Date();
const currentMonth = now.getMonth();
const currentYear = now.getFullYear();
if (frequency === "monthly" && dayOfMonth === "last") {
// Dernier jour du mois
const lastDay = new Date(currentYear, currentMonth + 1, 0);
return now > lastDay
? new Date(currentYear, currentMonth + 2, 0) // Mois suivant
: lastDay; // Mois actuel
}
}
Gestion des destinataires
Configuration multi-destinataires
// Format des destinataires
const recipients = `${baseRecipients};${additionalRecipientEmail}`;
// Exemple de configuration
const reportConfig = {
recipients: "admin@logiserv.com;client@entreprise.com;technique@entreprise.com",
replyTo: "contact@logiserv.app",
subject: "Rapport Mensuel - MonParc",
message: `Bonjour,
Vous trouverez en pièce jointe le rapport mensuel de surveillance de vos serveurs.
Bonne journée.
Logiserv`
};
Filtrage intelligent
Le système filtre automatiquement :
- Emails administrateurs : Masqués dans l'interface utilisateur
- Destinataires actifs : Seuls les emails configurés sont affichés
- Validation format : Vérification de la validité des adresses
Fonctionnalités avancées
Recherche automatique par parc
// Algorithme de recherche de rapport par nom de parc
export async function grafanaFindReportByParcName(parcName: string) {
const allReports = await grafanaGetAllReports();
// Recherche par contenance du nom de parc
let foundReport = allReports.find(report =>
report.name.toLowerCase().includes(parcName.toLowerCase())
);
// Si non trouvé, tester les conventions communes
if (!foundReport) {
const commonFormats = [
`Rapport Mensuel - ${parcName}`,
`Rapport ${parcName}`,
`Monthly Report - ${parcName}`
];
foundReport = allReports.find(report =>
commonFormats.some(format =>
report.name.toLowerCase() === format.toLowerCase()
)
);
}
return foundReport;
}
Mise à jour dynamique
// Mise à jour automatique lors de changements
export async function updateReportsWithDeletion(params: {
parc: string;
oldParcName: string | null;
userEmail: string;
zabbixHostNamesForParc: string[];
grafanaReportId?: string;
}) {
// Suppression de l'ancien rapport si le nom change
if (oldParcName && oldParcName !== parc) {
await deleteOldReport(oldParcName);
}
// Création/mise à jour du nouveau rapport
await grafanaUpdateReport({
reportId: grafanaReportId,
groupName: parc,
hostNames: zabbixHostNamesForParc
});
}
Interface utilisateur
Visualisation des rapports
Dans votre tableau de bord, consultez :
Informations de planification
- Prochaine date d'envoi : Calculée automatiquement
- Fréquence : Mensuelle (dernier jour)
- Destinataires : Liste des emails configurés
- Statut : Actif/Inactif
Actions disponibles
- Envoi manuel : Générer et envoyer immédiatement
- Prévisualisation : Voir le contenu avant envoi
- Modification destinataires : Ajouter/supprimer des emails
- Historique : Consulter les envois précédents
Gestion des erreurs
// Gestion robuste des erreurs
async function getReportScheduleInfo(parcName: string) {
try {
const reportInfo = await grafanaFindReportByParcName(parcName);
if (!reportInfo) {
return {
error: "Aucun rapport trouvé pour votre parc",
recipients: [],
nextScheduledDate: null
};
}
return {
reportId: reportInfo.reportId,
recipients: reportInfo.recipients.split(';'),
nextScheduledDate: calculateNextDate(reportInfo.schedule)
};
} catch (error) {
return {
error: "Erreur lors de la récupération des informations",
recipients: [],
nextScheduledDate: null
};
}
}
Personnalisation des rapports
Variables dynamiques
Les rapports utilisent des variables pour s'adapter à votre parc :
// Variables Grafana dynamiques
const reportVariables = {
"Group": [groupName], // Filtre par groupe Zabbix
"Host": hostNames, // Liste des serveurs
"TimeRange": "now/M", // Période mensuelle
"Organization": parcName // Nom de votre organisation
};
Tableaux de bord personnalisés
// Configuration du dashboard
const dashboardConfig = {
dashboard: {
uid: "uidparcserveurs", // Dashboard dédié aux parcs
},
timeRange: {
from: "now/M", // Début du mois
to: "now/M" // Fin du mois
},
reportVariables: {
"Group": [groupName],
"Host": hostNames
}
};
Envoi et distribution
Processus d'envoi automatique
// Envoi automatique mensuel
export async function grafanaSendReportById(
reportId: string,
useEmailsFromReport: boolean = true,
emails?: string
) {
const payload = {
id: reportId,
useEmailsFromReport,
emails: emails || undefined
};
// Priorité Grafana Cloud, fallback standard
if (GRAFANA_CLOUD_API_URL && GRAFANA_CLOUD_API_TOKEN) {
return await callGrafanaCloudApi("POST", "/api/reports/email", payload);
} else {
return await callGrafanaApi("POST", "/api/reports/email", payload);
}
}
Formats de sortie
Chaque rapport est généré en :
- PDF haute résolution : Document principal
- Images PNG : Graphiques individuels
- Données tabulaires : Métriques clés
- Résumé exécutif : Points saillants
Monitoring des rapports
Suivi des envois
Le système suit automatiquement :
- Statut d'envoi : Succès/Échec
- Dates de génération : Historique complet
- Destinataires effectifs : Qui a reçu quoi
- Taille des fichiers : Optimisation des performances
Alertes de rapport
// Alertes en cas de problème
if (reportSendFailed) {
await sendAlert({
type: "report_failure",
parc: parcName,
error: errorMessage,
recipients: ["admin@logiserv.com"]
});
}
Intégration avec les alertes
Corrélation des données
Les rapports incluent :
- Résumé des alertes du mois écoulé
- Analyses de tendances basées sur l'historique
- Recommandations IA pour l'optimisation
- Prévisions de charge future
Métriques de performance
-- Exemples de métriques calculées
SELECT
AVG(cpu_usage) as avg_cpu,
MAX(memory_usage) as peak_memory,
COUNT(alerts) as alert_count,
SUM(downtime) as total_downtime
FROM monitoring_data
WHERE timestamp BETWEEN start_of_month AND end_of_month
AND host IN (hostNames)
GROUP BY host;
Conclusion
Le système de rapports automatisés de Logiserv vous offre une visibilité mensuelle complète sur vos infrastructures. Avec la génération automatique, l'envoi programmé et les analyses détaillées, vous disposez d'un outil puissant pour le suivi et l'optimisation de vos systèmes.
Pour consulter vos rapports et leur planification, rendez-vous dans la section Rapports mensuels de votre tableau de bord.
Questions sur les rapports ? Consultez notre documentation ou contactez notre équipe de support.
Les autres fonctionnalités
Configuration et déploiement de l'agent Zabbix
Guide complet pour installer et configurer l'agent Zabbix avec la génération automatique de fichiers PSK et scripts d'installation.
Système d'alertes intelligent avec Zabbix et IA
Découvrez comment configurer et utiliser le système d'alertes avancé de Logiserv avec l'intégration Zabbix et l'analyse par IA.
Monitoring temps réel avec Grafana intégré
Découvrez comment visualiser vos données de monitoring en temps réel grâce à l'intégration Grafana native de Logiserv avec authentification automatique.