这是一个反复出现的问题,也是我能找到的最接近的问题7 年前被问到,那是一个完全不同的时代。
我经营一家小公司,我们托管多个中小型客户网站(这些网站只需要几个 1G Digital Ocean droplet)。当前解决方案(临时脚本和电子邮件)开始显示出其局限性,尤其是在当前业务快速增长的情况下。
业务问题
因此,我需要构建一个新的解决方案。也许不是一次性完成,但我肯定不想重新做所有事情。我能想到的要求:
- 简单。简单。简单。我没有员工,没有时间,不能很好地消化废话。我准备分配所需的资源,但不会更多了。
- 没有 SaaS。过去几年我一直在使用很多 SaaS,它们最终都变得更贵了,停止服务或被收购然后完全消失。SaaS 是一种我不想再冒的风险。
- 归根结底,我只关心简单的事情:
- 我的网站响应是否无错误并且足够快?
- 我的网站是否超载了?
- 我的磁盘是否已满?
- 有一个基于 Ansible 的自动化部署系统,它应该能够负责配置每个站点的监控/警报
- 我希望负责人在凌晨 4 点被叫醒,只要有用
- 所有事件/问题都应该被跟踪到某个地方并易于移动(类似于 JIRA 板)
- 所有数据都应存储在某个地方以便我稍后检查,包括 HTTP 日志,我希望能够对其进行统计,例如查找运行缓慢或容易出错的页面。
- 我有几十台(Debian)服务器,需要集中管理它们的所有信息
我做过的研究
为了做到这一点,我开始在互联网上搜索,并找到了基本上无数的东西,如果你愿意的话,你可以把它们圈起来并互相插入。
- ELK 堆栈(和“Beats”)。似乎非常适合收集和存储日志/指标。您可以拥有漂亮的仪表板并查看数据,但这几乎就是您所能做的一切。
- X-Pack。这似乎是与 ELK 完美搭配的东西,但看起来它就像是一块裹着厚厚糖衣的漂亮蛋糕。再加上不公布价格的“订阅”模式,可能意味着它定价过高。
- 新剑/纳吉奥斯/扎比克斯是最初的竞争者,但它们却很无聊且复杂,并且需要自定义代码和创可贴才能与 ELK 配合使用。
- 黎曼看起来是一个触发警报但事后无法管理警报的优秀框架。另外,你必须自己编写所有内容。而且我不确定应该把它插在哪里(我不想让多个探测器测量同一个东西)。对我来说可能太复杂了。
- 弹性警报这可能是一个好主意,但似乎没有提供实际的警报管理方法
- 水手长它看起来比 ElastAlert 更成熟、更完整,但也有同样的缺点,配置可能更复杂
- 开放职责听起来很有趣,但显然还不够成熟,不具备可行性
- 卡伯特做出了很好的承诺,由一家公司制造并使用,该公司指派人员编写文档,因此它可能不会消失(尽管有点微弱)
- 当然还有普罗米修斯,格拉法纳,格雷洛格,Fluentd或许还有无数其他人。
迄今为止为解决这个问题所采取的措施
我目前对情况的了解是我需要 2 个工具(嗯,堆栈):
- 一个可以收集、存储并允许查询日志和指标的程序。这将为我提供业务统计数据、事后分析、调试见解等。似乎最适合此目的的程序是麋鹿。
- 一个不断分析数据以发现异常并发出警报的系统。现在这个系统就不那么明确了。我会选择卡博特它看起来很简单并且易于扩展。
实际问题
我的要求合理吗?如果合理,我寻找这两个工具(一个用于日志存储/访问,一个用于警报管理)是否正确?如果合理,我的选择是否适合这项任务,或者您是否推荐其他工具?
不是问题
我并不是凭空而来地询问哪个是最好的监控解决方案,我只是陈述我的问题和我的解决方案,并希望得到确认或指出它失败的地方。
感谢大家!