Scrutiny is under active development again

For all who missed the memo in that longer thread - Scrutiny has been forked and this time this particular fork seems to have become the new “official” version. Features are added at a nice pace including (not exhaustive):

  • ZFS Pool Monitoring
  • Prometheus Metrics
  • S.M.A.R.T Attribute Overrides
  • Scheduled Reports (yay!)
  • …

The repo is here.

And this is my custom app YAML as I run it on my TrueNAS. I have switched from Dockge to Dockhand for custom apps, which seems to be the best of Dockge and Portainer combined and then some.

services:
  scrutiny:
    cap_add:
      - AUDIT_WRITE
      - CHOWN
      - DAC_OVERRIDE
      - FOWNER
      - FSETID
      - KILL
      - MKNOD
      - NET_BIND_SERVICE
      - NET_RAW
      - SETFCAP
      - SETGID
      - SETPCAP
      - SETUID
      - SYS_CHROOT
    cap_drop:
      - ALL
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: 4096M
    environment:
      COLLECTOR_API_ENDPOINT: http://127.0.0.1:8080
      NVIDIA_VISIBLE_DEVICES: void
      SCRUTINY_WEB_DATABASE_LOCATION: /opt/scrutiny/config/scrutiny.db
      SCRUTINY_WEB_INFLUXDB_HOST: 127.0.0.1
      SCRUTINY_WEB_INFLUXDB_PORT: "8086"
      SCRUTINY_WEB_LISTEN_HOST: 0.0.0.0
      SCRUTINY_WEB_LISTEN_PORT: "8080"
      TZ: Europe/Berlin
      UMASK: "002"
      UMASK_SET: "002"
      COLLECTOR_ZFS_CRON_SCHEDULE: 0 0 * * *
      COLLECTOR_ZFS_RUN_STARTUP: "true"
    group_add:
      - 568
    healthcheck:
      interval: 30s
      retries: 5
      start_interval: 2s
      start_period: 15s
      test:
        - CMD
        - curl
        - --request
        - GET
        - --silent
        - --output
        - /dev/null
        - --show-error
        - --fail
        - http://127.0.0.1:8080/api/health
      timeout: 5s
    image: ghcr.io/starosdev/scrutiny:latest-omnibus
    platform: linux/amd64
    ports:
      - mode: ingress
        protocol: tcp
        published: 31054
        target: 8080
      - mode: ingress
        protocol: tcp
        published: 31055
        target: 8086
    privileged: true
    restart: unless-stopped
    security_opt:
      - no-new-privileges=true
    stdin_open: false
    tty: false
    user: 0:0
    volumes:
      - bind:
          create_host_path: false
          propagation: rprivate
        read_only: true
        source: /dev
        target: /dev
        type: bind
      - bind:
          create_host_path: false
          propagation: rprivate
        read_only: false
        source: /mnt/nvme/apps/scrutiny/config
        target: /opt/scrutiny/config
        type: bind
      - bind:
          create_host_path: false
          propagation: rprivate
        read_only: false
        source: /mnt/nvme/apps/scrutiny/influxdb
        target: /opt/scrutiny/influxdb
        type: bind
      - bind:
          create_host_path: false
          propagation: rprivate
        read_only: true
        source: /run/udev
        target: /run/udev
        type: bind

You need to adjust the volume paths to your pool and dataset layout, and probably your timezone.

Enjoy,
Patrick

Does Dockhand keep the .yaml, .env, etc., in plain text files on your pool? That’s an important feature of Dockge for me.

root@truenas:/mnt/nvme/apps/dockhand# ls -l stacks/Production/*
stacks/Production/dh-lldpd:
total 5
-rwxrwx--- 1 apps root 317 Feb 20 23:26 compose.yaml

stacks/Production/dh-scrutiny:
total 5
-rwxrwx--- 1 apps root 2429 Feb 20 23:26 compose.yaml

stacks/Production/dh-sws:
total 5
-rwxrwx--- 1 apps root 423 Feb 20 23:26 compose.yaml

the zfs healthcheck is a nice addition

did you create the folders first via datasets (with user/group 568?)?

Yes, of course. Like you do with all host paths for apps.

Are there plans to replace the official TrueNAS catalog app with this one?

There’s already a request for that on the truenas apps github, but i don’t know if the maintainers are considering it or not…

Edit For reference this is the github issue [Enhancement]: Switch scrutiny to forked repo · Issue #4109 · truenas/apps · GitHub and it seems to be happening, at least a maintainer assigned it to himself as task