使用Nagios进行小型企业基础设施监控
摘要
作者详细介绍了在一家小型社区报社使用Nagios监控服务器、服务和Web应用的经验,强调了其低成本(每月4美元)和可靠性,尽管界面过时。
<p><a href="https://lobste.rs/s/wub9oc/using_nagios_for_small_business">评论</a></p>
查看缓存全文
缓存时间: 2026/07/21 20:43
# 使用Nagios进行小型企业基础设施监控 - Chris Hardie的技术与软件博客
来源:https://tech.chrishardie.com/2026/nagios-small-business-infrastructure-monitoring/
市面上有无数监控服务和衡量应用性能的工具,我相信其中许多都很出色。
当我想为我们社区报社的一个人IT部门(也就是我)寻找一个良好的服务和基础设施监控解决方案时,我回到了一个可能20多年前就开始使用的开源工具:Nagios(https://www.nagios.org/)。
它对我们来说非常好用,而且自托管每月只需4美元。我想分享一下我们如何使用它,或许对其他人也有帮助。
我的需求相当直接。
我想监控大约10台服务器和网络设备以及它们上托管的各类服务,大约20个Web应用程序的健康状况,以及我们依赖的大约20个外部服务/平台的状态页面。
当某些东西变慢或停止响应时,我希望以可靠的方式得知。
在我很久以前运营的网站开发和托管业务中,我们广泛使用了Nagios,它对这类事情非常适用。高度可配置且灵活,维护量低,而且非常可靠。
最近在寻找替代方案时,Nagios似乎并没有太大变化,其过时的Web界面和晦涩的配置文件语法让我觉得现在肯定有人已经创建了更好的工具。因此,我花了很多时间研究替代方案,包括Zabbix、Prometheus、Grafana、Datadog、New Relic、Pingdom、UptimeRobot等一大堆。我们起初也确实短暂使用过UptimeRobot。
但当我考虑了学习和管理这些堆栈复杂性所需的时间,或者我们在SaaS工具上的花费以及它们强加的“按席位”或“按监视器”限制时,我越发倾向于选择一个久经考验、专门构建的选项,它可以在不增加额外成本或复杂性的情况下扩展。
Nagios初始设置并不有趣——参见我之前关于晦涩配置语法的评论(https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/objectdefinitions.html#service)。我大概花了相当于一整天的时间才把所有东西配置妥当。但一旦完成,它就一直运行得很好,带来巨大的安心感。
我们目前监控着54台主机和104项服务。这一切都在Digital Ocean一个每月4美元的droplet上运行,1 vCPU,512 MB RAM,10 GB磁盘。我们还另外支付每月0.80美元用于每周droplet快照。我们将监控droplet设置在与其余服务器/droplet不同的物理区域,位于大陆的另一端。
为了开始,我参考了Edson Kimuli的这些说明(https://edsonkimuli.medium.com/install-nagios-4-on-nginx-ubuntu-20-04-93a112208232),非常有帮助。我在安装过程中/之后做的一些事情:
- 使用更新的PHP版本
- 移除apache2
- 设置certbot用于SSL
- 添加交换分区(https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-22-04)
- 安装并配置postfix用于电子邮件发送,尽管我认为我们实际上没有使用它
- 安装Perl以使用一些Nagios插件
- 对监控主机锁定网络访问
### 我们监控什么
以下是我们监控的一些内容:
- 通过ping检查特定主机是否在线
- Web服务器是否可用
- Web服务器是否通过服务器名称指示(SNI)响应给定请求
- Web服务器的SSL证书是否有效且未即将过期
- DNS服务器是否为给定主机名返回预期的IP地址
- 关键域名的域名过期是否迫在眉睫
- Droplet的磁盘空间、负载和内存使用是否符合预期
- 服务器备份最近是否成功运行
- SSH服务是否可用并监听
- Web应用程序在健康检查端点是否提供预期响应
- Squid代理服务器(https://tech.chrishardie.com/2026/simple-proxy-server-squid/)是否运行并接受请求
- 代理服务器是否提供包含预期内容的PAC文件
- 代理服务器是否实际代理请求,但不允许未经身份验证的代理
- 关键网站的关键页面(包括其RSS源)是否提供预期内容
- 我们的办公室网络是否可以从公共互联网访问
- VPN服务器是否接受连接
对于外部状态页面监控,我们基本上检查相关SaaS工具所使用的状态页面是否显示“所有系统正常运行”的消息。这有点宽泛,因为许多状态页面将维护活动显示为全绿状态的间断,但目前这样可行。
我特别喜欢Nagios的一点是,如果它没有内置的监控项,那么很可能有一个插件(https://nagios-plugins.org/)可用,或者我可以自己用简单的shell脚本构建一个。我不需要在每台服务器上安装笨重的第三方应用程序来让它们参与监控。
一个随机例子是:Google的状态页面并没有简单的方式来判断所有服务是否正常运行——“无事件”指示器有点独立,所以我写了一个简单但略显脆弱的脚本来检查其有多少服务被列为可用:
``
#!/bin/bash
# 检查适当数量的Google Workspace服务是否被列为可用。
# 要检查的URL
url="https://www.google.com/appsstatus/dashboard/"
# 运行命令并存储输出到变量
output=$(curl -sSf "$url" | grep -oh 'psd__available' | wc -l)
# 检查输出是否等于33
if [ "$output" -eq 33 ]; then
echo "OK - 收到预期输出: $output 来自 $url"
exit 0 # Nagios状态码表示OK
else
echo "CRITICAL - 收到意外输出: $output 来自 $url"
exit 2 # Nagios状态码表示Critical
fi
``
然后在Nagios中,你可以将该脚本设置为一个“检查命令”,用于确定你所监控主机的健康/状态:
``
define command {
command_name check-google-workspace
command_line /usr/local/nagios/plugins/check_google_workspace.sh
}
``
尽管这有点奇怪,并且当Google添加或删除服务时需要偶尔更改,但这是我认为某些SaaS工具更难做到的事情之一。
我们还使用Nagios NRPE代理(https://github.com/NagiosEnterprises/nrpe)作为轻量级服务检查工具,允许我在特定服务器上设置自定义检查。如果你使用它,请确保设置防火墙规则,仅允许你的Nagios监控器访问。
### 告警
作为一人IT部门,我需要确保不会错过告警,但也不想被告警淹没。
所以目前,我将所有告警发送到专用的Slack频道,重要的告警则通过Pushover(https://pushover.net/)(另一个历史悠久的经典服务,就是好用)发送到我的移动设备。这是使用的Pushover通知脚本(https://raw.githubusercontent.com/jedda/OSX-Monitoring-Tools/master/notify_by_pushover.sh)。告警内容可以自定义,以便它们是否穿透我的“请勿打扰”和睡眠设置。
我还使用easyNag iOS应用(https://easynag.com/)来快速查看和处理告警。虽然我可以快速访问Nagios Web界面,但我发现使用原生应用来快速确认故障或查看主机/服务状态,能给我带来那种事情太多时想要的快速、现代化的运维感受。
### 监控监控器
如果Nagios自己宕机了怎么办?目前这个安装还没发生过,但以防万一,我使用Healthchecks.io(https://healthchecks.io/)的免费计划设置了一个基础元监控。Nagios每5分钟“检查”一次Healthchecks.io端点,如果它在预期窗口内未发送请求,Healthchecks.io将通过电子邮件、Slack和Pushover向我发送告警。
### 拥有良好监控的安心感
也许显而易见的是,我发现监控所有我们依赖的系统和服务的状态带来了安心感和更快的解决速度。
如果团队中有关于故障的传言蔓延,我通常已经知道并正在定位原因。
当我们一个办公地点的ISP遭遇光纤中断时,我通常是那个告诉他们的人,并说服他们重启路由器无济于事。
当我进行配置更改或升级某些内容时,知道许多类型的严重错误会被迅速捕获,这很好。
如果你还没有监控你的小型企业基础设施,我强烈建议你这样做。
相似文章
Show HN: 用 Go 语言编写的轻量级 Linux VPS 系统监控工具
vpsmon 是一款用 Go 语言编写的轻量级 Linux VPS 系统监控工具,提供网页界面实时监控 CPU、内存、交换空间、磁盘、网络、系统运行时间和进程数量。
NixOS 让我不再那么害怕
作者分享了使用 NixOS 部署 FreshRSS 等自托管服务的体验,说明声明式配置如何大幅降低运维和重建服务器的心理负担与工作量。
我的新家庭服务器软件选择
一篇个人博客文章,详细描述了作者为新家庭服务器选择操作系统和服务管理软件的经历,比较了Synology、TrueNAS、Debian以及使用Runit的Void Linux。
Show HN: CheapSecurity – 轻量级自托管CCTV,适用于Linux单板计算机
CheapSecurity 是一个轻量级、自托管的CCTV解决方案,适用于Linux单板计算机,提供注重隐私的家庭监控,支持运动检测、录像和Telegram提醒,无需云订阅。
Ask HN:你在这台每月 5 美元的 VPS 上运行什么值得 7×24 小时在线的服务?
# Ask HN:在每月 5–10 美元的便宜 VPS 或迷你电脑上,人们实际运行什么值得 24 小时开机的服务? > 灵感源自 DHH 提出的"AI 小屋(AI shed)"理念。 **标题:** Ask HN 讨论 —— 探索人们在每月仅需 5–10 美元的廉价 VPS 或迷你电脑上,实际运行哪些值得 24 小时不间断开机的服务。这一话题的灵感来源于 DHH 提出的 "AI shed"(AI 小屋)构想。