• [^] # Re: inconvénients

    Posté par (site web personnel, Mastodon) . En réponse au journal Utiliser Podman en mode rootless pour exécuter en service des containers rootless. Évalué à 7.

    Merci pour les idées!

    J'ai oublié de mettre le fichier service généré par podman (j'ai juste ajouté la ligne OnFailure):

    # container-grafana.service
    # autogenerated by Podman 3.0.1
    # Thu Apr 28 23:09:17 CEST 2022
    [Unit]
    Description=Podman container-grafana.service
    Documentation=man:podman-generate-systemd(1)
    Wants=network.target
    After=network-online.target
    OnFailure=notify-admin@%n
    [Service]
    Environment=PODMAN_SYSTEMD_UNIT=%n
    Restart=on-failure
    TimeoutStopSec=70
    ExecStartPre=/bin/rm -f %t/container-grafana.pid %t/container-grafana.ctr-id
    ExecStart=/usr/bin/podman run --conmon-pidfile %t/container-grafana.pid --cidfile %t/container-grafana.ctr-id --cgroups=no-conmon -d --replace --name=grafana -p 3000:3000 --env-file /home/grafana/grafana.env --volume /home/grafana/grafana:/grafana --net slirp4netns:allow_host_loopback=true docker.io/grafana/grafana-oss
    ExecStop=/usr/bin/podman stop --ignore --cidfile %t/container-grafana.ctr-id -t 10
    ExecStopPost=/usr/bin/podman rm --ignore -f --cidfile %t/container-grafana.ctr-id
    PIDFile=%t/container-grafana.pid
    Type=forking
    [Install]
    WantedBy=multi-user.target default.target

    Pour tes idées, je commence par la deuxième qui repose sur celle proposée par la génération automatique de podman.

    Utiliser l'option --log-driver=journald (mais je ne sais pas si c'est déjà supporté par la version de podman proposée par debian).

    J'avais essayé ça, mais j'ai eu l'impression que ça ne marchait pas.

    En gardant le fichier tel que généré et en ajoutant les arguments --log-driver=journald --log-opt tag=grafana, les logs existent bien, mais ils apparaissent dans le journal système et ils sont préfixés par conmon.

    Ça m'a vraiment surpris que ça apparaissent dans le journal --system. C'est parce que journald détecte que l'utilisateur grafana est un utilisateur système (avec un UID < 1000) et il redirige ses logs directement dans les logs systèmes.

    Donc, malgré moi, lors de la création de l'utilisateur, j'avais pris le bon choix de demander d'en faire un utilisateur système car ça me centralise les logs (ce que je cherchais à faire justement :)).

    Pour le problème du préfixe conmon, il faudrait que j'essaie l'option --log-opt tag=grafana, mais avec podman 4, d'après ce bug (Debian a un podman en version 3.1).

    Pour l'instant, je vais essayer ta première idée, car je vais pouvoir changer le tag syslog avec ça.

    Deux méthode: fournir ta propre unit file pour le service au lieu d'utiliser podman generate et démarrer le pod comme s'il était lancé en interactif, non détaché.

    Je n'y avais pas pensé, merci.

    J'ai essayé et ça semble bien fonctionner, même si ce n'est pas la solution officielle.

    Pour le faire, j'ai enlever l'argument -d de la commande podman run, j'ai passé le Type en simple. En plus, j'ai ajouté l'option SyslogIdentifier=%N pour éviter de voir toujours écrit podman dans les logs.