Journaux
Deux flux
| Flux | Target | Contenu |
|---|---|---|
| journal applicatif | tout sauf audit | demarrage, connexions, avertissements, erreurs |
| piste d’audit | audit | une ligne par operation, connexion, refus, ban, action d’administration |
Les deux vont sur stdout. Avec log.dir, ils vont aussi dans deux fichiers
separes.
[log]
[log]
level = "info"
format = "json"
audit = "all"
dir = "/var/log/craft-file-gate"
Toutes les cles : Reference [log].
Le volume de la piste : log.audit
log.audit ne retire que des succes. Un refus, une erreur ou une issue
inconnue est toujours ecrit.
log.audit | Succes d’operation ecrits | connection_accepted, session_end ordinaires |
|---|---|---|
all | tous | oui |
changes | upload, delete, delete_recursive, rename, mkdir, rmdir, rmdir_recursive | non |
failures | aucun | non |
Toujours ecrits, quel que soit log.audit : connection_rejected,
connection_rejected_summary, ip_banned, tout ce qu’ecrit l’API
d’administration, et les session_end d’une session coupee (administrateur,
arret, ban, erreur interne).
Le niveau de log ne touche pas la piste : le target audit reste a info
quel que soit log.level.
Fichiers de log : log.dir
| Fichier | Contenu | Retention |
|---|---|---|
craft-file-gate.log | le journal applicatif | retention_days (7 jours) |
craft-file-gate-audit.log | la piste d’audit, et elle seule | audit_retention_days (90 jours) |
- Rotation : au premier ecrit d’un nouveau jour UTC, et avant une
ecriture qui depasserait
max_file_size_mb. L’archive porte l’instant de son ouverture,craft-file-gate.2026-09-27T00-00-00Z.log.gz, et ne contient que des lignes de ce jour UTC. - Retention : une archive part une fois son jour plus la retention ecoule, jugee sur son nom. Les autres fichiers du repertoire ne sont pas touches.
- Fichiers en
0640, archives.gztoujours completes ; un repertoire par processus.
En conteneur, stdout et la rotation de la plateforme (kubelet, journald,
Docker) restent la voie normale ; dir y demande un volume. Le chart Helm le
propose : logFiles.enabled: true.
Refus repetes : une ligne resumee
Un client anonyme qui insiste (scanner, client mal configure) produirait une
ligne par tentative. Par porte, adresse, reason et result, les
refusal_summary_threshold premiers refus d’une fenetre de
refusal_summary_window_secs gardent leur ligne ; les suivants sont comptes,
puis resumes en une ligne connection_rejected_summary a la fin de la
fenetre, avec suppressed, threshold et window_secs.
Seuls les refus qui n’ont juge aucune credential sont resumes :
missing credential, empty credential, malformed credential,
method disabled, verifier unavailable, banned, rate limit,
password checks saturated, password checks saturated for address,
shutting down. Un mot de passe faux garde toujours sa ligne.
Au-dela de refusal_summary_max_addresses cles suivies, les refus de plus
sont resumes ensemble (overflow=true).
Fins de session SFTP
La ligne applicative de fin d’une session dit sa cause :
Ligne INFO | Cause |
|---|---|
connection ended without a channel close — unregistering session | le client est parti |
SFTP channel closed — unregistering session | le client a ferme le canal |
session cut by an administrator — unregistering session | DELETE /admin/sessions/{id} |
session cut by the ban of its address — unregistering session | l’adresse vient d’etre bannie |
idle session cut by the server shutting down — unregistering session | arret, session sans transfert |
session cut by the server shutting down — unregistering session | arret, fin de la periode de grace |
La piste porte une ligne session_end par session, avec la meme cause dans
reason.
Une connexion qui finit avant la session (client qui ne parle pas SSH,
negociation sans algorithme commun) ecrit INFO SSH session ended: <raison>,
avec peer et client_version. Ce sont des fins ordinaires : alertez sur
leur nombre, pas sur chacune.
Ce que vous verrez
| Quand | Ligne |
|---|---|
| demarrage | INFO log filter in force, champs filter et source |
| demarrage | INFO audit trail filter in force (refusals and errors are always recorded), champ audit |
demarrage avec dir | INFO log files in force, les deux chemins, la taille et les retentions |
refusal_summary_* modifies | INFO refusal summary settings reloaded |
| ligne impossible a ecrire (disque plein) | metrique craftfilegate_log_write_errors_total ; une ligne sur stderr au plus par minute |