Scrutiny
Get Started with Apps!
Keywords: disk, monitoring
Train: Community
Home Page: https://github.com/AnalogJ/scrutiny
Added: 2024-11-11
Last Updated: 2025-04-23
Scrutiny is tool for Hard Drive S.M.A.R.T Monitoring, Historical Trends & Real World Failure Thresholds
Run as Context- Scrutiny runs as root user.
Group: 0 / root
User: 0 / root

Host Mounts
- /run/udev : Scrutiny needs to access the udev device information. (Read Only)
- /dev : Scrutiny needs to access the host device information. (Read Only)
Security Capabilities
- Scrutiny is able to use raw I/O.
- Scrutiny is able to perform privileged operations.
- Scrutiny is able to bypass permission checks for it's sub-processes.
- Scrutiny is able to bypass permission checks.
- Scrutiny is able to set group ID for it's sub-processes.
- Scrutiny is able to set user ID for it's sub-processes.
App Metadata (Raw File)
{
"1.1.11": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/scrutiny/1.1.11",
"last_update": "2025-04-23 17:40:39",
"required_features": [],
"human_version": "v0.8.1_1.1.11",
"version": "1.1.11",
"app_metadata": {
"app_version": "v0.8.1",
"capabilities": [
{
"description": "Scrutiny is able to use raw I/O.",
"name": "SYS_RAWIO"
},
{
"description": "Scrutiny is able to perform privileged operations.",
"name": "SYS_ADMIN"
},
{
"description": "Scrutiny is able to bypass permission checks for it's sub-processes.",
"name": "FOWNER"
},
{
"description": "Scrutiny is able to bypass permission checks.",
"name": "DAC_OVERRIDE"
},
{
"description": "Scrutiny is able to set group ID for it's sub-processes.",
"name": "SETGID"
},
{
"description": "Scrutiny is able to set user ID for it's sub-processes.",
"name": "SETUID"
}
],
"categories": [
"monitoring"
],
"changelog_url": "https://github.com/AnalogJ/scrutiny/releases",
"date_added": "2024-11-11",
"description": "Scrutiny is tool for Hard Drive S.M.A.R.T Monitoring, Historical Trends & Real World Failure Thresholds",
"home": "https://github.com/AnalogJ/scrutiny",
"host_mounts": [
{
"description": "Scrutiny needs to access the udev device information. (Read Only)",
"host_path": "/run/udev"
},
{
"description": "Scrutiny needs to access the host device information. (Read Only)",
"host_path": "/dev"
}
],
"icon": "https://media.sys.truenas.net/apps/scrutiny/icons/icon.svg",
"keywords": [
"disk",
"monitoring"
],
"lib_version": "2.1.16",
"lib_version_hash": "dac15686f882b9ce65b8549a3d5c0ed7bafe2df7a9028880d1a99b0ff4af1eff",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "scrutiny",
"run_as_context": [
{
"description": "Scrutiny runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/scrutiny/screenshots/screenshot1.png"
],
"sources": [
"https://github.com/AnalogJ/scrutiny"
],
"title": "Scrutiny",
"train": "community",
"version": "1.1.11"
},
"schema": {
"groups": [
{
"name": "Scrutiny Configuration",
"description": "Configure Scrutiny"
},
{
"name": "Network Configuration",
"description": "Configure Network for Scrutiny"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Scrutiny"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Scrutiny"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Scrutiny"
}
],
"questions": [
{
"variable": "scrutiny",
"label": "",
"group": "Scrutiny Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "elevate_privileges",
"label": "WARNING: Elevate Privileges",
"description": "Elevate privileges for Scrutiny.</br>\nThis is only needed for **SOME** NVMe drives.</br>\nEnabling this option, Scrutiny will get SYS_ADMIN capability.</br>\nThis is a security risk, in case the application is compromised.</br>\nUse at your own risk.\n",
"schema": {
"type": "boolean",
"hidden": true,
"default": false
}
},
{
"variable": "disks",
"label": "Disks",
"description": "Disks for Scrutiny.",
"schema": {
"type": "list",
"hidden": true,
"min": 1,
"required": true,
"default": [],
"items": [
{
"variable": "disk",
"label": "Disk",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "host_device",
"label": "Host Disk Path",
"description": "Host Disk Path",
"schema": {
"type": "path",
"required": true
}
},
{
"variable": "container_device",
"label": "Container Disk Path",
"description": "Container Disk Path",
"schema": {
"type": "path",
"required": true
}
}
]
}
}
]
}
},
{
"variable": "additional_envs",
"label": "Additional Environment Variables",
"description": "Configure additional environment variables for Scrutiny.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "env",
"label": "Environment Variable",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "name",
"label": "Name",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "value",
"label": "Value",
"schema": {
"type": "string",
"required": true
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "network",
"label": "",
"group": "Network Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "web_port",
"label": "WebUI Port",
"description": "The port for Scrutiny WebUI",
"schema": {
"type": "int",
"default": 31054,
"show_if": [
[
"host_network",
"=",
false
]
],
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "influxdb_port",
"label": "InfluxDB Port",
"description": "The port for InfluxDB",
"schema": {
"type": "int",
"default": 31055,
"show_if": [
[
"host_network",
"=",
false
]
],
"required": true,
"$ref": [
"definitions/port"
]
}
},
{
"variable": "host_network",
"label": "Host Network",
"description": "Bind to the host network. It's recommended to keep this disabled.\n",
"schema": {
"type": "boolean",
"default": false
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "config",
"label": "Scrutiny Config Storage",
"description": "The path to store Scrutiny Config.",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "ix_volume",
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"hidden": true,
"default": "config"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": []
}
}
]
}
},
{
"variable": "host_path_config",
"label": "Host Path Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"host_path"
]
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "acl",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
},
{
"variable": "path",
"label": "Host Path",
"description": "The host path to use for storage.",
"schema": {
"type": "hostpath",
"show_if": [
[
"acl_enable",
"=",
false
]
],
"required": true
}
}
]
}
}
]
}
},
{
"variable": "influxdb",
"label": "Scrutiny InfluxDB Storage",
"description": "The path to store Scrutiny InfluxDB.",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "ix_volume",
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"hidden": true,
"default": "influxdb"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": []
}
}
]
}
},
{
"variable": "host_path_config",
"label": "Host Path Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"host_path"
]
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "acl",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
},
{
"variable": "path",
"label": "Host Path",
"description": "The host path to use for storage.",
"schema": {
"type": "hostpath",
"show_if": [
[
"acl_enable",
"=",
false
]
],
"required": true
}
}
]
}
}
]
}
},
{
"variable": "additional_storage",
"label": "Additional Storage",
"description": "Additional storage for Scrutiny.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "storageEntry",
"label": "Storage Entry",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.</br>\nSMB Share: Is a SMB share that is mounted to as a volume.\n",
"schema": {
"type": "string",
"required": true,
"default": "ix_volume",
"immutable": true,
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
},
{
"value": "cifs",
"description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
}
]
}
},
{
"variable": "read_only",
"label": "Read Only",
"description": "Mount the volume as read only.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "mount_path",
"label": "Mount Path",
"description": "The path inside the container to mount the storage.",
"schema": {
"type": "path",
"required": true
}
},
{
"variable": "host_path_config",
"label": "Host Path Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"host_path"
]
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "acl",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
},
{
"variable": "path",
"label": "Host Path",
"description": "The host path to use for storage.",
"schema": {
"type": "hostpath",
"show_if": [
[
"acl_enable",
"=",
false
]
],
"required": true
}
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "storage_entry"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
}
]
}
},
{
"variable": "cifs_config",
"label": "SMB Configuration",
"description": "The configuration for the SMB dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"cifs"
]
],
"attrs": [
{
"variable": "server",
"label": "Server",
"description": "The server to mount the SMB share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "path",
"label": "Path",
"description": "The path to mount the SMB share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "username",
"label": "Username",
"description": "The username to use for the SMB share.",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "password",
"label": "Password",
"description": "The password to use for the SMB share.",
"schema": {
"type": "string",
"required": true,
"private": true
}
},
{
"variable": "domain",
"label": "Domain",
"description": "The domain to use for the SMB share.",
"schema": {
"type": "string"
}
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "labels",
"label": "",
"group": "Labels Configuration",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "label",
"label": "Label",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "key",
"label": "Key",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "value",
"label": "Value",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "containers",
"label": "Containers",
"description": "Containers where the label should be applied",
"schema": {
"type": "list",
"items": [
{
"variable": "container",
"label": "Container",
"schema": {
"type": "string",
"required": true,
"enum": [
{
"value": "scrutiny",
"description": "scrutiny"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "resources",
"label": "",
"group": "Resources Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "limits",
"label": "Limits",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "cpus",
"label": "CPUs",
"description": "CPUs limit for Scrutiny.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Scrutiny.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Scrutiny</h1> <p><a href=\"https://github.com/AnalogJ/scrutiny\">Scrutiny</a> - Hard Drive S.M.A.R.T Monitoring, Historical Trends & Real World Failure Thresholds</p> <p>Scrutiny is tool for Hard Drive S.M.A.R.T Monitoring, Historical Trends & Real World Failure Thresholds</p>",
"changelog": null,
"chart_metadata": {
"app_version": "v0.8.1",
"capabilities": [
{
"description": "Scrutiny is able to use raw I/O.",
"name": "SYS_RAWIO"
},
{
"description": "Scrutiny is able to perform privileged operations.",
"name": "SYS_ADMIN"
},
{
"description": "Scrutiny is able to bypass permission checks for it's sub-processes.",
"name": "FOWNER"
},
{
"description": "Scrutiny is able to bypass permission checks.",
"name": "DAC_OVERRIDE"
},
{
"description": "Scrutiny is able to set group ID for it's sub-processes.",
"name": "SETGID"
},
{
"description": "Scrutiny is able to set user ID for it's sub-processes.",
"name": "SETUID"
}
],
"categories": [
"monitoring"
],
"changelog_url": "https://github.com/AnalogJ/scrutiny/releases",
"date_added": "2024-11-11",
"description": "Scrutiny is tool for Hard Drive S.M.A.R.T Monitoring, Historical Trends & Real World Failure Thresholds",
"home": "https://github.com/AnalogJ/scrutiny",
"host_mounts": [
{
"description": "Scrutiny needs to access the udev device information. (Read Only)",
"host_path": "/run/udev"
},
{
"description": "Scrutiny needs to access the host device information. (Read Only)",
"host_path": "/dev"
}
],
"icon": "https://media.sys.truenas.net/apps/scrutiny/icons/icon.svg",
"keywords": [
"disk",
"monitoring"
],
"lib_version": "2.1.16",
"lib_version_hash": "dac15686f882b9ce65b8549a3d5c0ed7bafe2df7a9028880d1a99b0ff4af1eff",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "scrutiny",
"run_as_context": [
{
"description": "Scrutiny runs as root user.",
"gid": 0,
"group_name": "root",
"uid": 0,
"user_name": "root"
}
],
"screenshots": [
"https://media.sys.truenas.net/apps/scrutiny/screenshots/screenshot1.png"
],
"sources": [
"https://github.com/AnalogJ/scrutiny"
],
"title": "Scrutiny",
"train": "community",
"version": "1.1.11"
}
}
}
Support, maintenance, and documentation for applications within the Community catalog is handled by the TrueNAS community. The TrueNAS Applications Portal hosts but does not validate or maintain any linked resources associated with this app.
There currently aren’t any resources available for this application!
Please help the TrueNAS community create content or discuss this application in the TrueNAS Community forum.