版权声明:本文为博主原创文章,转载请注明出处:https://twocups.cn/index.php/2021/06/14/37/
写在前面
我最近需要组一套监控系统来完成对数据库、对机器、甚至对整个平台的监控。由于公司的云环境体量很大,所以需要考虑的东西就非常多。再加上云规模一旦达到一定的级别,各种问题也会开始层出不穷。所以我在学习和实际部署 Zabbix 的同时,也开了它的博客,当作自己的一个记录。当然了,博客里会隐去所有的业务情况,单单只谈技术。
Zabbix
Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。它可用于监视各种网络服务、服务器和网络机器等状态。
Zabbix 使用 MySQL、PostgreSQL、SQLite、Oracle 或 IBM DB2 储存资料。Server 端基于 C语言、Web 前端则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。它可以只使用 Simple Check 而不需要安装 Client 端,也可基于 SMTP 或 HTTP 等各种协定做死活监视。在客户端如 UNIX、Windows 中安装 Zabbix Agent 之后,可监视 CPU 负荷、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、TCP、ICMP检查,以及利用 IPMI、SSH、telnet 对目标进行监视。另外,Zabbix 包含 XMPP 等各种 Item 警示功能。
为什么选择Zabbix?
业界对于监控系统已经有很多优秀的开源方案了,我在各种比较之下选择了 Zabiix。下面是我搜集到的各类开源方案的优缺点。这些并不是全部的优缺点,而是我觉得比较重要的、有影响的优缺点。
其中,Zabbix 挺符合我的要求的。它有稳定的 LTS 版本,有丰富的插件支持,能够进行二次开发。而缺点中比较明显的有,数据量大时读取数据库缓慢、缺少数据汇总和展示功能。不过这些问题对于我来说是可以解决的,正好和前面的 Elastic Stack 联动,一起组成一套优秀的监控体系。
zabbix
优点:
- 部署方便、模版也多
- 支持多种条件报警
- 故障时可以执行自定义命令
- 提供多种api,支持脚本调用
缺点:
- 批量修改麻烦
- 数据量大时,需要直接读取数据库,会有卡慢
- 缺少数据汇总功能
- 没有告警收敛功能
nagios
优点:
- 配置灵活,可以自定义shell脚本
- 自动日志回滚
- 支持冗余监控主机
- 报警设置多样
缺点:
- 看不到历史数据
- 对性能流量指标处理能力差
- 事件控制台能力差
ganalia
优点:
- 适合监控系统性能
- 可以自定义监控项
- 部署简单
缺点:
- 没有报警机制
- 没有消息通知系统
prometheus
优点:
- 监控数据的精细程度高,可以精确到1s
- 部署方便
- 插件丰富
缺点:
- 对资盘资源耗费较大
- 独有数学命令行学习难度大
- 不支持集群(?)
- 仪表盘页面渲染速度慢
- 不善于处理长期的历史归档数据
小米的Open-Falcon
优点:
- 单机支撑200万metric上报、归档、存储
- 采用rrdtool的数据归档策略,秒级返回上百个metric一年的历史数据
- 通过插件可以支持mysql等的监控
缺点:
- 很多功能还不够完善
- 插件很少
cacti
–
阿里云监控
–
专用于监控数据库的LEPUS天兔
–