第五章、系统与应用管理-搭建企业监控平台

1.1.  监控平台

1.1.1. 简介

我们常说,IT人员要有危机意识,明白有可能出现哪些问题,出现这些问题后该如何去迅速处理。

在系统运维中,为了有效保障系统上线后的正常运行,需要对服务器进行持续的监控,保障其性能的稳定,并通过统计分析每天的各种数据,从而能及时反映出服务器哪里存在性能瓶颈、安全隐患等。

在介绍监控产品之前,先聊下监控的几个基本概念:

1.1.2. 监控的维度

在选择具体的监控平台之前,我们最先需要明确,我们监控的目标是什么?在我的理解中,监控分为两个维度:即监控的广度和监控的深度。

1.1.3. 监控的广度

大家所需要监控的系统少则几种,多则几十种,比如需要监控硬件、存储、操作系统、中间件、数据库及应用等。而在每一个平台中,又存在多种平台:比如我们有华为、华三、思科、戴尔、惠普、IBM 的硬件服务器或者网络设备,同时也会有 Windows、Linux、ESXi等多种操作系统。系统和平台维度的组合,意味着我们不仅仅要监控多个层级的监控,也意味着每个层级内部的需要监控的对象更精细化。因此系统异构性和平台的多样性构成了运维的复杂性。

数据库层面: MySQL,MariaDB,Oracle,SQL Server

应用软件及中间件:Nginx,Apache,PHP,Tomcat

集群状态: LVS,Keepalived,HAproxy,RHCS,F5

虚拟化层面: VMware,KVM,XEN ,docker,k8s

操作系统层面:Linux,Unix,Windows性能参数

硬件: 服务器,存储

网络: 交换路由,防火墙

综上,一个理想的监控平台应该支持基于各类系统,覆盖各类厂商和平台的监控。

1.1.4. 监控的深度

相对的,监控目标需要考虑的另一维度是监控的深度。就监控深度而言,我们可以将其简单分成可用性监控、性能监控、日志监控和自定义监控这四大类。

可用性监控:它的状态是一个布尔型,即只有 1 或者 0。比方说,一个服务是处于停止状态还是运行状态,一个端口是 Up 还是 Down,根据可用性监控我们可以获知监控对象是否处于正常状态。

性能监控:是基于可用性监控的更进一步监控。比如说我们监控某个 IP 地址,在可用性监控中我们会去 Ping 这个 IP。如果通,就说明这个 IP 可达;更进一步,Ping 延迟就是这个 IP 的性能监控。通过性能监控,我们可以获知监控对象的健康程度以及负载水平。CPU、内存使用率,磁盘的 IOPS,网络的吞吐量,都是常见的性能监控指标。

日志监控:不管是可用性监控还是性能监控,都基于一定的轮询周期进行采样,在两个采样点之间的监控其实是缺失的,因此在两个采样点之间可能会遗漏一些异常监控数据。通过日志监控,可以记录下每一个操作或者行为,确保监控的完整性。常用的日志监控会分为安全日志、系统日志、应用日志和操作日志等。这个其实和其他几个监控是互补的关系。

自定义的监控:顾名思义,根据我们自身的情况去定义一些符合我们监控需求的监控指标。比如应用的订单数、网站的在线数等等。

1.1.5. 监控工具选型

综合监控的广度和监控的深度这两点,为我们进行监控平台的选型提供了一个思路和依据:

当我们的环境中只有 Windows的服务器时,显然微软的SystemCenter更合适,它不仅能比其他平台更快的发现问题,并有完善的知识库提供具体的解决方案。

不过,通常情况下我们的环境中还充满了网络设备、Linux、存储等其他监控对象。这个时候使用SystemCenter去监控可能就比较难以实施了,即使能实施,仍然会存在较高的成本或者技术局限性。同样cacti(人称仙人掌)更适合网络设备的监控。

那么有没有一个产品可以兼具监控的广度和监控的深度呢?经过各种评估和试用,认为Zabbix、Nagios可能是在目前兼顾监控广度和深度的最合适的开源监控平台。

1.1.6. Zabbix软件部署方案

Zabbix是一个非常优秀的企业级分布式开源监控解决方案,它能够监控众多网络参数和服务器的健康度、完整性。

Zabbix由 Alexei Vladishev 创建,目前由其成立的公司Zabbix SIA积极的持续开发更新维护,并为用户提供技术支持服务。

优点:

  • 灵活的告警机制,允许用户为几乎任何事件配置基于邮件、脚本、电话、短信的告警,这样用户可以快速响应服务器问题。
  • 基于存储的数据提供出色的报表和数据可视化功能。
  • 支持主动轮询(polling)和被动捕获(trapping)两种信息收集模式,这样使得触发更加灵活,当主机数量比较大的时候,被动捕获方式对服务器的负载比较小。
  • BS部署架构,所有的报表、统计数据和配置参数都可以通过基于网页的前端页面进行访问。基于网页的前端页面确保可以在任何地方访问您监控的网络状态和服务器健康状态。
  • 支持由master和proxy组成分布式部署模式,支持在每个网络区域内部署一个 Zabbix Proxy,即Zabbix的代理服务器,这个服务器的职责是收集当前区域的监控对象的监控数据。
  • Zabbix是免费的,根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的,可供公共使用。
  • 支持设备多,自带多种监控模板,开放式接口,扩展性强,插件编写容易,有自动发现功能,可以实现自动化监控。

当然,zabbix也有几个比较大的缺点:比如所有数据都存在数据库里, 产生的数据很大瓶颈主要在数据库。入门容易,但是涉及复杂一点的个性化需求就需要二次开发,且学习成本比较大。

部署架构:

zabbix 由以下几个组件部分构成:

  • Zabbix Server:负责接收 agent 发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
  • Database Storage:专用于存储所有配置信息,以及由 zabbix 收集的数据,一般默认集成是mysql数据库;
  • Web interface:zabbix 的 GUI 接口,通常与 Server 运行在同一台主机上;
  • Proxy:可选组件,常用于分布监控环境中,代理 Server 收集部分被监控端的监控数据并统一发往 Server 端;
  • Agent:部署在被监控主机上,负责收集本地数据并发往 Server 端或 Proxy 端;

效果展示:

告警问题列表

通过webhook推送告警信息至工作群

1.1.7. Nagios软件简介

Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等

Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。

Nagios的主要功能特点:

– 监视网络服务 (SMTP, POP3, HTTP, NNTP, PING等)

– 监视主机资源 (进程, 磁盘等)

– 简单的插件设计可以轻松扩展Nagios的监视功能

– 服务等监视的并发处理

– 错误通知功能 (通过email, pager, 或其他用户自定义方法)

– 可指定自定义的事件处理控制器

– 可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等

– 可以通过手机查看系统监控信息

第五章、系统与应用管理-搭建企业监控平台

发表回复

滚动到顶部