Disponibilité, maintenance, sauvegardes, continuité et reprise après incident.
Version 1.1 — 12 août 2026
LogsCord est conçu pour conserver et rendre interrogeables des événements pouvant être importants pour l'administration, la modération et l'investigation d'un serveur Discord.
La continuité du service ne consiste donc pas uniquement à maintenir un site Web accessible. Elle implique également de préserver l'intégrité des événements collectés, de limiter les pertes de données, de restaurer les composants dans un ordre cohérent et d'éviter qu'une reprise après incident ne réintroduise des données qui avaient précédemment été supprimées ou rectifiées.
Ce document décrit les principes généraux appliqués par LogsCord en matière de disponibilité, de maintenance, de déploiement, de continuité, de sauvegarde, de reprise après incident et de communication opérationnelle.
Les engagements contractuels propres à une offre, notamment un pourcentage de disponibilité, un objectif de reprise, un délai de communication ou une éventuelle compensation, sont exclusivement ceux définis dans l'offre, le SLA ou le contrat applicable.
LogsCord distingue les services fournis en Best Effort de ceux bénéficiant d'engagements contractuels de disponibilité ou de reprise.
| Élément | Gratuit | Pro | Enterprise |
|---|---|---|---|
| Modèle de disponibilité | Best Effort | Engagements prévus par l'offre ou le SLA | Engagements définis avec le client |
| Disponibilité minimale garantie | Aucune | Selon l'offre ou le SLA | Selon le contrat |
| RTO ou RPO contractuel | Aucun | Selon l'offre ou le SLA | Selon le contrat |
| Priorité de reprise | Best Effort | Prioritaire après stabilisation des services communs | Selon le niveau contractuel et l'architecture dédiée |
| Politique de sauvegarde | Politique standard applicable | Politique standard ou renforcée selon l'offre | Politique définie contractuellement |
| Fréquence renforcée | Non garantie | Selon l'offre | Jusqu'à un point quotidien selon le contrat |
| Réplication renforcée | Non garantie | Selon l'architecture applicable | Jusqu'à trois réplicas selon le contrat |
| Tests de restauration | Selon l'infrastructure applicable | Oui | Oui |
| Replay des effacements et rectifications | Oui | Oui | Oui |
| Support pendant un incident | Best Effort | Prioritaire selon l'offre | Selon les engagements contractuels |
L'offre gratuite ne comporte aucune garantie contractuelle de disponibilité, de résolution, de RTO ou de RPO. Elle reste soumise aux mesures générales de sécurité et de protection des données. Les engagements Pro et Enterprise sont exclusivement ceux de l'offre, du SLA ou du contrat applicable ; ils déterminent notamment les objectifs, la priorité de reprise et les éventuels mécanismes renforcés.
Les offres, leurs tarifs et les garanties associées sont présentés sur logscord.com/pricing. Le bon de commande, le SLA ou le contrat accepté par le client prévaut lorsqu'il prévoit des conditions particulières.
LogsCord peut faire évoluer une garantie pour l'avenir lorsqu'un motif légitime le justifie, notamment une évolution technique importante, une modification d'une dépendance essentielle, une exigence de sécurité ou de droit, ou l'impossibilité durable de maintenir l'offre dans les conditions annoncées.
| Situation | Règle appliquée |
|---|---|
| Amélioration d'une garantie | Peut bénéficier immédiatement aux clients concernés |
| Nouvelle souscription | Conditions publiées à la date de souscription |
| Abonnement sans durée ferme | Préavis d'au moins 30 jours sur un support durable avant toute réduction importante ; résiliation sans frais possible avant son entrée en vigueur |
| Période payée ou engagement à durée déterminée | Garantie maintenue jusqu'au terme, sauf accord exprès du client ou résiliation pour un motif légitime dans les conditions prévues par le contrat et la loi |
| Contrat Enterprise | Modification par accord écrit ou lors du renouvellement |
| Incident déjà survenu | Reste calculé selon les règles applicables au moment de l'incident |
Lorsqu'une garantie ne peut plus raisonnablement être maintenue pendant une période engagée, LogsCord peut proposer une solution ou une offre de remplacement. À défaut d'accord, et lorsque le contrat et le droit applicable le permettent, LogsCord peut mettre fin au service concerné pour un motif légitime, avec un préavis raisonnable et le remboursement au prorata de la période payée restant à courir. Les droits, crédits ou recours déjà nés avant la date d'effet de la modification restent applicables.
Une mesure urgente nécessaire à la sécurité, à l'intégrité des données ou au respect du droit peut être appliquée sans attendre le préavis normal. Elle ne permet pas de réduire rétroactivement une garantie ni de supprimer un droit déjà acquis.
Pour les consommateurs, ces règles s'appliquent sous réserve des dispositions impératives, notamment de l'article L. 224-25-26 du Code de la consommation lorsqu'une modification entre dans son champ, ainsi que de l'article R. 212-1 relatif aux clauses abusives.
La page status.logscord.com, accessible sans authentification, publie les perturbations qualifiées, les interruptions et les maintenances. Une alarme brute, un contrôle isolé en échec ou un faux positif n'est publié comme incident que si un impact réel est établi.
Les événements restent dans l'historique après le retour à la normale. Une correction ultérieure des horaires, de la durée ou de la qualification reste identifiable.
| État | Signification |
|---|---|
| Operational | Fonctionnement nominal du composant |
| Degraded Performance | Service disponible avec une dégradation significative |
| Partial Outage | Certaines fonctions ou une partie des utilisateurs sont indisponibles |
| Major Outage | Indisponibilité importante du composant |
| Maintenance | Opération de maintenance en cours |
L'état global résulte de l'état des composants nécessaires au service. Une panne secondaire ne rend pas nécessairement toute la plateforme indisponible. À l'inverse, un site Web accessible ne suffit pas à considérer la collecte, la recherche et le temps réel comme opérationnels.
| Composant | Fonction observée |
|---|---|
| Discord Gateway et collecteurs | Connexion des shards et réception effective des événements |
| Ingestion | Validation, progression des écritures, erreurs et éventuel retard |
| Stockage et recherche | Écriture, intégrité et exécution des recherches ClickHouse |
| API LogsCord | Traitement des requêtes applicatives autorisées |
| Temps réel et SSE | Acheminement immédiat des événements vers les clients abonnés |
| Dashboard Web | Accès aux principales fonctions de l'interface |
| Authentification | Connexion et établissement des sessions autorisées |
| Interactions Discord | Exécution des commandes et interactions nécessaires au service |
| Dépendances externes | Incidents tiers ayant un impact direct et observable sur LogsCord |
Le rapport distingue ce qui a réellement affecté le service de ce qui est retenu dans un SLA :
| Information publiée | Contenu |
|---|---|
| Disponibilité observée | Toutes les perturbations qualifiées, y compris celles provenant de Discord, Cloudflare ou Hetzner |
| Disponibilité SLA | Uniquement les indisponibilités éligibles après application des exclusions contractuelles |
| Événement | Début, fin, durée, cause connue, composants et fonctions affectés |
| Maintenance | Fenêtre annoncée, durée réelle et impact observé |
| Traitement contractuel | Inclusion ou exclusion du SLA et motif correspondant |
Les durées observée et éligible sont cumulées sur la période applicable. Les informations susceptibles de compromettre la sécurité, la confidentialité ou les données d'un client ne sont pas publiées.
LogsCord combine des contrôles externes et des signaux internes : état des shards Discord, réception des événements, progression de l'ingestion, erreurs d'écriture, ClickHouse, API et temps réel. Un site ou un endpoint répondant avec un code HTTP 200 ne suffit pas à déclarer l'ensemble du service disponible.
Une anomalie doit être corroborée avant d'être qualifiée d'indisponibilité. Cette fenêtre de confirmation écarte les faux positifs ; ce n'est pas une période de grâce. Lorsqu'un impact est confirmé, le début est replacé au premier instant fiable établi par les contrôles, les journaux ou une autre source disponible.
La supervision porte sur l'état technique des composants et des flux de traitement, et non sur le suivi individuel des utilisateurs Discord. Les événements transmis par le Gateway Discord sont pris en charge et enregistrés dès leur réception. La fréquence des contrôles de disponibilité et la précision des mesures peuvent varier selon les composants surveillés.
| Règle | Application |
|---|---|
| Période | Mois civil, sauf période différente prévue par le SLA |
| Début | Premier impact établi de manière fiable ; à défaut, heure de détection |
| Fin | Retour confirmé et suffisamment stable de la fonction |
| Publication | L'heure de création ou de résolution de l'entrée publique ne modifie pas la durée calculée |
| Cumul | Addition de toutes les indisponibilités éligibles de la période |
| Chevauchement | Une même durée n'est comptée qu'une fois pour un même composant et un même client |
| Précision | Celle permise par les éléments fiables disponibles, jusqu'à la seconde lorsqu'elle est établie |
| Période de grâce | Aucune par défaut ; elle doit être expressément prévue par le SLA |
| Incident tiers | Inclus dans la disponibilité observée, mais éventuellement exclu de la disponibilité SLA selon la section 6 |
Exemple : si la supervision établit un début à 14:02, confirme l'alerte à 14:05 et que l'incident est publié à 14:08, la mesure commence à 14:02.
Pour la période applicable :
textDisponibilité =
(Temps éligible - Temps d'indisponibilité éligible)
-------------------------------------------------- × 100
Temps éligibleSeules les exclusions prévues par le SLA sont retirées du temps éligible. Les incidents ne sont pas arrondis séparément et une maintenance ne peut pas être exclue rétroactivement par un simple changement de qualification. À titre d'exemple, 30 minutes d'indisponibilité éligible sur un mois de 30 jours correspondent à environ 99,9306 % de disponibilité.
LogsCord évite de masquer une panne fonctionnelle derrière une moyenne globale. La collecte, l'API, la recherche, le dashboard et le temps réel peuvent être mesurés séparément.
Une panne limitée à un shard, un tenant, une instance ou une partition peut être présentée comme Partial Outage. Pour un SLA individuel, son impact est pris en compte pour le client concerné même si le reste de la plateforme est resté opérationnel.
Une dégradation de performance n'est pas automatiquement équivalente à une indisponibilité complète. À l'inverse, un composant joignable mais incapable d'assurer sa fonction principale peut être considéré comme indisponible.
Il n'existe pas de pourcentage, de cadence de supervision ou de période de grâce imposé de manière générale à tous les SaaS. L'article 32 du RGPD exige des mesures de disponibilité, de résilience, de reprise et de test adaptées au risque, sans fixer un SLA universel. Le considérant 34 du règlement d'exécution (UE) 2024/2690 et l'article 3 du règlement délégué (UE) 2024/1772, dans leurs champs respectifs, retiennent également une mesure depuis l'interruption réelle ou la trace fiable la plus ancienne.
Pour les consommateurs, l'article L. 224-25-14 du Code de la consommation protège notamment la continuité attendue d'un service numérique. Le SLA et ses exclusions ne remplacent jamais les garanties légales impératives. Toute dérogation applicable à un consommateur doit respecter les conditions d'information et d'acceptation prévues par ce texte ainsi que les règles relatives aux clauses abusives.
LogsCord distingue :
Un service peut être temporairement inaccessible sans perte de données. À l'inverse, un service peut répondre tout en présentant un risque d'intégrité nécessitant son arrêt préventif.
Lorsqu'il existe un conflit entre disponibilité immédiate et intégrité, LogsCord peut réduire ou interrompre temporairement l'accès. Une interruption contrôlée est préférable à la poursuite d'un traitement susceptible d'aggraver une corruption.
mermaidflowchart LR
Discord["Discord Gateway"] --> Collectors["Collecteurs shardés"]
Collectors --> Storage["ClickHouse<br/>stockage durable"]
Collectors --> Broker["Message Broker<br/>temps réel"]
Storage --> API["API LogsCord"]
Broker --> API
API --> Client["Dashboard et clients autorisés"]La séparation entre stockage durable et temps réel permet qu'une interruption du broker ou du SSE n'implique pas nécessairement l'arrêt de la collecte persistante. De même, une interface indisponible ne signifie pas automatiquement que les traitements de fond sont arrêtés.
| Situation | Mesure de dégradation possible | Fonction privilégiée |
|---|---|---|
| Saturation ou charge excessive | Limitation des recherches coûteuses | Ingestion et stockage |
| Incident du broker ou du SSE | Désactivation temporaire du temps réel | Conservation durable |
| Incident d'une fonction secondaire | Suspension ou report du traitement | Fonctions critiques |
| Risque sur les écritures | Lecture seule ou arrêt préventif | Intégrité des données |
| Ressources limitées | Report d'opérations non urgentes | Collecte et reprise |
| Dépendance | Impact possible | Traitement dans le SLA |
|---|---|---|
| Discord Gateway, API ou OAuth | Arrêt de la collecte, contexte indisponible, interaction ou authentification impossible | Exclusion possible lorsque Discord est la cause directe ; LogsCord ne peut pas garantir un événement que Discord n'a jamais transmis |
| Cloudflare | Accès aux services publics perturbé ou impossible | Exclusion possible pour un incident propre à Cloudflare, mais pas pour une règle, un DNS, un certificat ou une configuration gérés par LogsCord |
| Hetzner et réseau | Hôte, stockage ou chemin réseau indisponible | Exclusion possible pour un incident fournisseur dépassant la redondance promise ; une panne que l'architecture annoncée devait absorber reste éligible |
Un incident tiers n'est exclu que si sa causalité est suffisamment établie, si LogsCord n'y a pas contribué et si les mesures raisonnables de limitation et de reprise ont été appliquées. Seules la durée et les fonctions directement affectées sont retirées du SLA. En cas de causes mixtes, la part qui ne peut pas être isolée reste éligible.
Restent notamment imputables à LogsCord les erreurs de code ou de configuration, la mauvaise gestion des jetons ou des reconnexions, l'échec d'une redondance promise et la prolongation de l'indisponibilité après le rétablissement du fournisseur.
Tous les impacts réels demeurent visibles dans la disponibilité observée et sur la page de statut, avec leur cause et leur traitement contractuel. Une exclusion de SLA ne constitue pas automatiquement un cas de force majeure au sens de l'article 1218 du Code civil et ne supprime pas les garanties légales impératives.
Un second fournisseur cloud actif n'est pas exigé de manière générale. Le niveau de continuité doit rester proportionné aux risques et aux engagements annoncés. Selon l'offre et l'architecture, le plan de reprise peut combiner réplication, sauvegardes séparées, reconstruction automatisée, restauration dans un autre environnement et tests périodiques.
Lorsque le règlement d'exécution (UE) 2024/2690 est applicable, il prévoit notamment un plan de continuité et de rétablissement, des sauvegardes, une redondance appropriée et l'examen de la diversification des fournisseurs lorsqu'elle est pertinente. Il n'impose pas systématiquement une architecture multicloud.
Les conditions développeur de Discord précisent que Discord ne garantit pas que ses API soient ininterrompues ou exemptes d'erreurs.
Une modification de production suit des validations proportionnées à son risque.
mermaidflowchart LR
Dev["Développement"] --> Automated["Tests automatisés"]
Automated --> Integration["Tests d'intégration"]
Integration --> Build["Build de déploiement"]
Build --> Validation["Environnement de validation"]
Validation --> Progressive["Déploiement progressif"]
Progressive --> Observe["Surveillance"]
Observe -->|Conforme| General["Déploiement général"]
Observe -->|Anomalie| Rollback["Arrêt ou rollback"]| Catégorie de changement | Contrôles pertinents |
|---|---|
| Accès, authentification et tenants | Permissions, rôles, refus d'accès croisé et traçabilité |
| Schéma et ClickHouse | Compatibilité, migration, intégrité des écritures, recherche et rollback possible |
Effacement, rectification et /privacy | Suppression, modification, journal de replay et restauration |
| KMS, chiffrement et sauvegardes | Déchiffrement contrôlé, cycle de vie des clés et restauration |
| Réseau, firewall et Cloudflare | Connectivité attendue, absence d'exposition involontaire et maintien des protections |
| Évolution applicative | Tests unitaires, intégration, API, charge et reprise après erreur |
Les migrations destructives ne sont pas traitées comme de simples mises à jour applicatives. Lorsque cela est raisonnablement possible, une période de compatibilité est conservée avant la suppression définitive d'une structure ancienne.
| Type | Préavis | Traitement |
|---|---|---|
| Maintenance planifiée | Information des clients concernés lorsque l'impact le justifie | Fenêtre limitée, composants et conséquences annoncés lorsque possible |
| Maintenance urgente | Peut être exécutée sans préavis normal | Vulnérabilité critique, attaque, corruption, perte de données ou incident fournisseur |
Une maintenance planifiée n'est exclue d'un calcul contractuel que si le SLA le prévoit et si les conditions correspondantes sont respectées. Les maintenances exécutées sont publiées et conservées dans l'historique de la page de statut, avec leur impact réel lorsqu'il existe.
Un incident peut être détecté par la supervision, les métriques internes, les alertes de sécurité, les fournisseurs, le support ou le signalement d'un utilisateur.
mermaidflowchart LR
Detect["Détection"] --> Qualify["Qualification"]
Qualify --> Contain["Confinement"]
Contain --> Stabilize["Stabilisation"]
Stabilize --> Restore["Restauration"]
Restore --> Verify["Vérification"]
Verify --> Service["Retour au service"]
Service --> Review["Analyse post-incident"]Lorsqu'une cause reste active, elle est raisonnablement contenue avant la restauration. Remettre en service un composant sans traiter la cause pourrait reproduire l'incident.
Un incident significatif peut suivre les états Investigating, Identified, Monitoring et Resolved. Les mises à jour indiquent, selon les informations disponibles, l'impact, les composants affectés, l'évolution et la résolution. Une hypothèse n'est pas présentée comme une cause définitive et aucun détail compromettant la sécurité, la confidentialité ou les données d'un client n'est publié.
Pour les incidents importants, LogsCord peut publier ou communiquer une analyse adaptée à leur gravité : événement, impact, durée, mécanismes ayant limité l'incident, étapes de restauration et mesures réduisant le risque de récurrence.
Le retour du service ne signifie pas nécessairement que l'incident est clos. La surveillance, les contrôles d'intégrité et l'analyse peuvent continuer après le rétablissement.
Une indisponibilité n'est pas nécessairement une violation de données personnelles. Une violation peut aussi survenir sans indisponibilité visible. Les incidents impliquant des données personnelles sont traités conformément à la Politique de confidentialité et au DPA applicables.
Le détail cryptographique et les contrôles de restauration sont décrits dans la documentation Sécurité, architecture et résilience.
| Élément | Politique générale |
|---|---|
| Stockage de sauvegarde | Hetzner Object Storage compatible S3, séparé du stockage actif |
| Chiffrement | AES-256-GCM avant conservation durable |
| Immutabilité | S3 Object Lock en mode Compliance pendant la période applicable |
| Sauvegarde complète standard | Mensuelle |
| Sauvegarde incrémentale standard | Hebdomadaire |
| Conservation standard | Jusqu'à 90 jours |
| Enterprise | Fréquence pouvant atteindre un point quotidien selon le contrat |
La réplication et la sauvegarde répondent à des risques différents. Un replica sain peut permettre la continuité après la perte d'un nœud ; il ne protège pas nécessairement contre une corruption logique ou une suppression propagée.
LogsCord ne considère pas une sauvegarde comme fiable du seul fait que sa création s'est terminée sans erreur. Les restaurations complètes et les chaînes incrémentales sont testées dans un environnement isolé et comparées pour un même watermark logique.
mermaidflowchart TB
Watermark["Watermark commun"]
Watermark --> Full["Sauvegarde complète"]
Watermark --> Incremental["Chaîne incrémentale"]
Full --> RestoreA["Restauration A"]
Incremental --> RestoreB["Restauration B"]
RestoreA --> Compare["Comparaison logique"]
RestoreB --> Compare
Compare --> Result["Validation ou investigation"]Les contrôles peuvent comprendre le nombre de lignes, les partitions, les bornes d'événements, les volumes par période, les schémas, les métadonnées et des empreintes déterministes.
mermaidflowchart LR
Backup["Sauvegarde"] --> Decrypt["Déchiffrement"]
Decrypt --> Restore["Restauration isolée"]
Restore --> Replay["Replay des effacements<br/>et rectifications"]
Replay --> Integrity["Contrôles d'intégrité"]
Integrity --> Permissions["Contrôle des permissions<br/>et de la connectivité"]
Permissions --> Promote["Remise à disposition"]Une sauvegarde antérieure peut contenir une donnée effacée ou rectifiée depuis sa création. Les opérations de confidentialité applicables sont donc rejouées avant toute remise à disposition afin qu'une restauration ne réintroduise pas silencieusement un état devenu incorrect.
La première priorité est la stabilisation de l'infrastructure commune. Une restauration client ne doit pas être engagée sur un composant partagé encore instable ou susceptible de corrompre à nouveau les données.
| Ordre logique | Objectif |
|---|---|
| 1 | Identifier, isoler ou contenir la cause active |
| 2 | Stabiliser les dépendances et composants communs nécessaires |
| 3 | Préserver l'intégrité et empêcher l'aggravation de l'incident |
| 4 | Restaurer les environnements couverts par des engagements contractuels selon leur priorité |
| 5 | Restaurer les environnements Best Effort après ou parallèlement, selon les ressources disponibles |
L'ordre concret peut aussi dépendre de l'étendue de l'incident, du risque de perte ou de corruption, des dépendances, du nombre de clients concernés et de la possibilité de mener plusieurs restaurations en parallèle.
La priorité commerciale ne permet jamais de contourner une étape nécessaire à la sécurité ou à l'intégrité.
| Objectif | Définition |
|---|---|
| RTO — Recovery Time Objective | Objectif de durée de reprise d'un service après un incident applicable |
| RPO — Recovery Point Objective | Objectif de quantité maximale de données pouvant être perdue entre le dernier état récupérable et l'incident |
Les valeurs applicables aux offres Pro et Enterprise sont définies dans leur offre, leur SLA ou leur contrat. Aucun RTO ou RPO universel n'est annoncé dans ce document, car une valeur unique serait incorrecte pour des architectures différentes. Les services gratuits n'en bénéficient pas contractuellement.
La fréquence des sauvegardes n'est pas, à elle seule, un RPO ou un RTO. Une sauvegarde quotidienne ne garantit pas une restauration en moins de 24 heures, tandis que d'autres mécanismes peuvent parfois préserver un état plus récent qu'une sauvegarde périodique.
Les tests détaillés des sauvegardes sont décrits à la section 10. La continuité couvre également les scénarios suivants :
| Contrôle | Finalité |
|---|---|
| Réplication | Vérifier les scénarios de bascule applicables aux environnements concernés |
| Reconstruction | Vérifier qu'un environnement peut être recréé à partir des éléments conservés |
| Dépendance externe | Vérifier le comportement dégradé et la reprise après le retour du fournisseur |
| Gestion d'incident | Vérifier les rôles, décisions et canaux de communication |
| Restauration des données | Vérifier les contrôles de la section 10, y compris le replay des effacements et rectifications |
Le plan est réévalué après une évolution significative du stockage, de la réplication, du fournisseur, du KMS, des sauvegardes ou du pipeline d'ingestion.
Les exploitants de serveurs doivent notamment :
Les sauvegardes LogsCord protègent les données nécessaires au fonctionnement de LogsCord. Elles ne constituent pas une sauvegarde générale de Discord, de toutes les configurations du serveur ou des contenus situés hors du périmètre du service.
Le présent document complète notamment :
En cas de contradiction concernant un engagement contractuel de disponibilité, de reprise ou de compensation, le SLA, l'offre ou le contrat spécifique applicable au client prévaut sur cette description générale.
Pour toute question ou tout signalement relatif à la sécurité, contactez [email protected] et consultez le fichier security.txt.
Les documents et manuels publics de LogsCord sont disponibles dans le dépôt LogsCord/logscord-manuals.