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.

Rapports automatisés avec Grafana

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 :

  1. Détecte votre parc et les serveurs associés
  2. Génère automatiquement un rapport Grafana
  3. Configure la planification mensuelle
  4. Ajoute vos destinataires email
  5. 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.