While the easiest way to get started with Scrutiny is using Docker, it is possible to run it manually without much work. You can even mix and match, using Docker for one component and a manual installation for the other.
Scrutiny is made up of two components: a collector and a webapp/api. Here's how each component can be deployed manually.
Note: the
/opt/scrutiny
directory is not hardcoded, you can use any directory name/path.
Since the webapp is packaged as a stand alone binary, there isn't really any software you need to install other than glibc
which is included by most linux OS's already.
Now let's create a directory structure to contain the Scrutiny files & binary.
mkdir -p /opt/scrutiny/config
mkdir -p /opt/scrutiny/web
mkdir -p /opt/scrutiny/bin
While it is possible to run the webapp/api without a config file, the defaults are designed for use in a container environment, and so will need to be overridden. So the first thing you'll need to do is create a config file that looks like the following:
# stored in /opt/scrutiny/config/scrutiny.yaml
version: 1
web:
database:
# The Scrutiny webapp will create a database for you, however the parent directory must exist.
location: /opt/scrutiny/config/scrutiny.db
src:
frontend:
# The path to the Scrutiny frontend files (js, css, images) must be specified.
# We'll populate it with files in the next section
path: /opt/scrutiny/web
Note: for a full list of available configuration options, please check the example.scrutiny.yaml file.
Next, we'll download the Scrutiny API binary and frontend files from the latest Github release. The files you need to download are named:
- scrutiny-web-linux-amd64 - save this file to
/opt/scrutiny/bin
- scrutiny-web-frontend.tar.gz - save this file to
/opt/scrutiny/web
Now that we have downloaded the required files, let's prepare the filesystem.
# Let's make sure the Scrutiny webapp is executable.
chmod +x /opt/scrutiny/bin/scrutiny-web-linux-amd64
# Next, lets extract the frontend files.
cd /opt/scrutiny/web
tar xvzf scrutiny-web-frontend.tar.gz --strip-components 1 -C .
# Cleanup
rm -rf scrutiny-web-frontend.tar.gz
Finally, we start the Scrutiny webapp:
/opt/scrutiny/bin/scrutiny-web-linux-amd64 start --config /opt/scrutiny/config/scrutiny.yaml
The webapp listens for traffic on http://0.0.0.0:8080
by default.
Unlike the webapp, the collector does have some dependencies:
smartctl
, v7+cron
(or an alternative process scheduler)
Unfortunately the version of smartmontools
(which contains smartctl
) available in some of the base OS repositories is ancient.
So you'll need to install the v7+ version using one of the following commands:
- Ubuntu:
apt-get install -y smartmontools=7.0-0ubuntu1~ubuntu18.04.1
- Centos8:
dnf install https://extras.getpagespeed.com/release-el8-latest.rpm
dnf install smartmontools
- FreeBSD:
pkg install smartmontools
Now let's create a directory structure to contain the Scrutiny collector binary.
mkdir -p /opt/scrutiny/bin
Next, we'll download the Scrutiny collector binary from the latest Github release. The file you need to download is named:
- scrutiny-collector-metrics-linux-amd64 - save this file to
/opt/scrutiny/bin
Now that we have downloaded the required files, let's prepare the filesystem.
# Let's make sure the Scrutiny collector is executable.
chmod +x /opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64
Next, we will manually trigger the collector, to populate the Scrutiny dashboard:
/opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run --api-endpoint "http://localhost:8080"
Finally you need to schedule the collector to run periodically. This may be different depending on your OS/environment, but it may look something like this:
# open crontab
crontab -e
# add a line for Scrutiny
*/15 * * * * . /etc/profile; /opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run --api-endpoint "http://localhost:8080"