目录

30.1 运维故障发现与监控系统应用

运维故障发现思路与监控系统应用

/images/linux_mt/linux_zabbix.jpg

运维领域有一句话"我们不应该允许没有被监控的系统上线的",显然监控对于我们快速发现问题解决问题至关重要。本章我们就来学习最常用的监控系统 zabbix 的安装,配置和使用。

在学习 zabbix 之前,我们首先需要对 zabbix 本身有所理解,因为无论是 zabbix 还是其他开源实现都是一种特定的解决方案,而不便的是怎样构建监控系统本身。

假设我们从头构建一个监控系统,应该如何做呢?我们需要思考以下几个问题:

  1. 监控哪些内容?
  2. 如何对监控项进行数据采集
  3. 如何判断系统是否处于非稳定状态,并在确定异常之后预警
  4. 如何能快速了解当前系统的状态及展示的问题。

这些问题就是我们构建一个监控系统的关键。因此一个完整的监控系统至少应该包含以下几个功能:

  1. 数据采集: 定期的采集监控指标的数据
  2. 数据存储: 将采集的数据保存起来,以便通过对比了解当前系统的状态
  3. 数据展示: 将存储的指标数据,直观的展示出来,以便运维工程师快速的了解整个系统的运行状态
  4. 报警: 当系统出现问题时,能发出报警及时通知管理员进行修复

1. 监控系统

1.1 监控内容

监控包含多个层面:

  1. 硬件: 硬件状态是否,硬件设备的资源是否满足业务需要,比如 CPU 使用率是否一直超过 90%
  2. 软件: 软件是否正成工作,比如我们的 nginx 服务进程是否正常
  3. 业务: 当前系统的并发请求数是否过高

不同的监控内容需要不同的监控设备以帮助我们收集监控数据,我们将监控设备称之为“传感器”(sensor)。

1.2 数据采集

监控系统采集数据的通道通常包括

  1. ssh/telnet
  2. agent: master/agent
  3. IPMI: 英特尔智慧平台接口,允许在硬件层级直接收集系统硬件状态信息
  4. SNMP: Simple Network Management Protocol
  5. JMX: java 管理扩展,用于监控 jvm 虚拟机
1
yum info  net-snmp  # linux snmp 协议的实现

1.3 存储系统

监控数据分为两类:

  1. 历史数据: 每一次的采样数据,保存时间长较短
  2. 趋势数据: 一段时间内的聚合数据,保存时间较长

1.4 报警

预警有多种方式,包括邮件,短信,微信,除了通用的邮件预警外,其他大多数的预警方式都是通过脚本来实现的。

1.5 展示

数据展示有 WebGui,GUI,APP 等方式

1.6 监控系统的实现

cactl, nagios: 功能有限 zabbix: 功能强大