It has been a while since I wrote anything up as I have been busy with other things, but I felt the need to write this one up because I was not able to find anything even close to helpful when I was setting it up.
Scrutiny is a Web UI that uses smartd to show you the state of your hard drives. Now I will not re-invent the wheel with getting it all set up as the creators docs on the GitHub repo are already very good, but Synology is not listed as supported.
In a nutshell, the issue with trying to run the collector on a Synology NAS is the version of smartd that Synology provides is v6.5, Scrutiny requires v7.x to work.
Add to that, there is no out of the box way to get it updated to the latest version. So here ill go through how to deploy the collector part of Scrutiny to a Synology NAS.
Firstly we need to create a way to be able to install packages on DSM 7 (I have only tested this on DSM 7), The easiest way is Entware.
SSH into your Synology NAS and switch into root. I will list the commands here, but they can be found here on the Entware GitHub repo. (I was switched into the root user for the below, but if you are not then use sudo where required)
# 1. Create a folder on your hdd (outside rootfs) mkdir -p /volume1/@Entware/opt # 2. In my case i already had /opt and instead of using mount i just used a symlink ln -s /volume1/@Entware/opt/ /opt 3. Run install script depending on the processor (I have a DS420J, other scripts can be found in the above link for Entware) wget -O - https://bin.entware.net/aarch64-k3.10/installer/generic.sh | /bin/sh
Now reboot your NAS, when it comes back SSH back in.
# Run an update opkg update # Run an upgrade opkg upgrade # Install smartmontools opkg install smartmontools It should install v7.2-2 `Installing smartmontools (7.2-2) to root...`
That really is the trickiest part, Now let's get the collector set up
# 1. We will now create the directories. mkdir -p /volume1/\@Entware/scrutiny/bin mkdir -p /volume1/\@Entware/scrutiny/conf # 2. change into the bin directory cd /volume1/\@Entware/scrutiny/bin # 3. Download the collector binary for your architecture and make it executable wget https://github.com/AnalogJ/scrutiny/releases/download/v0.4.12/scrutiny-collector-metrics-linux-arm64 chmod +x /volume1/\@Entware/scrutiny/bin/scrutiny-collector-metrics-linux-arm64 # 4. Create a config file for the collector cd /volume1/\@Entware/scrutiny/conf wget https://raw.githubusercontent.com/AnalogJ/scrutiny/master/example.collector.yaml mv example.collector.yaml collector.yaml # 5. Lets make some changes in the config file, these ae what i uncommented/added host: id: 'Server_Name' devices: # # example for forcing device type detection for a single disk - device: /dev/sda type: 'sat' - device: /dev/sdb type: 'sat' - device: /dev/sdc type: 'sat' - device: /dev/sdd type: 'sat' api: endpoint: 'http://<url>:8080'
(Please note that you may need to tweak the device type depending on what your HDD brand/model is. My WD Red Pro seem to only return valid data with sat)
So we have done all the prep, well ... some of it. That's the bulk of it. The next bits are updating the smartd DB and also setting up a scheduled task to run (every 6 hours)
So let's get this all wrapped up
# 1. Let's update the smartd db. cd /volume1/\@Entware/scrutiny/bin/ wget https://raw.githubusercontent.com/smartmontools/smartmontools/master/smartmontools/drivedb.h # 2. I ran it like this but you can tweak to your liking, the most important part is the --drivedb, as this loads it into the aplication for future use smartctl -d sat --all /dev/sda --drivedb=/volume1/\@Entware/scrutiny/bin/drivedb.h # 3. Now lets create a small bash script, this will be used for the scheduled task inside Synology vim /volume1/\@Entware/scrutiny/bin/run_collect.sh # The contents are below, copy and paste them in #!/bin/bash /volume1/\@Entware/scrutiny/bin/scrutiny-collector-metrics-linux-arm64 run --config /volume1/\@Entware/scrutiny/config/collector.yaml
This is all set up from a backend point of view, now let's get Synology to run a scheduled task. Log in to DSM and do the following:
Goto: DSM > Control Panel > Task Scheduler
Create > Scheduled Task > User Defined Script
Task: Scrutiny_Collector User: root Enabled: yes
Run on the following days: Daily
. /opt/etc/profile; /volume1/\@Entware/scrutiny/bin/run_collect.sh
If all has gone well, you can click OK and run the task to check the output.
Now every 6 hours the following will happen:
- Scheduled task runs as the given user calling the simple bash script we added earlier
- This bash script runs the collector with the tweaking config file
- The collector will use smartd installed via opkg which is version 7.x and has an updated smartd DB.
- The results will be pushed to the scrutiny API end point.
I hope this helps any Synology users wanting to deploy this.