Aller au contenu

Gestion des fichiers journaux

Consultation des logs

L'écriture des logs de Canopsis est gérée par journald, la rotation des logs est donc gérée nativement sans devoir passer par logrotate.

Vérification OS

Attention néanmoins à activer la persistance de journald pour garder les logs après un reboot du serveur ( cf : Activation de la persistance journald )

  • Pour visualiser les logs de Canopsis, il faut utiliser la commande suivante
journalctl -u 'canopsis*' -f

Pour récupérer les logs d'un seul service, remplacer canopsis* par le nom d'un des services de Canopsis.

  • Pour voir la liste des services de Canopsis :
systemctl list-dependencies canopsis.service --type=service --no-pager | grep -E 'canopsis'

Pour voir les logs de Canopsis dans Docker Compose, il faut utiliser les commandes suivantes.

  • Voir la liste des services de Canopsis :

    docker compose config --services
    

  • Récupérer le nom du service et consulter les logs :

    docker compose logs [service]
    

  • Pour afficher les logs en temps réel :

    docker compose logs -f [service]
    

  • Pour voir les logs de Canopsis dans Kubernetes utiliser la commande kubectl

  • Voir la liste des pods actifs de Canopsis :

    kubectl get pods -n canopsis
    

  • Récupérer le nom du pod et consulter les logs :

    kubectl logs -n canopsis [nom du pod]
    

  • Pour voir les logs en temps réel :

    kubectl logs -n canopsis -f [nom du pod]
    

Extraire les logs

  • Extraire les logs concernant des erreurs :

    journalctl -u 'canopsis*' -f | grep -i "err" > canopsis-journald-$(date +%F_%H-%M).log
    

  • Récupérer les logs à partir d'une date :

    journalctl -u 'canopsis*' --since "2026-01-28 10:00" -f > canopsis-journald-$(date +%F_%H-%M).log
    

  • Extraire les logs concernant des erreurs :

    docker compose logs [service] | grep -i "err" > canopsis-dockercompose-$(date +%F_%H-%M).log
    

  • Récupérer les logs à partir d'une date :

    docker compose logs --since $(date -d "2026-01-28 10:00" +%s) [service] > canopsis-dockercompose-$(date +%F_%H-%M).log
    

Docker utilise les timestamp au format UNIX, vous pouvez vous aider de sites comme epochconverter.com pour convertir les dates en timestamp UNIX.

  • Extraire les logs concernant des erreurs :

    kubectl logs -n canopsis [nom du pod] | grep -i err > canopsis-helm-$(date +%F_%H-%M).log
    

  • Récupérer les logs à partir d'une date :

    kubectl logs -n canopsis [nom-du-pod] --since-time="2026-01-28T10:00:00Z" > canopsis-helm-$(date +%F_%H-%M).log
    

Rotation des logs

Docker Compose

La mise en place d'une politique de rétention des logs nécessite la présence du logiciel logrotate.

Une fois que logrotate est installé sur votre machine, créer le fichier /etc/logrotate.d/docker-container suivant :

/var/lib/docker/containers/*/*.log {
  rotate 7
  daily
  compress
  minsize 100M
  notifempty
  missingok
  delaycompress
  copytruncate
}

Pour vérifier la validité de la configuration logrotate ajoutée, lancez la commande :

logrotate -dv /etc/logrotate.d/docker-container

Si vous souhaitez forcer une exécution manuelle de cette rotation sur-le-champ, vous pouvez éventuellement lancer la commande :

logrotate -fv /etc/logrotate.d/docker-container

RPM (EL8, EL9)

Rotation des logs de MongoDB

MongoDB, la base de données utilisée par Canopsis produit également des fichiers journaux qu'il convient de limiter.

Ceci peut être réalisé grâce à cette commande :

cat > /etc/logrotate.d/canopsis-mongodb.conf << EOF
/var/log/mongodb/*.log {
       daily
       rotate 30
       copytruncate
       delaycompress
       compress
       notifempty
       missingok
}
EOF

Rotation des logs de TimescaleDB

TimescaleDB est la base utilisé pour logger les actions, les tech metrics, etc.. Elle produit également des fichiers journaux qu'il convient de limiter.

Deux modes sont disponible, soit via Logrotate, soit via journald

Configurer logrotate pour timescaledb :

cat > /etc/logrotate.d/canopsis-timescaledb.conf << EOF
/var/lib/pgsql/17/data/log/*.log {
        daily
        rotate 30
        copytruncate
        delaycompress
        compress
        notifempty
        missingok
}
EOF

Configurer timescaledb pour envoyer les logs dans journald :

sed -i "s/^#\?logging_collector.*/logging_collector = off/" /var/lib/pgsql/17/data/postgresql.conf

puis on redémarre le service :

systemctl restart postgresql-17.service

Rotation des logs de RabbitMQ

cat > /etc/logrotate.d/canopsis-rabbitmq.conf << EOF
/var/log/rabbitmq/*.log {
       daily
       rotate 30
       copytruncate
       delaycompress
       compress
       notifempty
       missingok
}
EOF

Rotation des logs de Valkey

cat > /etc/logrotate.d/canopsis-valkey.conf << EOF
/var/log/valkey/*.log {
       daily
       rotate 30
       copytruncate
       delaycompress
       compress
       notifempty
       missingok
}
EOF