我家里有几台服务器。我希望有一台计算机可以监控这些服务器上的活动,并在出现问题时通知我。因此,我在那里安装了 ansible。为了获得最大程度的安全性,ansible 将使用的用户将只具有它应该做的事情的权限,仅此而已。但是,我遇到了一个问题,我将在这个简单的案例中解释它。
假设我们想知道的温度/dev/sda
,host1
为了简单起见,我将使用hddtemp
来收集数据,并使用用户monitor
进行监控。该工具hddtemp
需要特权用户才能执行,因此我允许它在 sudoers 中运行:
%monitor ALL=NOPASSWD: /usr/sbin/hddtemp
但由于需要访问设备一,因此访问仍被拒绝/dev/sda
。在 Debian 11 上,这些块设备位于组中disk
。
brw-rw---- 1 root disk 8, 0 sep 4 21:31 sda
于是我将用户添加monitor
到该组。但错误消息已从以下内容变为:
/dev/sda (read) access denied
更改为:
/dev/sda access denied
我有两个问题:
- 我的做法合理吗,还是我想太多了
- 如果它是合法的,我该如何授予我的用户
monitor
访问我的硬盘温度的权限?访问块设备是否/dev/sda
足够,还是我需要给它更多的东西来读取温度?
答案1
像 Ansible 这样的配置管理套件非常适合更新和维护服务器上的配置,但不太适合监控服务器。配置管理会定期检查服务器的配置,并调用命令来更改配置,但那只是在该服务器的“所需配置”发生变化时。使用监控时,您希望即使服务器配置没有更改,也能调用(监控)命令。
此外,监控需要以不同的间隔调用命令。有些命令每 30 分钟调用一次,而其他命令每 5 分钟调用一次。通常,失败会触发每分钟可配置的重试,直到连续 3 次或更多次尝试失败,然后才发送警报。配置管理不希望以不同的间隔运行多个状态检查/更改程序,更像是每 30 分钟或更短时间进行一次检查/更改。从这个额外的方面来看,配置管理套件并不适合监控。
正如评论所建议的那样,最好使用专门用于监控的软件套件进行监控。