Bonjour
Log Scrutiny + InfluxDB avec numérotation des lignes pour plus de clarté!
===== ===== ===== ===== ===== ===== ===== ===== ===== =====
1 | scrutiny | s6-rc: info: service s6rc-oneshot-runner: starting
2 | scrutiny | s6-rc: info: service s6rc-oneshot-runner successfully started
l1l2 : s6rc-oneshot-runner démarre, c’est le système d’init à l’intérieur du conteneur (s6) qui lance les scripts
Qu’est‑ce que s6? https://github.com/skarnet/s6
3 | scrutiny | s6-rc: info: service fix-attrs: starting
4 | scrutiny | s6-rc: info: service fix-attrs successfully started
5 | scrutiny | s6-rc: info: service legacy-cont-init: starting
l3l4l5 : fix-attrs puis legacy-cont-init démarrent, ce sont des services internes qui appliquent les permissions, puis lancent les scripts d’init “legacy”
Le conteneur se met en place, il prépare l’environnement avant de lancer les vrais services (InfluxDB, Scrutiny, Cron…).
S6, cest quoi? Source officielle https://github.com/just-containers/s6-overlay/issues/376
Cron, c’est quoi ? https://www.redhat.com/en/blog/linux-cron-command
InfluxDB, cest quoi? https://en.wikipedia.org/wiki/InfluxDB
6 | scrutiny | cont-init: info: running /etc/cont-init.d/01-timezone
7 | scrutiny | cont-init: info: /etc/cont-init.d/01-timezone exited 0
l6l7 : Script /etc/cont-init.d/01-timezone configure le fuseau horaire OK
8 | scrutiny | cont-init: info: running /etc/cont-init.d/50-cron-config
9 | scrutiny | cont-init: info: /etc/cont-init.d/50-cron-config exited 0
l8l9: Script /etc/cont-init.d/50-cron-config prépare la config de Cron OK
Le conteneur applique la configuration générale (heure, Cron) avant de lancer les services applicatifs.
Pour imager ça : tu peux imaginer que le conteneur fait son checklist de démarrage
10 | scrutiny | s6-rc: info: service legacy-cont-init successfully started
l10 : legacy-cont-init est terminé, toute l’init de base est OK
11 | scrutiny | s6-rc: info: service legacy-services: starting
l11 : legacy-services va démarrer, c’est le groupe de services principaux
12 | scrutiny | services-up: info: copying legacy longrun collector-once (no readiness notification)
13 | scrutiny | services-up: info: copying legacy longrun cron (no readiness notification)
14 | scrutiny | services-up: info: copying legacy longrun influxdb (no readiness notification)
15 | scrutiny | services-up: info: copying legacy longrun scrutiny (no readiness notification)
l12,l13,l14,l15 : s6 déclare les services longrun : collector-once, cron, influxdb, scrutiny
En clair : le système s6, qui gère le démarrage du conteneur, est en train de préparer les services principaux qui vont tourner en continu
16 | scrutiny | waiting for influxdb
l16 : waiting for influxdb, Scrutiny attend que InfluxDB soit prêt!
17 | scrutiny | starting cron
m17 : starting cron le service cron démarre
En clair : starting cron, le planificateur de tâches démarre
cron = un outil qui exécute automatiquement des scripts à des heures précises c’est normal, attendu, et nécessaire dans Scrutiny!!!
18 | scrutiny | s6-rc: info: service legacy-services successfully started
l18 : legacy-services successfully started tous les services “déclarés” ont été lancés
Regarde par ici la doc officielle de s6‑overlay qui explique comment les services sont déclarés et démarrés : https://github.com/just-containers/s6-overlay
Cette documentation décrit : les services longrun, les services oneshot, la séquence de démarrage
19 | scrutiny | influxdb config file already exists. skipping.
20 | scrutiny | starting influxdb
21 | scrutiny | INFO: custom init already performed
22 | scrutiny | influxdb not ready
l19,l20,l21,l22: initialisation de l’InfluxDB
23 | scrutiny | ts=2025-12-18T10:23:04.888093Z lvl=info msg="Welcome to InfluxDB" log_id=0~tFaril000 version=v2.2.0 commit=a2f8538837 build_date=2022-04-06T17:36:40Z
24 | scrutiny | ts=2025-12-18T10:23:04.890415Z lvl=info msg="Resources opened" log_id=0~tFaril000 service=bolt path=/opt/scrutiny/influxdb/influxd.bolt
25 | scrutiny | ts=2025-12-18T10:23:04.890486Z lvl=info msg="Resources opened" log_id=0~tFaril000 service=sqlite path=/opt/scrutiny/influxdb/influxd.sqlite
26 | scrutiny | ts=2025-12-18T10:23:04.892414Z lvl=info msg="Checking InfluxDB metadata for prior version." log_id=0~tFaril000 bolt_path=/opt/scrutiny/influxdb/influxd.bolt
27 | scrutiny | ts=2025-12-18T10:23:04.892597Z lvl=info msg="Using data dir" log_id=0~tFaril000 service=storage-engine service=store path=/opt/scrutiny/influxdb/engine/data
28 | scrutiny | ts=2025-12-18T10:23:04.892615Z lvl=info msg="Compaction settings" log_id=0~tFaril000 service=storage-engine service=store max_concurrent_compactions=2 throughput_bytes_per_second=50331648 throughput_bytes_per_second_burst=50331648
29 | scrutiny | ts=2025-12-18T10:23:04.892647Z lvl=info msg="Open store (start)" log_id=0~tFaril000 service=storage-engine service=store op_name=tsdb_open op_event=start
30 | scrutiny | ts=2025-12-18T10:23:04.902602Z lvl=info msg="index opened with 8 partitions" log_id=0~tFaril000 service=storage-engine index=tsi
31 | scrutiny | ts=2025-12-18T10:23:04.904039Z lvl=info msg="Opened file" log_id=0~tFaril000 service=storage-engine engine=tsm1 service=filestore path=/opt/scrutiny/influxdb/engine/data/ce076be5ddb2e94b/autogen/2/000000001-000000001.tsm id=0 duration=0.146ms
32 | scrutiny | ts=2025-12-18T10:23:04.904416Z lvl=info msg="Opened shard" log_id=0~tFaril000 service=storage-engine service=store op_name=tsdb_open index_version=tsi1 path=/opt/scrutiny/influxdb/engine/data/ce076be5ddb2e94b/autogen/2 duration=10.676ms
33 | scrutiny | ts=2025-12-18T10:23:04.904755Z lvl=info msg="index opened with 8 partitions" log_id=0~tFaril000 service=storage-engine index=tsi
34 | scrutiny | ts=2025-12-18T10:23:04.906426Z lvl=info msg="Opened file" log_id=0~tFaril000 service=storage-engine engine=tsm1 service=filestore path=/opt/scrutiny/influxdb/engine/data/ce076be5ddb2e94b/autogen/1/000000001-000000001.tsm id=0 duration=0.181ms
35 | scrutiny | ts=2025-12-18T10:23:04.906783Z lvl=info msg="Opened shard" log_id=0~tFaril000 service=storage-engine service=store op_name=tsdb_open index_version=tsi1 path=/opt/scrutiny/influxdb/engine/data/ce076be5ddb2e94b/autogen/1 duration=13.033ms
36 | scrutiny | ts=2025-12-18T10:23:04.907076Z lvl=info msg="Open store (end)" log_id=0~tFaril000 service=storage-engine service=store op_name=tsdb_open op_event=end op_elapsed=14.428ms
37 | scrutiny | ts=2025-12-18T10:23:04.907110Z lvl=info msg="Starting retention policy enforcement service" log_id=0~tFaril000 service=retention check_interval=30m
38 | scrutiny | ts=2025-12-18T10:23:04.907130Z lvl=info msg="Starting precreation service" log_id=0~tFaril000 service=shard-precreation check_interval=10m advance_period=30m
39 | scrutiny | ts=2025-12-18T10:23:04.907878Z lvl=info msg="Starting query controller" log_id=0~tFaril000 service=storage-reads concurrency_quota=1024 initial_memory_bytes_quota_per_query=9223372036854775807 memory_bytes_quota_per_query=9223372036854775807 max_memory_bytes=0 queue_size=1024
40 | scrutiny | ts=2025-12-18T10:23:04.911407Z lvl=info msg="Configuring InfluxQL statement executor (zeros indicate unlimited)." log_id=0~tFaril000 max_select_point=0 max_select_series=0 max_select_buckets=0
41 | scrutiny | ts=2025-12-18T10:23:04.913970Z lvl=info msg="Listening" log_id=0~tFaril000 service=tcp-listener transport=http addr=:8086 port=8086
l23à41 : Démarrage complet d’InfluxDB, pas besoin de décortiquer tout le cheminement interne. InfluxDB est maintenant complètement démarré, prêt à recevoir des écritures et des lectures
42 | scrutiny | starting scrutiny
l42 : starting scrutiny le service Scrutiny est lancé maintenant que l’Infra InfluxDB est prête
43 | scrutiny | 2025/12/18 11:23:09 No configuration file found at /opt/scrutiny/config/scrutiny.yaml. Using Defaults.
l43 : Ici il faut s'arrêter un instant! Scrutiny cherche un fichier scrutiny.yaml monté (normalement placé dans ton volume Docker) /volume1/docker/scrutiny/scrutiny.yaml (dans ma config.). Il ne le trouve pas, donc il part avec les valeurs par défaut. Je comprends que le problème n’est pas que Scrutiny plante, mais qu’il tourne sans config personnalisée (donc peut être sans voir les disques?). C'était pour moi le point de blocage? packtu as raison! Il savere que non! scrutiny.yaml est un fichier optionnel (le fameux 3ième fichier) J'ai pensé que c’était peut‑être la cause du problème?
Pour résumé : Oui, il existe bien un “3roisième fichier” : scrutiny.yaml.Oui, Scrutiny le cherche.Oui, il est optionnel.Non, son absence n’empêche pas Scrutiny de fonctionner.llien officiel est par ici https://github.com/AnalogJ/scrutiny/blob/master/example.scrutiny.yaml
44 | scrutiny | ___ ___ ____ __ __ ____ ____ _ _ _ _
45 | scrutiny | / __) / __)( _ \( )( )(_ _)(_ _)( \( )( \/ )
46 | scrutiny | \__ \( (__ ) / )(__)( )( _)(_ ) ( \ /
47 | scrutiny | (___/ \___)(_)\_)(______) (__) (____)(_)\_) (__)
l44àl47 : Logo ASCII Scrutiny
48 | scrutiny | github.com/AnalogJ/scrutiny dev-0.8.1
l48 : Version : github.com/AnalogJ/scrutiny dev-0.8.1 Tu fais tourner la dernière version OK
49 | scrutiny |
50 | scrutiny | Start the scrutiny server
51 | scrutiny | time="2025-12-18T11:23:09+01:00" level=info msg="Trying to connect to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db" type=web
52 | scrutiny | time="2025-12-18T11:23:09+01:00" level=info msg="Successfully connected to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db" type=web
53 | scrutiny | time="2025-12-18T11:23:09+01:00" level=info msg="InfluxDB certificate verification: true" type=web
54 | scrutiny | time="2025-12-18T11:23:09+01:00" level=info msg="Database migration starting. Please wait..." type=web
55 | scrutiny | time="2025-12-18T11:23:09+01:00" level=info msg="Database migration completed successfully" type=web
56 | scrutiny | time="2025-12-18T11:23:09+01:00" level=info msg="SQLite global configuration migrations starting..." type=web
57 | scrutiny | time="2025-12-18T11:23:09+01:00" level=info msg="SQLite global configuration migrations completed successfully" type=web
l40à57 : Démarrage du serveur Scrutiny OK ça marche
‘Start the scrutiny server’ le serveur web/API démarre réellement, Connexion à la base SQLite scrutiny.db InfluxDB certificate verification: true signifie que Scrutiny va vérifier les certificats InfluxDB puis Migrations de la base SQLite. Scrutiny est correctement initialisé au niveau de ses bases internes (SQLite), il est prêt à faire son boulot (collecter, afficher, alerter).
58 | scrutiny | time="2025-12-18T11:23:14+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
59 | scrutiny | time="2025-12-18T11:23:14+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
60 | scrutiny | time="2025-12-18T11:23:19+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
61 | scrutiny | time="2025-12-18T11:23:19+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
62 | scrutiny | time="2025-12-18T11:23:25+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
63 | scrutiny | time="2025-12-18T11:23:25+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
64 | scrutiny | time="2025-12-18T11:23:30+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
65 | scrutiny | time="2025-12-18T11:23:30+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
66 | scrutiny | time="2025-12-18T11:23:35+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
67 | scrutiny | time="2025-12-18T11:23:35+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
68 | scrutiny | time="2025-12-18T11:23:40+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
69 | scrutiny | time="2025-12-18T11:23:40+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
70 | scrutiny | time="2025-12-18T11:23:45+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
71 | scrutiny | time="2025-12-18T11:23:45+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
72 | scrutiny | time="2025-12-18T11:23:50+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
73 | scrutiny | time="2025-12-18T11:23:50+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
74 | scrutiny | time="2025-12-18T11:23:55+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
75 | scrutiny | time="2025-12-18T11:23:55+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
76 | scrutiny | time="2025-12-18T11:24:00+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
77 | scrutiny | time="2025-12-18T11:24:00+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
78 | scrutiny | time="2025-12-18T11:24:05+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
79 | scrutiny | time="2025-12-18T11:24:05+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
80 | scrutiny | time="2025-12-18T11:24:10+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
81 | scrutiny | time="2025-12-18T11:24:10+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
82 | scrutiny | time="2025-12-18T11:24:15+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
83 | scrutiny | time="2025-12-18T11:24:15+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
84 | scrutiny | time="2025-12-18T11:24:20+01:00" level=info msg="Checking Influxdb & Sqlite health" type=web
85 | scrutiny | time="2025-12-18T11:24:20+01:00" level=info msg="127.0.0.1 - dc04dc7ec47e \"GET /api/health\" 200" type=web
l58à85 : Checking Influxdb & Sqlite health (l58à64) Scrutiny effectue un check interne
GET /api/health 200 (c'est une routine automatique) cela signifie :
-que Scrutiny vérifie que tout fonctionne,
-l’agent interroge sa propre API,
-l’API répond ‘tout va bien sert moi une bière’ Hihihi
-le code 200 OK cest bon
-l’adresse 127.0.0.1 = lui-même (cest le localhost, le conteneur quoi!)
-curl = l’outil utilisé pour faire la vérification
C’est normal, sain, et ça prouve que Scrutiny tourne correctement
===== ===== ===== ===== ===== ===== ===== ===== ===== =====
Voilà j’ai fini de décortiquer ton last journal!
Cets ca ‘mon rubik's cube’ du matin
Hihihi
Chaque ligne de log est une pièce du puzzle : on peut la triturer, la décortiquer, la comprendre en profondeur. On pourrait passer une heure sur une seule ligne tant elle raconte quelque chose du système.
Si tu es observateur… Tu verras que le logo de Scrutiny est de l’art ASCII (Y pleins de sites qui aborde cet Art et même une communauté!!! de 15000 membres)
Communauté Steam :: Groupe :: ASCII - ART
Guide de l'art ascii : de ses origines à son application | Adobe
En décortiquant ce journal Docker ligne par ligne, on réalise à quel point chaque détail raconte quelque chose du fonctionnement interne du conteneur.
Rien n’est dû au hazard: Tout est logique, tout est observable, et tout peut être compris si on prend le temps de regarder sous le capot.
C’est ça que je veux faire passer comme message : il ne faut pas avoir peur de mettre les mains dans le moteur Docker.
Lire les logs, bidouiller un docker-compose, tester, se tromper, mal interpréter, recommencer… Ce n’est pas grave. Au contraire : c’est comme ça qu’on apprend. Les conteneurs sont robustes : on casse, on relance puis on retombe sur ses pattes.
Et au bout du chemin, le dashboard apparaît, tout fonctionne, et on comprend ?Pourquoi ça fonctionne?
C’est important de ne pas se contenter de recettes toutes faites. Investir un peu de temps pour comprendre les rouages de la mécanique, c’est se donner les moyens d’être autonome. C’est comme conduire une voiture : on peut se contenter de tourner la clé, mais savoir se dépanner avec les moyens du bord, ça change tout.
Bon courage pour la suite!

M. Spock sera daccord avec moi

J'ai bien mérité mon
