Smartctl Exporter 在群晖上的使用
文章目录
家里的NAS使用了很久,上一次硬盘坏了一块,为了防止忽然再出现损坏,决定监控一下硬盘状态。
安装 Smartctl Exporter
因为群晖自带的 smartctl 版本过低,不支持 JSON 输出格式,需要安装一个新版本。
在“套件中心 > 设置 > 套件来源”中添加 https://packages.synocommunity.com/ 作为套件来源,然后安装 SynoCli Disk Tools 套件。
测试
执行smartctl7 --version,如果能看到如下输出,说明安装成功。
smartctl 7.5 2025-04-30 r5714 [x86_64-linux-5.10.55+] (local build)
Copyright (C) 2002-25, Bruce Allen, Christian Franke, www.smartmontools.org
smartctl comes with ABSOLUTELY NO WARRANTY. This is free
software, and you are welcome to redistribute it under
the terms of the GNU General Public License; either
version 2, or (at your option) any later version.
See https://www.gnu.org for further details.
smartmontools release 7.5 dated 2025-04-30 at 07:42:55 UTC
smartmontools SVN rev 5714 dated 2025-04-30 at 07:43:44
smartmontools build host: x86_64-pc-linux-gnu
smartmontools build with: C++11, GCC 8.5.0
smartmontools configure arguments: '--host=x86_64-pc-linux-gnu' '--build=i686-pc-linux' '--prefix=/var/packages/synocli-disk/target' '--localstatedir=/var/packages/synocli-disk/var' '--with-libcap-ng' '--sysconfdir=/var/packages/synocli-disk/var' 'build_alias=i686-pc-linux' 'host_alias=x86_64-pc-linux-gnu' 'CXX=/github/workspace/toolchain/syno-x64-7.1/work/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-g++' 'CXXFLAGS=-I/github/workspace/toolchain/syno-x64-7.1/work/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include -I/github/workspace/spk/synocli-disk/work-x64-7.1/install/var/packages/synocli-disk/target/include ' 'LDFLAGS=-L/github/workspace/toolchain/syno-x64-7.1/work/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/lib -L/github/workspace/spk/synocli-disk/work-x64-7.1/install/var/packages/synocli-disk/target/lib -Wl,--rpath-link,/github/workspace/spk/synocli-disk/work-x64-7.1/install/var/packages/synocli-disk/target/lib -Wl,--rpath,/var/packages/synocli-disk/target/lib ' 'CPPFLAGS=-I/github/workspace/toolchain/syno-x64-7.1/work/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include -I/github/workspace/spk/synocli-disk/work-x64-7.1/install/var/packages/synocli-disk/target/include -O' 'CC=/github/workspace/toolchain/syno-x64-7.1/work/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-gcc' 'CFLAGS=-I/github/workspace/toolchain/syno-x64-7.1/work/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include -I/github/workspace/spk/synocli-disk/work-x64-7.1/install/var/packages/synocli-disk/target/include ' 'PKG_CONFIG_LIBDIR=/github/workspace/spk/synocli-disk/work-x64-7.1/install//var/packages/synocli-disk/target/lib/pkgconfig' 'NM=/github/workspace/toolchain/syno-x64-7.1/work/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-nm'
安装 Smartctl Exporter
- wget https://github.com/prometheus-community/smartctl_exporter/releases/download/v0.14.0/smartctl_exporter-0.14.0.linux-amd64.tar.gz
- tar zxf smartctl_exporter-0.14.0.linux-amd64.tar.gz
- mv smartctl_exporter-0.14.0.linux-amd64/smartctl_exporter /bin/
- chmod +x /bin/smartctl_exporter
安装Node Exporter
- wget https://github.com/prometheus/node_exporter/releases/download/v1.10.2/node_exporter-1.10.2.linux-amd64.tar.gz
- tar zxf node_exporter-1.10.2.linux-amd64.tar.gz
- mv node_exporter-1.10.2.linux-amd64/node_exporter /bin/
- chmod +x /bin/node_exporter
创建启动脚本
创建start.sh脚本,内容如下:
#!/bin/bash
# 进入目录
cd /volume1/monitor
# 杀掉旧进程 (防止重复启动)
pkill node_exporter
pkill smartctl_exporter
# 启动 Node Exporter (后台运行,日志重定向到 null)
nohup /bin/node_exporter --web.listen-address=":9100" > /dev/null 2>&1 &
nohup /bin/smartctl_exporter \
--smartctl.path=/usr/local/bin/smartctl7 \
--web.listen-address=":9633" \
--smartctl.device=/dev/sata1 \
--smartctl.device=/dev/sata5 \
--smartctl.device=/dev/sata3 \
--smartctl.device=/dev/sata4 \
--smartctl.device=/dev/sata6 \
--smartctl.device=/dev/sata7 \
> /dev/null 2>&1 &
注意:smartctl.device的参数需要根据实际的硬盘设备进行调整,可以通过ls -l /dev/sata*查看当前系统中的硬盘列表
设置开机启动事件
打开 控制面板 > 任务计划 点击 新增 -> 触发的任务 -> 用户定义的脚本。
任务名称输入:Monitor Agents,用户选择root,事件选择开机,任务设置在用户定义的脚本中输入:bash /volume1/monitor/start.sh
### 验证数据
执行`curl http://localhost:9633/metrics`和`curl http://localhost:9100/metrics`,如果能看到有数据输出,说明配置成功
### Grafana 配置
导入`20204`这个看板
### 采集设置
因为我使用的是victoria-metrics做数据采集,所以在`scrape.yml`中添加如下配置重启服务即可
```yaml
- job_name: 'synology-nas'
static_configs:
- targets: [ 'xxx.xxx.xxx.xxx:9100' ]
- targets: [ 'xxx.xxx.xxx.xxx:9633' ]
labels:
instance: 'synology-nas'
不足
因为是黑群晖,有两块硬盘被识别成了SCSI 设备,没法查看SMART状态,所以没法监控到这两块硬盘的状态,为了稳定起见(估计硬件转接卡问题)不折腾了。
/usr/local/bin/smartctl7 -i /dev/sata1 --json在devive可以看到type为scsi
{
"json_format_version": [
1,
0
],
"smartctl": {
"version": [
7,
5
],
"pre_release": false,
"svn_revision": "5714",
"platform_info": "x86_64-linux-5.10.55+",
"build_info": "(local build)",
"argv": [
"smartctl",
"-i",
"/dev/sata1",
"--json"
],
"exit_status": 0
},
"local_time": {
"time_t": 1767880520,
"asctime": "Thu Jan 8 21:55:20 2026 CST"
},
"device": {
"name": "/dev/sata1",
"info_name": "/dev/sata1",
"type": "scsi",
"protocol": "SCSI"
},
"scsi_vendor": "HGST",
"scsi_product": "HTS541010A9E680",
"model_name": "HGST HTS541010A9E680",
"scsi_model_name": "HGST HTS541010A9E680",
"scsi_revision": "A560",
"scsi_version": "SPC-3",
"user_capacity": {
"blocks": 1953525168,
"bytes": 1000204886016
},
"logical_block_size": 512,
"physical_block_size": 4096,
"scsi_lb_provisioning": {
"name": "fully provisioned",
"value": 0,
"management_enabled": {
"name": "LBPME",
"value": 0
},
"read_zeros": {
"name": "LBPRZ",
"value": 0
}
},
"rotation_rate": 5400,
"form_factor": {
"scsi_value": 3,
"name": "2.5 inches"
},
"logical_unit_id": "0x5000cca79adf1d61",
"serial_number": "JD1022CH26EWMK",
"device_type": {
"scsi_terminology": "Peripheral Device Type [PDT]",
"scsi_value": 0,
"name": "disk"
},
"smart_support": {
"available": false
}
}
最终效果

相似文章
文章作者 pengxiaochao
上次更新 2026-01-08
许可协议 不允许任何形式转载。