Scrutiny SMART Monitoring

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.152
Punkte für Reaktionen
740
Punkte
154
Da ja in der DSM 7.2.1 die SMART-Werte nicht mehr direkt zu erreichen sind, hier ein Ansatz über einen Docker-Container mit scrutiny
https://github.com/AnalogJ/scrutiny

Mein Dank geht an @plang.pl der mit seinem Post meinen Spieltrieb geweckt hat. :)

Hier in aller Kürze meine docker-compose.yml:
Code:
version: '3.5'

services:
  scrutiny:
    container_name: scrutiny
    image: ghcr.io/analogj/scrutiny:master-omnibus
    cap_add:
      - SYS_RAWIO
      - SYS_ADMIN
    ports:
      - "8080:8080"
      - "8086:8086"
    volumes:
      - /run/udev:/run/udev:ro
      - /volume1/docker/scrutiny/config:/opt/scrutiny/config
      - /volume1/docker/scrutiny/influxdb:/opt/scrutiny/influxdb

Da das - natürlich - auf der Syno nicht so einfach mit den Devices in der docker-compose läuft, wie man sich wünscht, hab ich eine collector.yaml erstellen müssen. Diese muss im config-Ordner abgelegt werden:
Code:
devices:
  - device: /dev/sda
    type: 'sat'
  - device: /dev/sdb
    type: 'sat'
  - device: /dev/sdc
    type: 'sat'
  - device: /dev/sdd
    type: 'sat'
  - device: /dev/nvme0
    type: 'nvme'
  - device: /dev/nvme1
    type: 'nvme'

Diese ist für eine DS918+, bei anderen Modellen müsst ihr die Typen eventuell anpassen.

Das Ganze sieht dann so aus:
scrutiny1.png

scrutiny2.png
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Danke für deine Anleitung! Dann muss ich schon nicht rumtesten.
Werde ich mal so auf der DS umsetzen und berichten!
 
  • Like
Reaktionen: Adama

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.152
Punkte für Reaktionen
740
Punkte
154
Deine 720+ müsste ja die selbe Basis wie meine 420+ haben. Da tauchen ja die Laufwerke als /dev/sata1 etc. auf.

Ich vermute mal, dass das auf der 720+ genauso sein wird.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Ja, wird vermutlich ähnlich sein. Der Tag "latest" sollte ja laut Doku auch auf "master-omnibus" zeigen.
Ich werde das aber vermutlich anders umsetzen. Das hier ist ja sozusagen ein "All-In-One" Container. Man kann aber auch die Container einzeln installieren. Das sind dann 3 Stück. Die 3 (oder die AIO) muss auf einen Server und auf die anderen muss nur der Collector. So ist dann ein Server quasi die Zentrale mit Datenbank und Web UI und die sammelt vom eigenen System und von den anderen Systemen, wo nur der Collector drauf ist, die Daten.
Darauf bin ich gekommen, weil der Container für mich ja erstmal unsinnigerweise auf 8086 lauscht. Mit dem Wissen gibt das aber Sinn.
 

Toby-ch

Benutzer
Mitglied seit
02. Okt 2013
Beiträge
453
Punkte für Reaktionen
18
Punkte
18
Ich steh gerade vor diesem Problem:
1697312750223.png

In linie 16 gibt es aber keinen Fehler:
1697312777620.png
Hat dazu jemand eine Idee ?
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.152
Punkte für Reaktionen
740
Punkte
154
Laut dem compose-Beispiel sollte der Devices-Bereich ja so aussehen:
Code:
    devices:
      - "/dev/sda"
      - "/dev/sdb"

Aber selbst das hatte bei mir nicht funktioniert. Deswegen hatte ich ja die Variante mit der collector.yaml probiert. Synology scheint ja die Anschlussart nicht sauber umzusetzen.

Was gibt denn "smartctl --scan" auf der Rackstation aus?

Edit: Ist "Devices" nicht zu weit eingerückt?
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Ja ist es. Muss einmal rausgerückt werden
 

Toby-ch

Benutzer
Mitglied seit
02. Okt 2013
Beiträge
453
Punkte für Reaktionen
18
Punkte
18
  • Like
Reaktionen: Andai

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.152
Punkte für Reaktionen
740
Punkte
154
Das hier ist ja sozusagen ein "All-In-One" Container. Man kann aber auch die Container einzeln installieren.
Ja, klar, wenn man mehrere Maschine überwachen will, macht das natürlich Sinn. Ich hab ja nur die eine ständig aktive Maschine.
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.152
Punkte für Reaktionen
740
Punkte
154

Toby-ch

Benutzer
Mitglied seit
02. Okt 2013
Beiträge
453
Punkte für Reaktionen
18
Punkte
18
Auszug aus dem Log:
Code:
___   ___  ____  __  __  ____  ____  _  _  _  _
/ __) / __)(  _ \(  )(  )(_  _)(_  _)( \( )( \/ )
\__ \( (__  )   / )(__)(   )(   _)(_  )  (  \  /
(___/ \___)(_)\_)(______) (__) (____)(_)\_) (__)
AnalogJ/scrutiny/metrics                                dev-0.7.1

time="2023-10-14T20:03:25Z" level=info msg="Verifying required tools" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="Executing command: smartctl --scan --json" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="Executing command: smartctl --info --json --device sat /dev/sata6" type=metrics
time="2023-10-14T20:03:25Z" level=error msg="Could not retrieve device information for sata6: exit status 2" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="Executing command: smartctl --info --json --device sat /dev/sata8" type=metrics
time="2023-10-14T20:03:25Z" level=error msg="Could not retrieve device information for sata8: exit status 2" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="Executing command: smartctl --info --json --device nvme /dev/nvme1n1" type=metrics
time="2023-10-14T20:03:25Z" level=error msg="Could not retrieve device information for nvme1n1: exit status 2" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="Executing command: smartctl --info --json --device sat /dev/sata4" type=metrics
time="2023-10-14T20:03:25Z" level=error msg="Could not retrieve device information for sata4: exit status 2" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="Executing command: smartctl --info --json --device sat /dev/sata5" type=metrics
time="2023-10-14T20:03:25Z" level=error msg="Could not retrieve device information for sata5: exit status 2" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="Executing command: smartctl --info --json --device sat /dev/sata7" type=metrics
time="2023-10-14T20:03:25Z" level=error msg="Could not retrieve device information for sata7: exit status 2" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="Executing command: smartctl --info --json --device nvme /dev/nvme0n1" type=metrics
time="2023-10-14T20:03:25Z" level=error msg="Could not retrieve device information for nvme0n1: exit status 2" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="Executing command: smartctl --info --json --device sat /dev/sata1" type=metrics
time="2023-10-14T20:03:25Z" level=error msg="Could not retrieve device information for sata1: exit status 2" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="Executing command: smartctl --info --json --device sat /dev/sata2" type=metrics
time="2023-10-14T20:03:25Z" level=error msg="Could not retrieve device information for sata2: exit status 2" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="Executing command: smartctl --info --json --device sat /dev/sata3" type=metrics
time="2023-10-14T20:03:25Z" level=error msg="Could not retrieve device information for sata3: exit status 2" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="Sending detected devices to API, for filtering & validation" type=metrics
time="2023-10-14T20:03:25Z" level=info msg="127.0.0.1 - b1630ee3eb82 [14/Oct/2023:20:03:25 +0000] \"POST /api/devices/register\" 200 40 \"\" \"Go-http-client/1.1\" (1ms)" clientIP=127.0.0.1 hostname=b1630ee3eb82 latency=1 method=POST path=/api/devices/register referer= respLength=40 statusCode=200 type=web userAgent=Go-http-client/1.1
time="2023-10-14T20:03:25Z" level=info msg="Main: Completed" type=metrics

fdisk -l
1697314114156.png

Docker/scrutiny/config/collector.yaml

YAML:
devices:
  - device: /dev/sata1
    type: 'sat'
  - device: /dev/sata2
    type: 'sat'
  - device: /dev/sata3
    type: 'sat'
  - device: /dev/sata4
    type: 'sat'
  - device: /dev/sata5
    type: 'sat'
  - device: /dev/sata6
    type: 'sat'
  - device: /dev/sata7
    type: 'sat'
  - device: /dev/sata8
    type: 'sat'
  - device: /dev/nvme0n1
    type: 'nvme'
  - device: /dev/nvme1n1
    type: 'nvme'

Sollte eigentlich klappen
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.152
Punkte für Reaktionen
740
Punkte
154
Soweit hatte ich gar nicht gelesen. ;)

Ich hab jetzt noch mal den Healtcheck aus der hubspoke-Config ergänzt und spiele grade mit der cron-Variable...

@Toby-ch Ja, sieht eigentlich gut aus.
 

Toby-ch

Benutzer
Mitglied seit
02. Okt 2013
Beiträge
453
Punkte für Reaktionen
18
Punkte
18
Ich weiss nicht evtl sat gegen Ata ersetzten, weil mein Skript sieht so aus:
Code:
smartctl -a -d ata /dev/sata1
smartctl -a -d ata /dev/sata2
smartctl -a -d ata /dev/sata3
smartctl -a -d ata /dev/sata4
smartctl -a -d ata /dev/sata5
smartctl -a -d ata /dev/sata6
smartctl -a -d ata /dev/sata7
smartctl -a -d ata /dev/sata8

Brachte nichts... :(
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.152
Punkte für Reaktionen
740
Punkte
154
Ich hab grad durch die Spielerei mit cron festgestellt, dass die Daten nicht aktualisieren.

@Toby-ch Ersetz mal im docker-compose den Bereich
Code:
    cap_add:
      - SYS_RAWIO
      - SYS_ADMIN

mit

Code:
privileged: true

Dann die Datenbank-Dateien in config und influxdb löschen und den Container wieder starten.

Erst dadurch haben sich bei mir die Daten wieder erneuert. Ich hatte eben die selben Fehlermeldungen wie du.
 
Zuletzt bearbeitet:

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.152
Punkte für Reaktionen
740
Punkte
154
Und es geht mit den "cap_add"-Einträgen?

Bei mir klappt es nur, wenn ich den Container "privileged" laufen lasse...
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Ich hab da jetz schon mal ewig rum, bis der Webserver lief...
Der sucht immer nach der InfluxDB unter localhost:8086, was in den Docker Bridged Networks nicht zu klappen scheint, auch nicht in einem selbst angelegten. Dort erwartet er eine frische InfluxDB Installation, um die über die API konfigurieren zu können. Diverse Versuche von mir, dieses Verhalten irgendwie zu verändern (selbst mit der in der Doku angepriesenen YML Config File), scheiterten. Jetzt läuft der Webserver halt gemeinsam mit einer jungfräulichen InfluxDB im Host-Network. Anders habe ich es nicht geschafft.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat