30.1 运维故障发现与监控系统应用
目录
运维故障发现思路与监控系统应用
运维领域有一句话"我们不应该允许没有被监控的系统上线的",显然监控对于我们快速发现问题解决问题至关重要。本章我们就来学习最常用的监控系统 zabbix 的安装,配置和使用。
在学习 zabbix 之前,我们首先需要对 zabbix 本身有所理解,因为无论是 zabbix 还是其他开源实现都是一种特定的解决方案,而不便的是怎样构建监控系统本身。
假设我们从头构建一个监控系统,应该如何做呢?我们需要思考以下几个问题:
- 监控哪些内容?
- 如何对监控项进行数据采集
- 如何判断系统是否处于非稳定状态,并在确定异常之后预警
- 如何能快速了解当前系统的状态及展示的问题。
这些问题就是我们构建一个监控系统的关键。因此一个完整的监控系统至少应该包含以下几个功能:
- 数据采集: 定期的采集监控指标的数据
- 数据存储: 将采集的数据保存起来,以便通过对比了解当前系统的状态
- 数据展示: 将存储的指标数据,直观的展示出来,以便运维工程师快速的了解整个系统的运行状态
- 报警: 当系统出现问题时,能发出报警及时通知管理员进行修复
1. 监控系统
1.1 监控内容
监控包含多个层面:
- 硬件: 硬件状态是否,硬件设备的资源是否满足业务需要,比如 CPU 使用率是否一直超过 90%
- 软件: 软件是否正成工作,比如我们的 nginx 服务进程是否正常
- 业务: 当前系统的并发请求数是否过高
不同的监控内容需要不同的监控设备以帮助我们收集监控数据,我们将监控设备称之为“传感器”(sensor)。
1.2 数据采集
监控系统采集数据的通道通常包括
- ssh/telnet
- agent: master/agent
- IPMI: 英特尔智慧平台接口,允许在硬件层级直接收集系统硬件状态信息
- SNMP: Simple Network Management Protocol
- JMX: java 管理扩展,用于监控 jvm 虚拟机
|
|
1.3 存储系统
监控数据分为两类:
- 历史数据: 每一次的采样数据,保存时间长较短
- 趋势数据: 一段时间内的聚合数据,保存时间较长
1.4 报警
预警有多种方式,包括邮件,短信,微信,除了通用的邮件预警外,其他大多数的预警方式都是通过脚本来实现的。
1.5 展示
数据展示有 WebGui,GUI,APP 等方式
1.6 监控系统的实现
cactl, nagios: 功能有限 zabbix: 功能强大