UGREEN [docker/Scrutiny] Collector - problèmes rencontrés par Yann

  • Vague de SPAM

    Suite à une vague de spam sur le forum, les inscriptions sont temporairement limitées.

    Après votre inscription, un membre de l'équipe devra valider votre compte avant qu'il ne soit activé. Nous sommes désolés pour la gêne occasionnée et vous remercions de votre patience.

reinett

Chevalier Jedi
Membre Confirmé
15 Mai 2025
233
72
73
Bonjour

💡Pour plus de clarté nous allons dissocier ton fil de discussion du mien! Je t'invite donc à poursuivre par ici.

Pour ton info, je ne suis pas expert Docker simplement un ‘utilisateur enthousiaste’ je me considère aussi ‘newbie’ j’en apprends tous les jours… il ya tellement de choses à assimiler! Je prend simplement le temps de comprendre le ‘Pourquoi et le Comment’ Pourquoi cela fonctionne chez moi et pas chez toi? Nous avons pourtant les mêmes machines… mais nos montages sont différents! Je n'écris pas c'est bien ou c'est pas bien!
Tu verras je suis pointilleux, soucieux du détail, du grain de sable qui peut bloquer la machine! Je veux bien aider mais faut que ‘l’autre’ que je respecte fasse des efforts de compréhension et d’un minimum d'investissement pour administrer sa bécane… et je sens que c'est le cas!
Cela me coûte en temps mais je prends du plaisir à aider comme cela à pu coûter aux autres qui m'ont aidé depuis le printemps dernier!
Yes je suis un newbie! 🤪Hihihi mais je ne veux pas seulement apprendre mais comprendre ce que je fais.
:unsure:La est la nuance! Bon nous allons tenter de régler ton problème?

Analyse du journal de l'agent Scrutiny

-ligne35 : ici InfluxDB écoute sur le port 8086
-ligne38 à 41 : Scrutiny démarre aussi, on voit le logo ASCII
-ligne44 à 50 : les migrations SQLite réussies sont confirmées aux lignes 45,48, et 50
-ligne37 : Scrutiny démarre sans fichier de configuration (scrutiny.yaml)? Mais où est ton fichier?
… Ensuite ça coince en ligne :
-ligne52 : Erreur critique : bucket metrics introuvable!!!
-ligne53 : conséquence directe l’agent Scrutiny renvoie une erreur Retour HTTP 500 sur /api/summaty

Explication : l’erreur critique formée par les deux lignes clés de ton journal: c'est écrit en clair en ligne 52, l’agent Scrutiny tente de récupérer le résumé des périphériques, mais échoue car le bucket metrics est introuvable dans InfluxDB. En ligne 53, le serveur renvoie une erreur HTTP 500 à ton navigateur sur l’API /api/summary, conséquence directe du problème de bucket manquant.
Donc Scrutiny fonctionne bien, InfluxDB est joignable, mais l’absence du bucket metrics bloque l’affichage des données SMART.

Tu dois corriger 2 points essentiels dans ton installation Docker :
1/Fournir un fichier de config. scrutiny.yaml
Actuellement, Scrutiny démarre sans fichier de config. (ligne 37 du journal). Ce fichier est indispensable pour indiquer à Scrutiny :L’URL d’InfluxDB (http://influxdb:8086 par exemple), le token d’accès généré dans InfluxDB, l’organisation InfluxDB, le bucket metrics où stocker les données SMART.

2/mettre en place le 'collector'
Le collector est le composant qui lit les données SMART des disques et les envoie vers InfluxDB. C’est lui qui crée le bucket metrics si besoin.

Conclusion/Chez toi, le problème est que l'agent Scrutiny démarre sans fichier scrutiny.yaml!!! Le bucket metrics n’est pas créé car le collector n’a pas tourné.

Ce que tu dois modifier :Ajoute et monte un nouveau fichier scrutiny.yaml dans son conteneur Docker, puis lance le collector Scrutiny pour créer et alimenter le bucket metrics


Quesaquo?

Scrutiny sous Docker est un outil open‑source qui sert de tableau de bord pour surveiller la santé des disques durs via les données S.M.A.R.T.

Tu trouveras les fils de discussion autour de Scrutiny sur les forums NAS, chez Docker Hub et auprès de la communautés LinuxServer.io..

Des passionnés de Linux, de serveurs personnels et de conteneurs Docker ont un compte GitHub officiel où le code source, les Dockerfiles et la documentation sont disponibles par ici: LinuxServer.io · GitHub

-?bucket metrics est un espace de stockage dans InfluxDB où Scrutiny enregistre les données SMART (température, erreurs, cycles d’écriture/lecture, etc.) de tes disques. Sans ce bucket, Scrutiny n’a aucun endroit où lire les mesures, donc l’interface web ne peut rien afficher

InfluxData Documentation cest ici:

https://docs.influxdata.com/

https://docs.influxdata.com/influxdb/v2/admin/buckets/*

-?collector : un petit service qui s’exécute sur la machine où se trouvent les disques. Il interroge régulièrement les disques via smartctl (outil S.M.A.R.T). Il collecte les données (température, erreurs, cycles, etc.) et les envoie à l’API Scrutiny.Web UI / API : l’interface graphique qui reçoit les données du collector et les affiche dans un tableau de bord. Le collector est donc indispensable pour surveiller les disques.

Tu pourras ici poursuivre ton lexique… tout mémoriser c'est pas possible!

Autre point!!!


Nous avons le même NAS à savoir le DXP2800 avec des montages différents:

1/Mon montage
-RAID1 logiciel avec 2xNVMe (VOL1) c'est ici que sont installées mes apps, mon docker, j'ai une redondance… si un SSD tombe en panne, l’autre continue à fonctionner. Lors de la dernière MAJ j’ai justement eu une ‘panne’ sur NVMe1 puis le RAID s'est reconstruit Ouf !!!Heureusement que j’ai écouté les conseils des anciens du forum.
-2HDDs en Basic (VOL2&VOL3) indépendants ‘chacun vit sa vie’, chacun est utilisé séparément, pas de redondance, j’ai plus de flexibilité pour le stockage
Je combine donc performance (via les SSD en RAID1) + capacité (les 2HDDs en Basic).

2/Ton montage
-1 HDD en Basic (VOL1), stockage classique, sans redondance
-1 SSD en Basic (VOL2), Docker est installé dessus, donc tu bénéficie de la rapidité du SSD sans plus! Pas de RAID! chaque disque est indépendant, donc s’il y a une panne, il n’y a pas de copie automatique, Conséquence: Faut recommencer depuis le début! En as-tu conscience?

Comparaison:
Chez moi/plus sécurisé pour la partie système/SSD grâce au RAID1

Chez toi/plus simple, mais moins tolérant aux pannes. Si ton SSD (Volume2) lâche, Docker et ses conteneurs sont perdus. Si tu perds ton HDD, les données sans sauvegarde automatique. Tout est perdu!
Performance : OUI, tu profites quand même de la vitesse du SSD pour Docker, donc ça reste fluide.
Ce n’est pas “grave” de rouler avec 1SEUL NVMe mais c’est plus risqué. Sans RAID, tu dois absolument prévoir des sauvegardes régulières pour éviter de tout perdre.
Pour finir: Mon montage est bon grâce au RAID1 sur les NVMe, le tien est fonctionnel mais vulnérable : pas de RAID donc pas de tolérance aux pannes!

La question de la sécurité des données est PRIORITAIRE pour moi!!!

Techniquement ton montage est risqué si 1 disque tombe en panne? C'est arrivé à 2 newbies... il n'y a pas si longtemps!!! La solution est de mettre en place des sauvegardes régulières ou envisager... dès que possible te conseilles vivement un RAID1 sur les 2NVMe! Tu l'as peut être prévu?

Bye🍎
 
Dernière édition:
  • J'aime
Réactions: yannouche4260
Merci encore une fois pour ton aide et le temps que tu prends pour le faire :)

Alors pour ce qui est de la sécurité des données, je suis tout à fait d'accord. Je comptais faire un RAID 1 avec un deuxième SSD.
Pour les données sur le HDD, c'est essentiellement une bibliothèque des films/dessins animés donc pas capital (et j'ai une copie sur un autre DD au cas où).
Mes données essentielles sont stockée sur 2 disques séparés.
Le deuxième HDD sera probablement en partie utilisé pour enregistré les images des caméras de sécurités que je suis en train d'installer.
Je suis un peu sur tout les fronts en même temps, ça fait aussi presque 2 ans que je me suis lancé dans Home Assistant mais depuis quelques semaines je m'y consacre un peu plus.

Je suis un peu comme toi, cela ne m'intéresse pas de seulement faire un copier/coller. J'aime savoir ce que je fais et comprendre le pourquoi du comment.

Ici je galère car c'est vraiment nouveau pour moi mais je m'accroche :D je veux comprendre ...

Donc pour rappel:

1 HDD en Basic (Volume1) et 1 SSD en Basic également (Volume2).
Docker est installé sur le SSD donc Volume 2

la procédure que j'ai utilisé pour installer Scrutiny:

-création d'un dossier "Scrutiny" dans le dossier "Docker"
-création d'un dossier "Influxdb" dans le dossier "Scrutiny"
-création du fichier collector.yaml dans le dossier "Scrutiny"
Capture d’écran 2025-12-16 à 14.44.56.png

- création d'un projet dans Docker, avec la configuration compose qui suit:

Capture d’écran 2025-12-16 à 14.41.34.png

Voici ce que j’obtiens niveau des dossiers:
Capture d’écran 2025-12-16 à 14.47.49.png
Capture d’écran 2025-12-16 à 14.48.00.png

Effectivement, je ne vois pas le fichier que tu mentionnes : config. scrutiny.yaml
Pour ce qui est du collector j'ai fais une erreur avec ce fichier?

J'ai continué a regardé ce matin en suivant bien tes screen de l'autre post pour le terminal et il me semble que je suis arrivé au même résultat que toi :)
 
  • J'aime
Réactions: reinett
Ok poursuivons le test de la CC & du collector corrigés! :unsure:

Faut être patient et bidouiller encore un peu la config.

docker-compose.yml corrigé

-----
version: '3.8'

services:
scrutiny:
container_name: scrutiny
image: ghcr.io/analogj/scrutiny:master-omnibus
privileged: true
cap_add:
- SYS_RAWIO
- SYS_ADMIN
ports:
- "6070:8080" # Interface Web Scrutiny
- "8086:8086" # InfluxDB Admin
volumes:
- /run/udev:/run/udev:ro
- /volume2/docker/scrutiny:/opt/scrutiny/config
- /volume2/docker/scrutiny/influxdb:/opt/scrutiny/influxdb
devices:
- /dev/sda:/dev/sda # HDD
- /dev/nvme0n1:/dev/nvme0n1 # SSD NVMe
environment:
- SCRUTINY_WEB_INFLUXDB_INIT_USERNAME=admin
- SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD=motdepassefort
- SCRUTINY_WEB_INFLUXDB_TOKEN=token123
- TIMEZONE=Europe/Paris
restart: unless-stopped
-----

collector.yaml adapté à ton montage

-----
version: 1
host:
id: "DXP2800"
devices:
- device: /dev/sda
type: sat
- device: /dev/nvme0n1
type: nvme
-----

1/sauvegarde config-compose.yml dans son dossier Docker
2/mets collector.yaml dans /volume2/docker/scrutiny/
3/redémarrer Scrutiny :
4/vérifier les logs

Euh vérifie les permissions! Chaque répertoire et s/répertoire dans Docker/Scrutiny éventuelllment force les permissions?

Tente pour voir?


Ton Scrutiny devrait fonctionner comme le mien : bucket metrics créé, collector actif, interface web sans erreur

Donc A suivre! Un vrai feuilleton Hihihi Yann a pas de raison que ca ne marche pas? :p
 
Hahaha c'est clair, quelle affaire! :p

J'ai supprimé tout et recommencé depuis 0 avec ta config ci-dessus.
J'ai juste une question pour le Token: je dois aller le créer moi-même dans l'interface de influxdb?
sinon ça donne ça o_O

scrutiny | cont-init: info: running /etc/cont-init.d/50-cron-config

scrutiny | cont-init: info: /etc/cont-init.d/50-cron-config exited 0
scrutiny | s6-rc: info: service legacy-cont-init successfully started
scrutiny | s6-rc: info: service legacy-services: starting
scrutiny | services-up: info: copying legacy longrun collector-once (no readiness notification)
scrutiny | services-up: info: copying legacy longrun cron (no readiness notification)
scrutiny | services-up: info: copying legacy longrun influxdb (no readiness notification)

scrutiny | services-up: info: copying legacy longrun scrutiny (no readiness notification)
scrutiny | s6-rc: info: service legacy-services successfully started
scrutiny | waiting for influxdb
scrutiny | waiting for scrutiny service to start
scrutiny | starting influxdb
scrutiny | starting cron
scrutiny | influxdb not ready
scrutiny | scrutiny api not ready
scrutiny | ts=2025-12-16T16:13:07.070821Z lvl=info msg="Welcome to InfluxDB" log_id=0~qzprVW000 version=v2.2.0 commit=a2f8538837 build_date=2022-04-06T17:36:40Z
scrutiny | ts=2025-12-16T16:13:07.072038Z lvl=info msg="Resources opened" log_id=0~qzprVW000 service=bolt path=/opt/scrutiny/influxdb/influxd.bolt
scrutiny | ts=2025-12-16T16:13:07.072095Z lvl=info msg="Resources opened" log_id=0~qzprVW000 service=sqlite path=/opt/scrutiny/influxdb/influxd.sqlite
scrutiny | ts=2025-12-16T16:13:07.072229Z lvl=info msg="Bringing up metadata migrations" log_id=0~qzprVW000 service="KV migrations" migration_count=19
scrutiny | ts=2025-12-16T16:13:07.081953Z lvl=info msg="Bringing up metadata migrations" log_id=0~qzprVW000 service="SQL migrations" migration_count=5
scrutiny | ts=2025-12-16T16:13:07.090968Z lvl=info msg="Using data dir" log_id=0~qzprVW000 service=storage-engine service=store path=/opt/scrutiny/influxdb/engine/data
scrutiny | ts=2025-12-16T16:13:07.091149Z lvl=info msg="Compaction settings" log_id=0~qzprVW000 service=storage-engine service=store max_concurrent_compactions=2 throughput_bytes_per_second=50331648 throughput_bytes_per_second_burst=50331648
scrutiny | ts=2025-12-16T16:13:07.091167Z lvl=info msg="Open store (start)" log_id=0~qzprVW000 service=storage-engine service=store op_name=tsdb_open op_event=start
scrutiny | ts=2025-12-16T16:13:07.091247Z lvl=info msg="Open store (end)" log_id=0~qzprVW000 service=storage-engine service=store op_name=tsdb_open op_event=end op_elapsed=0.082ms
scrutiny | ts=2025-12-16T16:1
3:07.091295Z lvl=info msg="Starting retention policy enforcement service" log_id=0~qzprVW000 service=retention check_interval=30m
scrutiny | ts=2025-12-16T16:13:07.091319Z lvl=info msg="Starting precreation service" log_id=0~qzprVW000 service=shard-precreation check_interval=10m advance_period=30m
scrutiny | ts=2025-12-16T16:13:07.092514Z lvl=info msg="Starting query controller" log_id=0~qzprVW000 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
scrutiny | ts=2025-12-16T16:13:07.094318Z lvl=info msg="Configuring InfluxQL statement executor (zeros indicate unlimited)." log_id=0~qzprVW000 max_select_point=0 max_select_series=0 max_select_buckets=0
scrutiny | ts=2025-12-16T16:13:07.098283Z lvl=info msg=Listening log_id=0~qzprVW000 service=tcp-listener transport=http addr=:8086 port=8086
scrutiny | starting scrutiny
scrutiny | scrutiny api not ready
scrutiny | 2025/12/16 16:13:11 No configuration file found at /opt/scrutiny/config/scrutiny.yaml. Using Defaults.
scrutiny |
scrutiny | ___ ___ ____ __ __ ____ ____ _ _ _ _
scrutiny | / __) / __)( _ \( )( )(_ _)(_ _)( \( )( \/ )
scrutiny | \__ \( (__ ) / )(__)( )( _)(_ ) ( \ /
scrutiny | (___/ \___)(_)\_)(______) (__) (____)(_)\_) (__)
scrutiny | github.com/AnalogJ/scrutiny dev-0.8.1
scrutiny |
scrutiny | Start the scrutiny server

scrutiny | time="2025-12-16T16:13:11Z" level=info msg="Trying to connect to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db\n" type=web

scrutiny | time="2025-12-16T16:13:11Z" level=info msg="Successfully connected to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db\n" type=web
scrutiny | time="2025-12-16T16:13:11Z" level=info msg="InfluxDB certificate verification: true\n" type=web
scrutiny | time="2025-12-16T16:13:12Z" level=info msg="Database migration starting. Please wait, this process may take a long time...." type=web
scrutiny | time="2025-12-16T16:13:12Z" level=info msg="Database migration completed successfully" type=web
scrutiny | time="2025-12-16T16:13:12Z" level=info msg="SQLite global configuration migrations starting. Please wait...." type=web
scrutiny | time="2025-12-16T16:13:12Z" level=info msg="SQLite global configuration migrations completed successfully" type=web

scrutiny | time="2025-12-16T16:13:16Z" level=info msg="127.0.0.1 - 7a4a69d94e1d [16/Dec/2025:16:13:16 +0000] \"HEAD /api/health\" 200 0 \"\" \"curl/7.88.1\" (1ms)" clientIP=127.0.0.1 hostname=7a4a69d94e1d latency=1 method=HEAD path=/api/health referer= respLength=0 statusCode=200 type=web userAgent=curl/7.88.1
scrutiny | starting scrutiny collector (run-once mode. subsequent calls will be triggered via cron service)
scrutiny | 2025/12/16 16:13:16 Loading configuration file: /opt/scrutiny/config/collector.yaml

Et quand je lance l'interface ==>>

16:15:05 +0000] \"GET /web/dashboard\" 304 0 \"\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0\" (1ms)" clientIP=192.168.0.122 hostname=7a4a69d94e1d latency=1 method=GET path=/web/dashboard referer= respLength=0 statusCode=304 type=web userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0"
scrutiny | time="2025-12-16T16:15:05Z" level=info msg="192.168.0.122 - 7a4a69d94e1d [16/Dec/2025:16:15:05 +0000] \"GET /api/summary\" 200 38 \"http://192.168.0.253:6070/web/dashboard\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0\" (67ms)" clientIP=192.168.0.122 hostname=7a4a69d94e1d latency=67 method=GET path=/api/summary referer="http://192.168.0.253:6070/web/dashboard" respLength=38 statusCode=200 type=web userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0"
scrutiny | time="2025-12-16T16:15:05Z" level=info msg="192.168.0.122 - 7a4a69d94e1d [16/Dec/2025:16:15:05 +0000] \"GET /api/settings\" 200 340 \"http://192.168.0.253:6070/web/dashboard\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0\" (2ms)" clientIP=192.168.0.122 hostname=7a4a69d94e1d latency=2 method=GET path=/api/settings referer="http://192.168.0.253:6070/web/dashboard" respLength=340 statusCode=200 type=web userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0"

scrutiny | time="2025-12-16T16:15:06Z" level=info msg="192.168.0.122 - 7a4a69d94e1d [16/Dec/2025:16:15:06 +0000] \"GET /web/dashboard\" 304 0 \"\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0\" (1ms)" clientIP=192.168.0.122 hostname=7a4a69d94e1d latency=1 method=GET path=/web/dashboard referer= respLength=0 statusCode=304 type=web userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0"
scrutiny | time="2025-12-16T16:15:06Z" level=info msg="192.168.0.122 - 7a4a69d94e1d [16/Dec/2025:16:15:06 +0000] \"GET /api/summary\" 200 38 \"http://192.168.0.253:6070/web/dashboard\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0\" (60ms)" clientIP=192.168.0.122 hostname=7a4a69d94e1d latency=60 method=GET path=/api/summary referer="http://192.168.0.253:6070/web/dashboard" respLength=38 statusCode=200 type=web userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0"
scrutiny | time="2025-12-16T16:15:06Z" level=info msg="192.168.0.122 - 7a4a69d94e1d [16/Dec/2025:16:15:06 +0000] \"GET /api/settings\" 200 340 \"http://192.168.0.253:6070/web/dashboard\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0\" (2ms)" clientIP=192.168.0.122 hostname=7a4a69d94e1d latency=2 method=GET path=/api/settings referer="http://192.168.0.253:6070/web/dashboard" respLength=340 statusCode=200 type=web userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0"
scrutiny | time="2025-12-16T16:16:40Z" level=info msg="192.168.0.122 - 7a4a69d94e1d [16/Dec/2025:16:16:40 +0000] \"GET /web/dashboard\" 304 0 \"\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0\" (1ms)" clientIP=192.168.0.122 hostname=7a4a69d94e1d latency=1 method=GET path=/web/dashboard referer= respLength=0 statusCode=304 type=web userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0"
scrutiny | time="2025-12-16T16:16:41Z" level=info msg="192.168.0.122 - 7a4a69d94e1d [16/Dec/2025:16:16:41 +0000] \"GET /api/summary\" 200 38 \"http://192.168.0.253:6070/web/dashboard\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0\" (59ms)" clientIP=192.168.0.122 hostname=7a4a69d94e1d latency=59 method=GET path=/api/summary referer="http://192.168.0.253:6070/web/dashboard" respLength=38 statusCode=200 type=web userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0"

scrutiny | time="2025-12-16T16:16:41Z" level=info msg="192.168.0.122 - 7a4a69d94e1d [16/Dec/2025:16:16:41 +0000] \"GET /api/settings\" 200 340 \"http://192.168.0.253:6070/web/dashboard\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0\" (2ms)" clientIP=192.168.0.122 hostname=7a4a69d94e1d latency=2 method=GET path=/api/settings referer="http://192.168.0.253:6070/web/dashboard" respLength=340 statusCode=200 type=web userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0"


EDIT: je viens bien de le trouver sur le tableau de influxdb donc je suppose que c'est ok pour le token

mais le reste toujours pareil...
 
Dernière édition:
Ok à présent j'ai vraiment simplifie la CC: :unsure:

version: '3.8'

services:
scrutiny:
container_name: scrutiny
image: ghcr.io/analogj/scrutiny:master-omnibus
privileged: true
cap_add:
- SYS_RAWIO
- SYS_ADMIN
ports:
- "6070:8080" # Interface Web Scrutiny
- "8086:8086" # InfluxDB Admin
volumes:
- /run/udev:/run/udev:ro
- /volume2/docker/scrutiny:/opt/scrutiny/config
- /volume2/docker/scrutiny/influxdb:/opt/scrutiny/influxdb
devices:
- /dev/sda:/dev/sda # HDD Basic (VOL1)
- /dev/nvme0n1:/dev/nvme0n1 # SSD Basic (VOL2)
environment:
- TIMEZONE=Europe/Paris
restart: unless-stopped

-----
version: 1
host:
id: "DXP2800"
devices:
- device: /dev/sda
type: sat
- device: /dev/nvme0n1
type: nvme


Bon A suivre
 
  • J'aime
Réactions: yannouche4260
On va devenir fous :p

scrutiny | cont-init: info: running /etc/cont-init.d/50-cron-config
scrutiny | cont-init: info: /etc/cont-init.d/50-cron-config exited 0
scrutiny | s6-rc: info: service legacy-cont-init successfully started
scrutiny | s6-rc: info: service legacy-services: starting
scrutiny | services-up: info: copying legacy longrun collector-once (no readiness notification)

scrutiny | services-up: info: copying legacy longrun cron (no readiness notification)
scrutiny | services-up: info: copying legacy longrun influxdb (no readiness notification)
scrutiny | services-up: info: copying legacy longrun scrutiny (no readiness notification)
scrutiny | s6-rc: info: service legacy-services successfully started
scrutiny | waiting for influxdb
scrutiny | starting cron

scrutiny | starting influxdb

scrutiny | waiting for scrutiny service to start


scrutiny | scrutiny api not ready
scrutiny | influxdb not ready
scrutiny | ts=2025-12-16T17:12:04.968664Z lvl=info msg="Welcome to InfluxDB" log_id=0~r2CnQ0000 version=v2.2.0 commit=a2f8538837 build_date=2022-04-06T17:36:40Z
scrutiny | ts=2025-12-16T17:12:04.970523Z lvl=info msg="Resources opened" log_id=0~r2CnQ0000 service=bolt path=/opt/scrutiny/influxdb/influxd.bolt
scrutiny | ts=2025-12-16T17:12:04.970867Z lvl=info msg="Resources opened" log_id=0~r2CnQ0000 service=sqlite path=/opt/scrutiny/influxdb/influxd.sqlite
scrutiny | ts=2025-12-16T17:12:04.971134Z lvl=info msg="Bringing up metadata migrations" log_id=0~r2CnQ0000 service="KV migrations" migration_count=19
scrutiny | ts=2025-12-16T17:12:04.980532Z lvl=info msg="Bringing up metadata migrations" log_id=0~r2CnQ0000 service="SQL migrations" migration_count=5
scrutiny | ts=2025-12-16T17:12:04.993401Z lvl=info msg="Using data dir" log_id=0~r2CnQ0000 service=storage-engine service=store path=/opt/scrutiny/influxdb/engine/data
scrutiny | ts=2025-12-16T17:12:04.993526Z lvl=info msg="Compaction settings" log_id=0~r2CnQ0000 service=storage-engine service=store max_concurrent_compactions=2 throughput_bytes_per_second=50331648 throughput_bytes_per_second_burst=50331648
scrutiny | ts=2025-12-16T17:12:04.993687Z lvl=info msg="Open store (start)" log_id=0~r2CnQ0000 service=storage-engine service=store op_name=tsdb_open op_event=start
scrutiny | ts=2025-12-16T17:12:04.993748Z lvl=info msg="Open store (end)" log_id=0~r2CnQ0000 service=storage-engine service=store op_name=tsdb_open op_event=end op_elapsed=0.210ms
scrutiny | ts=2025-12-16T17:12:04.994103Z lvl=info msg="Starting retention policy enforcement service" log_id=0~r2CnQ0000 service=retention check_interval=30m
scrutiny | ts=2025-12-16T17:12:04.994139Z lvl=info msg="Starting precreation service" log_id=0~r2CnQ0000 service=shard-precreation check_interval=10m advance_period=30m
scrutiny | ts=2025-12-16T17:12:04.995903Z lvl=info msg="Starting query controller" log_id=0~r2CnQ0000 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
scrutiny | ts=2025-12-16T17:12:04.998144Z lvl=info msg="Configuring InfluxQL statement executor (zeros indicate unlimited)." log_id=0~r2CnQ0000 max_select_point=0 max_select_series=0 max_select_buckets=0
scrutiny | ts=2025-12-16T17:12:05.001714Z lvl=info msg=Listening log_id=0~r2CnQ0000 service=tcp-listener transport=http addr=:8086 port=8086
scrutiny | scrutiny api not ready
scrutiny | starting scrutiny
scrutiny | 2025/12/16 17:12:09 No configuration file found at /opt/scrutiny/config/scrutiny.yaml. Using Defaults.
scrutiny |
scrutiny | ___ ___ ____ __ __ ____ ____ _ _ _ _
scrutiny | / __) / __)( _ \( )( )(_ _)(_ _)( \( )( \/ )
scrutiny | \__ \( (__ ) / )(__)( )( _)(_ ) ( \ /
scrutiny | (___/ \___)(_)\_)(______) (__) (____)(_)\_) (__)
scrutiny | github.com/AnalogJ/scrutiny dev-0.8.1
scrutiny |
scrutiny | Start the scrutiny server
scrutiny | time="2025-12-16T17:12:09Z" level=info msg="Trying to connect to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db\n" type=web
scrutiny | time="2025-12-16T17:12:09Z" level=info msg="Successfully connected to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db\n" type=web
scrutiny | time="2025-12-16T17:12:09Z" level=info msg="InfluxDB certificate verification: true\n" type=web
scrutiny | time="2025-12-16T17:12:09Z" level=info msg="Database migration starting. Please wait, this process may take a long time...." type=web
scrutiny | time="2025-12-16T17:12:09Z" level=info msg="Database migration completed successfully" type=web
scrutiny | time="2025-12-16T17:12:09Z" level=info msg="SQLite global configuration migrations starting. Please wait...." type=web
scrutiny | time="2025-12-16T17:12:09Z" level=info msg="SQLite global configuration migrations completed successfully" type=web
scrutiny | time="2025-12-16T17:12:14Z" level=info msg="127.0.0.1 - ea2eafc1c19e [16/Dec/2025:17:12:14 +0000] \"HEAD /api/health\" 200 0 \"\" \"curl/7.88.1\" (1ms)" clientIP=127.0.0.1 hostname=ea2eafc1c19e latency=1 method=HEAD path=/api/health referer= respLength=0 statusCode=200 type=web userAgent=curl/7.88.1

scrutiny | starting scrutiny collector (run-once mode. subsequent calls will be triggered via cron service)
scrutiny | 2025/12/16 17:12:14 Loading configuration file: /opt/scrutiny/config/collector.yaml
 
  • J'aime
Réactions: reinett
Bonjour ;)

Jespere que tas pas abandonné?

Nous en sommes au TEST3... S'aventurer dans les entrailles de Scrutiny peut rendre 'dingo' 🤪je le confirme!!

Au printemps dernier, de mémoire j'ai du tester une douzaine de docker-compose.yaml et son collector.yml

Faut persévérer, savoir faire pause pour mettre 'le paquet' de coté puis revenir faire sa 'tambouille' dans la joie et la bonne humeur! 😁

Ta galère m'oblige à me replonger pour revoir les bases des commandes Docker… c'est ça le sport cérébral! 🧠Enfin je le définie comme ça… pour moi c'est pas grave de se tromper, déchouer et de recommencer! Je nai jamais abandonne aucun de mes projets!!!


Jai donc ce matin ouvert le bazar Hihihi pour décortiquer le dernier journal 🗞️

Ton last journal avec la numérotation que j’ai faite, et faisons le point par ligne :
-lignes1à13: initialisation du conteneur. Les services internes (cron, influxdb, scrutiny) sont copiés et démarrés. Scrutiny attend que l’API et InfluxDB soient prêts.
-lignes14à15: Scrutiny surveille l’état des deux services.
-lignes16à29: Welcome to InfluxDB, ouverture des fichiers internes influxd.bolt, influxd.sqlite et migrations KV/SQL, ouverture du store TSDB, services internes (retention, precreation, query controller), InfluxDB écoute sur le port 8086 cela signifie que la base opérationnelle.
-liigne 30: Scrutiny API toujours "not ready", il attend que son propre service web démarre.
-ligne 31à32: Scrutiny démarre mais signale : No configuration file found at /opt/scrutiny/config/scrutiny.yaml. Using Defaults.
!!!Ne trouve pas de fichier scrutiny.yaml, donc configuration par défaut! Faut absolument créer ce fichu fichier
-lignes33à36 : logo ASCII de Scrutiny
-ligne37: Version Scrutiny dev-0.8.1
ensuite
-ligne40à41 : connexion réussie à la base SQLite
-ligne42 : vérification du certificat InfluxDB.
-lignes43à46 : migrations SQLite globales !toutes réussies!!!
-ligne47: test de santé HEAD /api/health puis retour HTTP 200
cela veut dire que l’API Scrutiny est bien en ligne!!!
-ligne48: démarrage du collector (cest bon!)
-ligne49 : loading configuration file: /opt/scrutiny/config/collector.yaml (le collector a trouvé son fichier et l’a chargé) Cest tout bon a ce stade!

TOPO:
-InfluxDB/fonctionne, écoute sur 8086
-Scrutiny API/démarre, migrations OK, /api/healt répond 200
-Collector/fichier collector.yaml trouvé et chargé
-Problème persistant: absence de scrutiny.yaml (en ligne 32). Scrutiny tourne avec les valeurs par défaut donc risque d’erreur plus tard (bucket introuvable, API 500)

Tu dois rédiger un scrutiny.yaml minimal adapté au DXP2800 pour éviter ce problème de bucket et stabiliser ton installation

Mon fichier est par ici /volume1/docker/scrutiny/scrutiny.yaml (ce fichier était manquant depuis le debut, je lavais oublié!)

----- ----- ----- ----- -----
Version: 1

host:
id: "DXP2800"
name: "NAS DXP2800"
timezone: "Europe/Paris"

alerts:
temperature:
critical: 60 # alerte si un disque dépasse 60°C
warning: 50 # avertissement si un disque dépasse 50°C
reallocated_sectors:
critical: 10 # alerte si plus de 10 secteurs réalloués
warning: 1 # avertissement dès qu’il y en a 1
power_on_hours:
warning: 40000 # avertissement si disque a plus de 40 000 heures

----- ----- ----- ----- -----

Essaie encore cette config. avec le scrutiny.yaml

puis Tente à nouveau ceci :

docker-compose.yaml (/volume2/docker/scrutiny/docker-compose.yaml
----- ----- ----- ----- -----
version: '3.8'

services:
scrutiny:
container_name: scrutiny
image: ghcr.io/analogj/scrutiny:master-omnibus
privileged: true
cap_add:
- SYS_RAWIO
- SYS_ADMIN
ports:
- "6070:8080" # Interface Web Scrutiny
- "8086:8086" # InfluxDB Admin
volumes:
- /run/udev:/run/udev:ro
- /volume2/docker/scrutiny:/opt/scrutiny/config
- /volume2/docker/scrutiny/influxdb:/opt/scrutiny/influxdb
devices:
- /dev/sda:/dev/sda # HDD Basic (VOL1)
- /dev/nvme0n1:/dev/nvme0n1 # SSD Basic (VOL2)
environment:
- SCRUTINY_WEB_INFLUXDB_TOKEN=${SCRUTINY_WEB_INFLUXDB_TOKEN}
- SCRUTINY_WEB_INFLUXDB_INIT_USERNAME=${SCRUTINY_WEB_INFLUXDB_INIT_USERNAME}
- SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD=${SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD}
- TIMEZONE=Europe/Paris
restart: unless-stopped

----- ----- ----- ----- -----
collector.yml (/volume2/docker/scrutiny/influxdb/collector.yml)
----- ----- ----- ----- -----

version: 1
host:
id: "DXP2800"
devices:
- device: /dev/sda
type: sat
- device: /dev/nvme0n1
type: nvme

Autre point! Javais mis de coté hier les variables à la section environment:
- SCRUTINY_WEB_INFLUXDB_TOKEN=${SCRUTINY_WEB_INFLUXDB_TOKEN}
En clair, c’est le token d’authentification qu’utilise Scrutiny pour se connecter à InfluxDB

- SCRUTINY_WEB_INFLUXDB_INIT_USERNAME=${SCRUTINY_WEB_INFLUXDB_INIT_USERNAME}
C’est le nom d’utilisateur initial créé dans InfluxDB au moment du premier démarrage, il sert à configurer l’accès administrateur à la base

- SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD=${SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD}
En clair, c’est le mot de passe initial associé à l’utilisateur, il est utilisé uniquement lors de l’initialisation pour créer le compte et générer le token

- TIMEZONE=Europe/Paris
Fuseau horaire utilisé par Scrutiny pour son journal

Tu peux les replacer et laisser ces champs vides si ton usage est strictement local et que ton volume InfluxDB est déjà initialisé ce qui est le cas! Alors tu peux remettre les variables dans la CC

Voila continue de ton côté à peaufiner cette recette et au TEST12 peutetre que cela fonctionnera? :unsure:

IMPORTANT/
Vérifie bien la syntaxe yaml : les indentations (2 espaces), les tirets -, et les chemins /volumeX/.... Le fichier scrutiny.yaml était manquant, c’est lui qui stabilise l’installation et évite l’erreur de bucket. Place-le dans /volume2/docker/scrutiny/ et relance ton docker-compose.

Bon courage & ne te prend s pas le chou 😵‍💫avec lagent de police Scrutiny Hihihi😜

Bon :coffee::coffee:
 
Dernière édition:
Bonjour ;)

Jespere que tas pas abandonné?

Nous en sommes au TEST3... S'aventurer dans les entrailles de Scrutiny peut rendre 'dingo' 🤪je le confirme!!

Au printemps dernier, de mémoire j'ai du tester une douzaine de docker-compose.yaml et son collector.yml

Faut persévérer, savoir faire pause pour mettre 'le paquet' de coté puis revenir faire sa 'tambouille' dans la joie et la bonne humeur! 😁

Ta galère m'oblige à me replonger pour revoir les bases des commandes Docker… c'est ça le sport cérébral! 🧠Enfin je le définie comme ça… pour moi c'est pas grave de se tromper, déchouer et de recommencer! Je nai jamais abandonne aucun de mes projets!!!


Jai donc ce matin ouvert le bazar Hihihi pour décortiquer le dernier journal 🗞️

Ton last journal avec la numérotation que j’ai faite, et faisons le point par ligne :
-lignes1à13: initialisation du conteneur. Les services internes (cron, influxdb, scrutiny) sont copiés et démarrés. Scrutiny attend que l’API et InfluxDB soient prêts.
-lignes14à15: Scrutiny surveille l’état des deux services.
-lignes16à29: Welcome to InfluxDB, ouverture des fichiers internes influxd.bolt, influxd.sqlite et migrations KV/SQL, ouverture du store TSDB, services internes (retention, precreation, query controller), InfluxDB écoute sur le port 8086 cela signifie que la base opérationnelle.
-liigne 30: Scrutiny API toujours "not ready", il attend que son propre service web démarre.
-ligne 31à32: Scrutiny démarre mais signale : No configuration file found at /opt/scrutiny/config/scrutiny.yaml. Using Defaults.
!!!Ne trouve pas de fichier scrutiny.yaml, donc configuration par défaut! Faut absolument créer ce fichu fichier
-lignes33à36 : logo ASCII de Scrutiny
-ligne37: Version Scrutiny dev-0.8.1
ensuite
-ligne40à41 : connexion réussie à la base SQLite
-ligne42 : vérification du certificat InfluxDB.
-lignes43à46 : migrations SQLite globales !toutes réussies!!!
-ligne47: test de santé HEAD /api/health puis retour HTTP 200
cela veut dire que l’API Scrutiny est bien en ligne!!!
-ligne48: démarrage du collector (cest bon!)
-ligne49 : loading configuration file: /opt/scrutiny/config/collector.yaml (le collector a trouvé son fichier et l’a chargé) Cest tout bon a ce stade!

TOPO:
-InfluxDB/fonctionne, écoute sur 8086
-Scrutiny API/démarre, migrations OK, /api/healt répond 200
-Collector/fichier collector.yaml trouvé et chargé
-Problème persistant: absence de scrutiny.yaml (en ligne 32). Scrutiny tourne avec les valeurs par défaut donc risque d’erreur plus tard (bucket introuvable, API 500)

Tu dois rédiger un scrutiny.yaml minimal adapté au DXP2800 pour éviter ce problème de bucket et stabiliser ton installation

Mon fichier est par ici /volume1/docker/scrutiny/scrutiny.yaml (ce fichier était manquant depuis le debut, je lavais oublié!)

----- ----- ----- ----- -----
Version: 1

host:
id: "DXP2800"
name: "NAS DXP2800"
timezone: "Europe/Paris"

alerts:
temperature:
critical: 60 # alerte si un disque dépasse 60°C
warning: 50 # avertissement si un disque dépasse 50°C
reallocated_sectors:
critical: 10 # alerte si plus de 10 secteurs réalloués
warning: 1 # avertissement dès qu’il y en a 1
power_on_hours:
warning: 40000 # avertissement si disque a plus de 40 000 heures

----- ----- ----- ----- -----

Essaie encore cette config. avec le scrutiny.yaml

puis Tente à nouveau ceci :

docker-compose.yaml (/volume2/docker/scrutiny/docker-compose.yaml
----- ----- ----- ----- -----
version: '3.8'

services:
scrutiny:
container_name: scrutiny
image: ghcr.io/analogj/scrutiny:master-omnibus
privileged: true
cap_add:
- SYS_RAWIO
- SYS_ADMIN
ports:
- "6070:8080" # Interface Web Scrutiny
- "8086:8086" # InfluxDB Admin
volumes:
- /run/udev:/run/udev:ro
- /volume2/docker/scrutiny:/opt/scrutiny/config
- /volume2/docker/scrutiny/influxdb:/opt/scrutiny/influxdb
devices:
- /dev/sda:/dev/sda # HDD Basic (VOL1)
- /dev/nvme0n1:/dev/nvme0n1 # SSD Basic (VOL2)
environment:
- SCRUTINY_WEB_INFLUXDB_TOKEN=${SCRUTINY_WEB_INFLUXDB_TOKEN}
- SCRUTINY_WEB_INFLUXDB_INIT_USERNAME=${SCRUTINY_WEB_INFLUXDB_INIT_USERNAME}
- SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD=${SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD}
- TIMEZONE=Europe/Paris
restart: unless-stopped

----- ----- ----- ----- -----
collector.yml (/volume2/docker/scrutiny/influxdb/collector.yml)
----- ----- ----- ----- -----

version: 1
host:
id: "DXP2800"
devices:
- device: /dev/sda
type: sat
- device: /dev/nvme0n1
type: nvme

Autre point! Javais mis de coté hier les variables à la section environment:
- SCRUTINY_WEB_INFLUXDB_TOKEN=${SCRUTINY_WEB_INFLUXDB_TOKEN}
En clair, c’est le token d’authentification qu’utilise Scrutiny pour se connecter à InfluxDB

- SCRUTINY_WEB_INFLUXDB_INIT_USERNAME=${SCRUTINY_WEB_INFLUXDB_INIT_USERNAME}
C’est le nom d’utilisateur initial créé dans InfluxDB au moment du premier démarrage, il sert à configurer l’accès administrateur à la base

- SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD=${SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD}
En clair, c’est le mot de passe initial associé à l’utilisateur, il est utilisé uniquement lors de l’initialisation pour créer le compte et générer le token

- TIMEZONE=Europe/Paris
Fuseau horaire utilisé par Scrutiny pour son journal

Tu peux les replacer et laisser ces champs vides si ton usage est strictement local et que ton volume InfluxDB est déjà initialisé ce qui est le cas! Alors tu peux remettre les variables dans la CC

Voila continue de ton côté à peaufiner cette recette et au TEST12 peutetre que cela fonctionnera? :unsure:

IMPORTANT/
Vérifie bien la syntaxe yaml : les indentations (2 espaces), les tirets -, et les chemins /volumeX/.... Le fichier scrutiny.yaml était manquant, c’est lui qui stabilise l’installation et évite l’erreur de bucket. Place-le dans /volume2/docker/scrutiny/ et relance ton docker-compose.

Bon courage & ne te prend s pas le chou 😵‍💫avec lagent de police Scrutiny Hihihi😜

Bon :coffee::coffee:
Bonjour,
Non non je n'abandonne pas :p
Je viens d'essayer de créer le fichier scrutiny.yaml et il essaie bien de le charger mais le journal m'indique une erreur de caractère ligne 10. C'est bien par rapport à ce fichier ?
J'ai essayé différente syntaxe , enlevé le commentaire ect mais ça ne change rien.

scrutiny | starting scrutiny

scrutiny | 2025/12/17 06:43:08 Loading configuration file: /opt/scrutiny/config/scrutiny.yaml
scrutiny | 2025/12/17 06:43:08 CONFIG ERROR: While parsing config: yaml: line 10: found character that cannot start any token
scrutiny | waiting for influxdb

C'est bien scrutiny.yaml qui pose problème car j'ai laissé la ligne 10 vide et maintenant le problème de "caractère" est sur le ligne 11. Donc je n'ai surement pas écrit ça comme il faut :D
 
Hello
Si ça peut aider mon docker composé

Code:
services:
  scrutiny:
    container_name: scrutiny
    image: ghcr.io/analogj/scrutiny:master-omnibus
    cap_add:
      - SYS_RAWIO
      - SYS_ADMIN
    ports:
      - "6070:8080" # webapp
      - "8086:8086" # influxDB admin
    volumes:
      - /run/udev:/run/udev:ro
      - /volume2/docker/scrutiny:/opt/scrutiny/config
      - /volume2/docker/scrutiny/influxdb:/opt/scrutiny/influxdb
    devices:
      - /dev/nvme0n1:/dev/nvme0n1
      - /dev/nvme1n1:/dev/nvme1n1
      - /dev/sda:/dev/sda
      - /dev/sdb:/dev/sdb
   #  - /dev/sdc:/dev/sdc
   #  - /dev/sdd:/dev/sdd
    environment:
      - SCRUTINY_WEB_INFLUXDB_TOKEN=TOKENPOUR SECURISER
      - SCRUTINY_WEB_INFLUXDB_INIT_USERNAME=Ugreen
      - SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD=tonpassword
      - TIMEZONE=Europe/Paris
    restart: unless-stopped
 
  • J'aime
Réactions: yannouche4260
J'ai recommencé le fichier et j'vais probablement fait une erreur quelque part, maintenant tout se lance. Je ne vois pas d'erreur dans le journal mais toujours pas de remontée. Je vais regarder du côté du fichier docker compose (merci @lacouelle pour le partage)

journal :

scrutiny | s6-rc: info: service s6rc-oneshot-runner: starting
scrutiny | s6-rc: info: service s6rc-oneshot-runner successfully started
scrutiny | s6-rc: info: service fix-attrs: starting
scrutiny | s6-rc: info: service fix-attrs successfully started

scrutiny | s6-rc: info: service legacy-cont-init: starting
scrutiny | cont-init: info: running /etc/cont-init.d/01-timezone
scrutiny | cont-init: info: /etc/cont-init.d/01-timezone exited 0
scrutiny | cont-init: info: running /etc/cont-init.d/50-cron-config
scrutiny | cont-init: info: /etc/cont-init.d/50-cron-config exited 0
scrutiny | s6-rc: info: service legacy-cont-init successfully started
scrutiny | s6-rc: info: service legacy-services: starting
scrutiny | services-up: info: copying legacy longrun collector-once (no readiness notification)
scrutiny | services-up: info: copying legacy longrun cron (no readiness notification)
scrutiny | services-up: info: copying legacy longrun influxdb (no readiness notification)
scrutiny | services-up: info: copying legacy longrun scrutiny (no readiness notification)
scrutiny | s6-rc: info: service legacy-services successfully started
scrutiny | starting cron
scrutiny | waiting for influxdb
scrutiny | influxdb config file already exists. skipping.

scrutiny | starting influxdb
scrutiny | INFO: custom init already performed
scrutiny | influxdb not ready
scrutiny | ts=2025-12-17T08:46:27.822912Z lvl=info msg="Welcome to InfluxDB" log_id=0~rsfawW000 version=v2.2.0 commit=a2f8538837 build_date=2022-04-06T17:36:40Z
scrutiny | ts=2025-12-17T08:46:27.823524Z lvl=info msg="Resources opened" log_id=0~rsfawW000 service=bolt path=/opt/scrutiny/influxdb/influxd.bolt
scrutiny | ts=2025-12-17T08:46:27.823575Z lvl=info msg="Resources opened" log_id=0~rsfawW000 service=sqlite path=/opt/scrutiny/influxdb/influxd.sqlite
scrutiny | ts=2025-12-17T08:46:27.825515Z lvl=info msg="Checking InfluxDB metadata for prior version." log_id=0~rsfawW000 bolt_path=/opt/scrutiny/influxdb/influxd.bolt
scrutiny | ts=2025-12-17T08:46:27.825632Z lvl=info msg="Using data dir" log_id=0~rsfawW000 service=storage-engine service=store path=/opt/scrutiny/influxdb/engine/data
scrutiny | ts=2025-12-17T08:46:27.825654Z lvl=info msg="Compaction settings" log_id=0~rsfawW000 service=storage-engine service=store max_concurrent_compactions=2 throughput_bytes_per_second=50331648 throughput_bytes_per_second_burst=50331648
scrutiny | ts=2025-12-17T08:46:27.825670Z lvl=info msg="Open store (start)" log_id=0~rsfawW000 service=storage-engine service=store op_name=tsdb_open op_event=start
scrutiny | ts=2025-12-17T08:46:27.825724Z
lvl=info msg="Open store (end)" log_id=0~rsfawW000 service=storage-engine service=store op_name=tsdb_open op_event=end op_elapsed=0.056ms
scrutiny | ts=2025-12-17T08:46:27.825754Z lvl=info msg="Starting retention policy enforcement service" log_id=0~rsfawW000 service=retention check_interval=30m
scrutiny | ts=2025-12-17T08:46:27.825770Z lvl=info msg="Starting precreation service" log_id=0~rsfawW000 service=shard-precreation check_interval=10m advance_period=30m
scrutiny | ts=2025-12-17T08:46:27.826543Z lvl=info msg="Starting query controller" log_id=0~rsfawW000 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
scrutiny | ts=2025-12-17T08:46:27.829365Z lvl=info msg="Configuring InfluxQL statement executor (zeros indicate unlimited)." log_id=0~rsfawW000 max_select_point=0 max_select_series=0 max_select_buckets=0

scrutiny | ts=2025-12-17T08:46:27.833213Z lvl=info msg=Listening log_id=0~rsfawW000 service=tcp-listener transport=http addr=:8086 port=8086

scrutiny | starting scrutiny


scrutiny | 2025/12/17 08:46:32 Loading configuration file: /opt/scrutiny/config/scrutiny.yaml

scrutiny |


scrutiny | ___ ___ ____ __ __ ____ ____ _ _ _ _

scrutiny | / __) / __)( _ \( )( )(_ _)(_ _)( \( )( \/ )
scrutiny | \__ \( (__ ) / )(__)( )( _)(_ ) ( \ /
scrutiny | (___/ \___)(_)\_)(______) (__) (____)(_)\_) (__)
scrutiny | github.com/AnalogJ/scrutiny dev-0.8.1
scrutiny |
scrutiny | Start the scrutiny server
scrutiny | time="2025-12-17T08:46:32Z" level=info msg="Trying to connect to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db\n" type=web

scrutiny | time="2025-12-17T08:46:32Z" level=info msg="Successfully connected to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db\n" type=web
scrutiny | time="2025-12-17T08:46:32Z" level=info msg="InfluxDB certificate verification: true\n" type=web
scrutiny | time="2025-12-17T08:46:32Z" level=info msg="Database migration starting. Please wait, this process may take a long time...." type=web

scrutiny | time="2025-12-17T08:46:32Z" level=info msg="Database migration completed successfully" type=web
scrutiny | time="2025-12-17T08:46:32Z" level=info msg="SQLite global configuration migrations starting. Please wait...." type=web
scrutiny | time="2025-12-17T08:46:32Z" level=info msg="SQLite global configuration migrations completed successfully" type=web

scrutiny | time="2025-12-17T08:51:33Z" level=info msg="172.18.0.1 - 76834674fdfd [17/Dec/2025:08:51:33 +0000] \"GET /web/dashboard\" 304 0 \"\" \"Mozilla/5.0 (X11; Linux x86_64; rv:130.0) Gecko/20100101 Firefox/130.0\" (1ms)" clientIP=172.18.0.1 hostname=76834674fdfd latency=1 method=GET path=/web/dashboard referer= respLength=0 statusCode=304 type=web userAgent="Mozilla/5.0 (X11; Linux x86_64; rv:130.0) Gecko/20100101 Firefox/130.0"
scrutiny | time="2025-12-17T08:51:34Z" level=info msg="172.18.0.1 - 76834674fdfd [17/Dec/2025:08:51:34 +0000] \"GET /api/summary\" 200 38 \"http://192.168.0.253:6070/web/dashboard\" \"Mozilla/5.0 (X11; Linux x86_64; rv:130.0) Gecko/20100101 Firefox/130.0\" (51ms)" clientIP=172.18.0.1 hostname=76834674fdfd latency=51 method=GET path=/api/summary referer="http://192.168.0.253:6070/web/dashboard" respLength=38 statusCode=200 type=web userAgent="Mozilla/5.0 (X11; Linux x86_64; rv:130.0) Gecko/20100101 Firefox/130.0"
scrutiny | time="2025-12-17T08:51:34Z" level=info msg="172.18.0.1 - 76834674fdfd [17/Dec/2025:08:51:34 +0000] \"GET /api/settings\" 200 340 \"http://192.168.0.253:6070/web/dashboard\" \"Mozilla/5.0 (X11; Linux x86_64; rv:130.0) Gecko/20100101 Firefox/130.0\" (2ms)" clientIP=172.18.0.1 hostname=76834674fdfd latency=2 method=GET path=/api/settings referer="http://192.168.0.253:6070/web/dashboard" respLength=340 statusCode=200 type=web userAgent="Mozilla/5.0 (X11; Linux x86_64; rv:130.0) Gecko/20100101 Firefox/130.0"
 
@yannouche4260
Tes disques sont bien renommés ?
si tu connectes en ssh , tu peux peut etre voir le naming de tes disques via la commande lsblk et si ca correspond à ce que tu as mis dans ton compose pour les disques qui sont à checker.

Pour les volumes, chez moi c'est dans /volumes2/..;;mais chez toi t'es sur que c'est le meme ?
- /volume2/docker/scrutiny:/opt/scrutiny/config<br>
- /volume2/docker/scrutiny/influxdb:/opt/scrutiny/influxdb


en vérifiant mon compose, je me suis aperçu que j'avais oublié de décommenter sdc et sdd que j'ai ajoutés à posteriori
 
  • J'aime
Réactions: yannouche4260
@yannouche4260
Tes disques sont bien renommés ?
si tu connectes en ssh , tu peux peut etre voir le naming de tes disques via la commande lsblk et si ca correspond à ce que tu as mis dans ton compose pour les disques qui sont à checker.

Pour les volumes, chez moi c'est dans /volumes2/..;;mais chez toi t'es sur que c'est le meme ?
- /volume2/docker/scrutiny:/opt/scrutiny/config<br>
- /volume2/docker/scrutiny/influxdb:/opt/scrutiny/influxdb


en vérifiant mon compose, je me suis aperçu que j'avais oublié de décommenter sdc et sdd que j'ai ajoutés à posteriori

Bien vu, je me suis connecté et voilà ce que j'ai :

Capture d’écran 2025-12-17 à 16.38.56.png

Pour le volume 2, oui car Docker est sur mon SSD qui est le volume 2 et le chemin d'accès est bien celui-là quand je regarde dans les fichiers :)
 
Bonsoir

Jai analysé ton dernier journal Scrutiny : tout fonctionne sauf que :
-aucun log du collector SMART: on ne voit pas de messages indiquant que Scrutiny scanne les disques ou pousse des métriques vers InfluxDB?
Consequence : le dashboard est vide! Scrutiny tourne bien , mais n’affiche pas les disques :unsure:

:poop:Merdum cest en latin? Hihihi 🤬

Causes probables?
-collector.yml mal indenté : Scrutiny ne sait pas quels devices scanner?
-devices non exposés dans Docker, le conteneur ne les voit pas?
-permissions manquantes : verifie encore il faut tout coché lecture/écriture

TEST4 du 17/12/25

Adapté à ton montage (1HDD/Basic + 1SSD/Basic)

fichier 1/ scrutiny.yaml
chemin ou doit se trouver le fichier : /VOL2/docker/scrutiny/scrutiny.yaml
----- ----- ----- ----- -----
version: 1

host:
id: "DXP2800"
name: "NAS DXP2800"
timezone: "Europe/Paris"

alerts:
temperature:
critical: 60 # alerte si un disque dépasse 60°C
warning: 50 # avertissement si un disque dépasse 50°C
reallocated_sectors:
critical: 10 # alerte si plus de 10 secteurs réalloués
warning: 1 # avertissement dès qu’il y en a 1
power_on_hours:
warning: 40000 # avertissement si disque a plus de 40 000 heures
----- ----- ----- ----- -----
fichier 2/ docker-compose.yaml
chemin ou doit se trouver le fichier :/VOL2/docker/scrutiny/docker-compose.yaml

version: '3.8'

services:
scrutiny:
container_name: scrutiny
image: ghcr.io/analogj/scrutiny:master-omnibus
privileged: true
cap_add:
- SYS_RAWIO
- SYS_ADMIN
ports:
- "6070:8080" # Interface Web Scrutiny
- "8086:8086" # InfluxDB Admin
volumes:
- /run/udev:/run/udev:ro
- /volume2/docker/scrutiny:/opt/scrutiny/config
- /volume2/docker/scrutiny/influxdb:/opt/scrutiny/influxdb
devices:
- /dev/sda:/dev/sda # HDD Basic (VOL1)
- /dev/nvme0n1:/dev/nvme0n1 # SSD Basic (VOL2)
environment:
- SCRUTINY_WEB_INFLUXDB_TOKEN=${SCRUTINY_WEB_INFLUXDB_TOKEN}
- SCRUTINY_WEB_INFLUXDB_INIT_USERNAME=${SCRUTINY_WEB_INFLUXDB_INIT_USERNAME}
- SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD=${SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD}
- TIMEZONE=Europe/Paris
restart: unless-stopped

----- ----- ----- ----- -----
fichier 3/ collector.yml
chemin ou doit se trouver le fichier : /VOL2/docker/scrutiny/influxdb/collector.yml

version: 1

host:
id: "DXP2800"

devices:
- device: /dev/sda
type: sat
- device: /dev/nvme0n1
type: nvme


----- ----- ----- ----- -----

Croizons les doigts? les 2 disques devraient apparaître avec leurs attributs SMART 🙈🙉🙊
 
@reinett
Je viens d'essayer, comme à chaque fois, je supprime et repart de 0. Mais toujours le même résultat.
Est-ce que ce le chemin ne devrait pas être différent suite à ce que montre la connexion ssh?

scrutiny | cont-init: info: running /etc/cont-init.d/50-cron-config
scrutiny | cont-init: info: /etc/cont-init.d/50-cron-config exited 0
scrutiny | s6-rc: info: service legacy-cont-init successfully started
scrutiny | s6-rc: info: service legacy-services: starting
scrutiny | services-up: info: copying legacy longrun collector-once (no readiness notification)
scrutiny | services-up: info: copying legacy longrun cron (no readiness notification)
scrutiny | services-up: info: copying legacy longrun influxdb (no readiness notification)
scrutiny | services-up: info: copying legacy longrun scrutiny (no readiness notification)
scrutiny | s6-rc: info: service legacy-services successfully started
scrutiny | waiting for influxdb
scrutiny | waiting for scrutiny service to start
scrutiny | starting cron
scrutiny | starting influxdb
scrutiny | influxdb not ready
scrutiny | scrutiny api not ready
scrutiny | ts=2025-12-17T16:38:29.959563Z lvl=info msg="Welcome to InfluxDB" log_id=0~sIgFHl000 version=v2.2.0 commit=a2f8538837 build_date=2022-04-06T17:36:40Z
scrutiny | ts=2025-12-17T16:38:29.961187Z lvl=info msg="Resources opened" log_id=0~sIgFHl000 service=bolt path=/opt/scrutiny/influxdb/influxd.bolt
scrutiny | ts=2025-12-17T16:38:29.961271Z lvl=info msg="Resources opened" log_id=0~sIgFHl000 service=sqlite path=/opt/scrutiny/influxdb/influxd.sqlite
scrutiny | ts=2025-12-17T16:38:29.961425Z lvl=info msg="Bringing up metadata migrations" log_id=0~sIgFHl000 service="KV migrations" m
igration_count=19
scrutiny | ts=2025-12-17T16:38:29.971775Z lvl=info msg="Bringing up metadata migrations" log_id=0~sIgFHl000 service="SQL migrations" migration_count=5
scrutiny | ts=2025-12-17T16:38:29.981412Z lvl=info msg="Using data dir" log_id=0~sIgFHl000 service=storage-engine service=store path=/opt/scrutiny/influxdb/engine/data
scrutiny | ts=2025-12-17T16:38:29.981611Z lvl=info msg="Compaction settings" log_id=0~sIgFHl000 service=storage-engine service=store max_concurrent_compactions=2 throughput_bytes_per_second=50331648 throughput_bytes_per_second_burst=50331648
scrutiny | ts=2025-12-17T16:38:29.981631Z lvl=info msg="Open store (start)" log_id=0~sIgFHl000 service=storage-engine service=store op_name=tsdb_open op_event=start
scrutiny | ts=2025-12-17T16:38:29.981688Z lvl=info msg="Open store (end)" log_id=0~sIgFHl000 service=storage-engine service=store op_name=tsdb_open op_event=end op_elapsed=0.059ms
scrutiny | ts=2025-12-17T16:38:29.981733Z lvl=info msg="Starting retention policy enforcement service" log_id=0~sIgFHl000 service=retention check_interval=30m
scrutiny | ts=2025-12-17T16:38:29.981755Z lvl=info msg="Starting precreation service" log_id=0~sIgFHl000 service=shard-precreation check_interval=10m advance_period=30m
scrutiny | ts=2025-1
2-17T16:38:29.982981Z lvl=info msg="Starting query controller" log_id=0~sIgFHl000 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
scrutiny | ts=2025-12-17T16:38:29.985073Z lvl=info msg="Configuring InfluxQL statement executor (zeros indicate unlimited)." log_id=0~sIgFHl000 max_select_point=0 max_select_series=0 max_select_buckets=0
scrutiny | ts=2025-12-17T16:38:29.989770Z lvl=info msg=Listening log_id=0~sIgFHl000 service=tcp-listener transport=http addr=:8086 port=8086
scrutiny | starting scrutiny
scrutiny | scrutiny api not ready
scrutiny | 2025/12/17 16:38:34 Loading configuration file: /opt/scrutiny/config/scrutiny.yaml
scrutiny |
scrutiny | ___ ___ ____ __ __ ____ ____ _ _ _ _
scrutiny | / __) / __)( _ \( )( )(_ _)(_ _)( \( )( \/ )
scrutiny | \__ \( (__ ) / )(__)( )( _)(_ ) ( \ /
scrutiny | (___/ \___)(_)\_)(______) (__) (____)(_)\_) (__)
scrutiny | github.com/AnalogJ/scrutiny dev-0.8.1
scrutiny |
scrutiny | Start the scrutiny server
scrutiny | time="2025-12-17T16:38:34Z" level=info msg="Trying to connect to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db\n" type=web
scrutiny | time="2025-12-17T16:38:34Z" level=info msg="Successfully connected to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db\n" type=web
scrutiny | time="2025-12-17T16:38:34Z" level=info msg="InfluxDB certificate verification: true\n" type=web
scrutiny | time="2025-12-17T16:38:34Z" level=info msg="Database migration starting. Please wait, this process may take a long time...." type=web
scrutiny | time="2025-12-17T16:38:34Z" level=info msg="Database migration completed succes
sfully" type=web
scrutiny | time="2025-12-17T16:38:34Z" level=info msg="SQLite global configuration migrations starting. Please wait...." type=web
scrutiny | time="2025-12-17T16:38:34Z" level=info msg="SQLite global configuration migrations completed successfully" type=web
scrutiny | time="2025-12-17T16:38:39Z" level=info msg="127.0.0.1 - bb23015b39c1 [17/Dec/2025:16:38:39 +0000] \"HEAD /api/health\" 200 0 \"\" \"curl/7.88.1\" (1ms)" clientIP=127.0.0.1 hostname=bb23015b39c1 latency=1 method=HEAD path=/api/health referer= respLength=0 statusCode=200 type=web userAgent=curl/7.88.1
scrutiny | starting scrutiny collector (run-once mode. subsequent calls will be triggered via cron service)
scrutiny | 2025/12/17 16:38:39 Loading configuration file: /opt/scrutiny/config/collector.yaml
 
Ok reçu (y)

Scrutiny fonctionne comme une horloge sous mes 2 NAS : DXP2800 et DH2300
Te fais un copier/coller de ma config. ensuite tu tentes de reproduire la même chose?
 
fichier 1/docker-compose.yaml

version: '3.8'
services:
scrutiny:
container_name: scrutiny
image: ghcr.io/analogj/scrutiny:master-omnibus
privileged: true
cap_add:
- SYS_RAWIO
- SYS_ADMIN
ports:
- "6070:8080" # Interface Web Scrutiny
- "8086:8086" # InfluxDB Admin
volumes:
- /run/udev:/run/udev:ro
- /volume1/docker/scrutiny:/opt/scrutiny/config
- /volume1/docker/scrutiny/influxdb:/opt/scrutiny/influxdb
devices:
- /dev/nvme0:/dev/nvme0
- /dev/nvme0n1:/dev/nvme0n1
- /dev/nvme1:/dev/nvme1
- /dev/nvme1n1:/dev/nvme1n1
- /dev/sda:/dev/sda
- /dev/sdb:/dev/sdb
environment:
- SCRUTINY_WEB_INFLUXDB_TOKEN=${SCRUTINY_WEB_INFLUXDB_TOKEN}
- SCRUTINY_WEB_INFLUXDB_INIT_USERNAME=${SCRUTINY_WEB_INFLUXDB_INIT_USERNAME}
- SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD=${SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD}
- TIMEZONE=Europe/Paris
restart: unless-stopped


fichier 2/scrutiny.yaml

version: 1
host:
id: "DXP2800"
name: "NAS DXP2800"
timezone: "Europe/Paris"
alerts:
temperature:
critical: 60 # alerte si un disque dépasse 60°C
warning: 50 # avertissement si un disque dépasse 50°C
reallocated_sectors:
critical: 10 # alerte si plus de 10 secteurs réalloués
warning: 1 # avertissement dès qu’il y en a 1
power_on_hours:
warning: 40000 # avertissement si disque a plus de 40 000 heures

fichier 3/collector.yml

version: 1
host:
id: "Ugreen"
devices:
- device: /dev/nvme0n1
type: nvme
- device: /dev/nvme1n1
type: nvme
- device: /dev/sda
type: sat
- device: /dev/sdb
type: sat
 
  • J'aime
Réactions: yannouche4260
Hello,

Mes conseils :

- Arrêter le projet, le supprimer.
- Supprimer le dossier : /docker/scrutiny
- Récréer les dossiers ==> scrutiny, scrutiny/influxdb.

Comme cela, on part sur une base propre.

Coller le yaml suivant :

YAML:
services:
  scrutiny:
    container_name: scrutiny
    image: ghcr.io/analogj/scrutiny:master-omnibus
    cap_add:
      - SYS_RAWIO
      - SYS_ADMIN
    ports:
      - 6070:8080 # webapp
      - 8086:8086 # influxDB admin
    volumes:
      - /run/udev:/run/udev:ro
      - /volume2/docker/scrutiny:/opt/scrutiny/config
      - /volume2/docker/scrutiny/influxdb:/opt/scrutiny/influxdb
    devices:
      - /dev/sda:/dev/sda
      #- /dev/sdb:/dev/sdb
      #- /dev/sdc:/dev/sdc
      #- /dev/sdd:/dev/sdd
      - /dev/nvme0n1:/dev/nvme0n1
      #- /dev/nvme1n1:/dev/nvme1n1
      #- /dev/nvme2n1:/dev/nvme2n1
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"]
      interval: 5s
      timeout: 10s
      retries: 20
      start_period: 10s    
    environment:
      - TZ=Europe/Paris
      - COLLECTOR_CRON_SCHEDULE=0 18 45 * *
      - SCRUTINY_WEB_INFLUXDB_TOKEN=ANYLONGSTRING9876543210
      - SCRUTINY_WEB_INFLUXDB_INIT_USERNAME=USERNAME
      - SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD=PASSWORD
    security_opt:
      - no-new-privileges:true
    restart: unless-stopped


Dans le dossier scrutiny, crée un fichier yaml et coller ceci :

YAML:
version: 1
host:
  id: "DXP2800"
devices:
  - device: /dev/sda
    type: 'sat'
  - device: /dev/nvme0n1
    type: 'nvme'

sauvegardez-le avec le nom : collector.yaml

Rien d'autre n'est nécessaire pour que cela fonctionne.
@reinett les droits et le fichier scrutiny.yaml ne sont pas nécessaire pour le bon fonctionnement du conteneur, je l'utilise depuis des années comme cela. :)

Voilà, normalement, tout devrait fonctionner.

;)