深入 Prometheus 监控生态 - 第五篇:利用 API 信息进行监控(NAS 备份任务监控 + 解决思路)
文章目录
- 前言
- 一、群晖NAS API 文档
- 二、解决办法(思路)
- 三、测试
- 四、加入监控
- 总结
前言
在现代数据管理中,定期备份是确保数据安全的关键。群晖NAS(Network Attached Storage)提供了丰富的备份功能,但在实际使用中,我们需要实时监控备份任务的状态。通过API,我们可以轻松获取备份任务的相关信息,并将其集成到监控系统中,以便及时发现潜在问题。本文将介绍如何监控群晖 Active Backup for Business备份任务。
一、群晖NAS API 文档
群晖NAS提供了一套RESTful API,允许用户访问和管理NAS的各种功能,包括文件管理、备份任务等。要开始使用API,首先需要了解如何获取API的访问权限。
群晖官方开发手册
但是,在里面并未找到 Active Backup for Business
相关的 API 说明和使用文档。
二、解决办法(思路)
既然官方有 API 使用文档,但没找着 Active Backup for Business
的 API 文档,那就说明应该有 API 查看 Active Backup for Business
备份状态的,毕竟群晖 NAS 备份大多任务通过这个工具来实现,官方自己也推荐使用这个工具备份,要是 API 不能查看Active Backup for Business
状态那就说不过去了。
于是到网上去寻找有没有人根据 群晖 API 开发做了函数、库之类的,结果还真有,里面甚至包含了 API 的使用文档。
synology-api(github)
这个链接地址和里面的 README 图片都与群晖官方十分相似,曾让我一度认为是群晖官方自己做的库。
API 文档里包含了获取 Active Backup for Business
信息,只用装个 Python 库使用它给的示例代码就可以连接群晖并获取信息了。
pip3 install synology-api
#or
python3.6 setup.py install
#or
pip3 install git+https://github.com/N4S4/synology-api
from synology_api import filestation, downloadstation
# Initiate the classes DownloadStation & FileStation with (ip_address, port, username, password)
# it will log in automatically
# NOTE: for Filestation and Downloadstation only has been added interactive_output=True,
# It can be omitted and initiate the wrapper with the below ove code
fl = filestation.FileStation('Synology Ip', 'Synology Port', 'Username', 'Password', secure=False, cert_verify=False, dsm_version=7, debug=True, otp_code=None)
fl.`get_info()`
dwn = downloadstation.DownloadStation('Synology Ip', 'Synology Port', 'Username', 'Password', secure=False, cert_verify=False, dsm_version=7, debug=True, otp_code=None)
dwn.`get_info()`
运行后将返回 Json 格式的信息。
BUT!!!
按文档操作会发现,能连接上,但调用函数等和文档上面描述的完全不一样!!!!!
用 Python 的 dir()
和 help()
方法可以查看有什么函数可以调用以及这个函数怎么用,结果发现完全对不上!!!!!!
估计作者更新代码后忘更新 README 了,那就再到网上继续找了。。。。
结果让我找到了基于群晖 API 做的 exporter
!!!甚至省了做 exproter
的步骤!!!
synology_backup_exporter(github)
结果他居然是基于前面我找到 synology-api 去做的(反正能用就行了)。
三、测试
synology_backup_exporter 作者已经推到了 dockerhub 官方上面,按 README 说明,在另一台能联通群晖 NAS 的设备上,拉取进行修改 config.json 文件,运行使用即可。
docker pull raphii/synology_backup_exporter:dsm7
config.json 文件:
{
"DSMAddress": "syno.ip.add.ress",
"DSMPort": "5000",
"Username": "admin",
"Password": "changeme",
"Secure": false,
"Cert_Verify": false,
"ActiveBackup": true,
"HyperBackup": true,
"HyperBackupVault": true,
"ExporterPort": "9771",
"DSM_Version": "7"
}
注:设备没运行的不要写 true
,要改成 false
,比如 HyperBackup 我没运行要改成 false
,否则运行的时候会报错,起不来。
启动命令:
docker run -itd -v ~/syno_api/config.json:/app/config.json -p 9771:9771 --name syno raphii/synology_backup_exporter:dsm7
浏览器访问 http://<ipmi-exporter_IP>:9771 ,能访问且看到许多数据 exporter
就是成功运行了。
四、加入监控
修改普罗米修斯的 /etc/prometheus/prometheus.rules 文件,追加如下内容并重启服务。
scrape_configs:
- job_name: 'synology-backup-exporter'
static_configs:
- targets:
- '<synology-backup-exporter-ip>:9290' # 替换为实际的 IP 地址和端口
在浏览器访问 Prometheus ,点击 “Status” → “Targets” 中若能发现 “synology-backup-exporter” 栏,且设备数量对得上,State 为 UP,则代表已接入普罗米修斯监控了。
总结
报警规则、看板制作、消息推送,由后面的更新的Prometheus+Grafana的部署篇章中会详细说明。
目前,已更新的 Prometheus 及其相关篇章有:
- 深入 Prometheus 监控生态 - 第一篇:原理与架构详解
- 深入 Prometheus 监控生态 - 第二篇:网络等硬件设备监控(snmp-exporter)
- 深入 Prometheus 监控生态 - 第三篇:操作系统信息监控(node-exporter)
- 深入 Prometheus 监控生态 - 第四篇:服务器硬件信息监控(ipmi-exporter)
- 深入 Prometheus 监控生态 - 第五篇:利用 API 信息进行监控(NAS 备份任务监控 + 解决思路)