面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java

1.前言

随间互联网、云计算的飞速发展,越来越多的企业系统架构越来越复杂,且迭代的速度也为之迅速。随着业务量、流量的增长,庞大的业务系统架构即将面临一系列的问题,同时也是企业飞速发展所需解决的痛点。

  • 复杂庞大的业务系统架构,给运行维护增加一定的难度与复杂度。

  • 大量服务应用、模块的API接口的状态运行情况需要监测。

  • 各类监控数据的收集、分析、整理耗时、费力,统一展示(可视化)需求迫切。

  • 业务系统运行状态周报、月报数据难以统计、导出。

  • 故障点的快速发现与定位,减少业务中断率势在必行。

不仅企业管理者面临的问题,同时也给企业的技术人员带来一定维护压力,一个行之有效监控体系迫在眉睫
画外音:这也就解释了为什么越来越多的企业都在使用监控系统。

2.什么是监控系统

简单来说,监控系统就是一套解决应用、服务或系统故障发现、故障预警、故障定位,运行状态展示等多种功能融合一体的一个解决文案。也可以称之为一套系统。
监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题。监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择。

3.监控系统的目标

对于使用监控来说,首先,得确立目标是什么,需要达到什么的效果,这才是重点。笔者根据实际工作经验总结如下:

  • 对系统、服务或平台的运行状态实行实时不间断监控

  • 不间断实时反应系统、服务或平台的运行状态信息

  • 提前预知可能存在的故障风险

  • 实现故障预警报警功能

  • 通过监控数据快速定位故障原因

  • 最终保证系统持续、稳定、安全运行

  • 状态数据可视化与统计、导出、归档(历史数据可追溯)

4.如何使用监控

  • 首先需要了解被监控对象的运行、工作原理与过程

  • 确立需要监控被监控对象的哪些指标,如:服务的可用性、端口状态,网卡的内外流量等

  • 定义监控阀值报警范围、报警等级,如:内存可用剩余多少需要报警?磁盘空间使用率达到多少需要报警?

  • 建立完善的故障处理流程体系,如:紧急故障、非紧急故障、一般故障等处理方法与流程

5.监控流程

1、收集数据
  • 通过什么方式收集数据?

  • 收集哪些数据?

2、存储数据
  • 存储数据的介质,如:MySQL数据库

  • 存储数据的时限,如:历史数据的保留时长

3、展示数据
  • 以何种方式展示,如:web界面?开发APP?

  • 展示哪些数据

4、故障报警
  • 电话报警

  • 邮件报警(目前流行)

  • 微信报警(目前流行)

  • 短信报警

  • 钉钉报警(目前流行)

5、告警处置
  • 根据故障等级处理:紧急、非紧急

  • 设定的故障处理预案

6.监控对象

了解完监控的目标、流程之后,还需要了解到底监控哪些内容?也就是被监控的对象是哪些。一般实际环境中基本监控可以分为以下几种,如下。

1、CPU监控
  • CPU整体使用情况:用户态与内核态,空闲率等

  • 单个CPU的使用情况

2、磁盘监控
  • 磁盘容量:分区使用量(已用与可用容量)

  • 磁盘IO

  • 磁盘的数据读写效率

3、内存监控
  • 内存使用量:已用、可用

4、网络监控
  • 内网卡出入流量

  • 外网卡出入流量

  • TCP状态


  • 面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_02
5、系统重要进程监控
  • 系统进程状态

  • 系统服务进程开销

6、应用服务监控
  • 应用的进程状态

  • 应用端口状态

  • 一些个性化的需求

7、硬件设备监控
以往对设备监控这块,我们单凭肉眼观察其状态灯的变化与变化频率来判断的时代一去不复返了,劣势大家都知道:重复、繁重、效率低下,而且还不适用于大规模设备集群。
  • 路由器状态

  • 交换机状态

  • 服务器状态

8、安全监控

安全监控一般使用第三方接收较多,个人开发或开源产品不多。

  • 攻击

  • 漏洞

9、API接口监控

复杂的、大型系统中API监控非常重要,主是针对监控API接口GET、POST、PUT等请求。

面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_03

图片来源于网络

  • 接口可用性

  • 接口的正确性

  • 接口的响应时间

7.监控工具介绍

下面介绍下,目前日常实际环境中常用的一些监控工具。每个工具的功能、特性都各有千秋,也因如此,都有着不同的应用场景。目前,实际环境应用最多的无非两大类:开源产品、商用产品。

7.1 开源产品

1、Cacti

官方网站:http://www.cacti.net

面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_04

发布于2001年, Cacti 是一款开源的基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形,它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结 构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,让你添加自己的snmp_query和script!功能非常强大完善,界面友好。

面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_05

注:目前使用不多。

2、Nagios

官方网站:https://www.nagios.org/

Nagios是一款开源的企业级监控系统,能够实现对系统CPU、磁盘、网络等方面参数的基本系统监控,以及 SMTP,POP3,HTTP,NNTP等各种基本的服务类型。另外通过安装插件和编写监控脚本,用户可以实现应用监控,并针对大量的监控主机和多个对象 部署层次化监控架构。

面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_06

注:Nagios配置灵活,可以自定义shell脚本,但配置复杂,学习时间、精力和成本比较大。

3、Grafana

官方网站:http://grafana.org/

相关文章:打造高逼格、可视化的Docker容器监控系统平台

面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_07

Grafana目前使用比较广泛,它的数据可视化的展示功能非常强大,我们可以通过influxdb监控,Prometheus采集的主机信息,而且还不需要安装任何绘图插件,只需要将需要的数据加入到它的数据源中即可,然后通过内置的插件来展示你所需要的数据。

注:图形化界面非常酷炫,配置稍复杂,需要了解其内部算法。

4、Zabbix

官方网站:https://www.zabbix.com/

部署配置:Linux系统——zabbix监控软件安装布署

Zabbix是一个基于WEB界面的提供分布式系统监控以及网络监控功能的企业级开源运维平台,也是目前国内互联网用户中使用最广的监控软件,云智慧遇到的85%以上用户在使用Zabbix做监控解决方案。 

面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_08

Zabbix易于管理和配置,能生成比较漂亮的数据图,其自动发现功能大大减轻日常管理的工作量,丰富的数据采集方式和API接口可以让用户灵活进行数据采集,而分布式系统架构可以支持监控更多的设备。理论上,通过 Zabbix提供的插件式架构,可以满足企业的任何需求。

注:入门容易、上手简单、功能强大并且开源免费,特别是其自动发现功能非常强大。数据统计功能需要二次开发。

5、Open-falcon (小米开源产品)

官方网站:http://open-falcon.org/

Open-falcon是小米运维团队从互联网公司的需求出发,根据多年的运维经验,结合SRE、SA、DEVS的使用经验和反馈,开发的一套面向互联网的企业级开源监控产品。

面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_09

  1. 自动发现,支持falcon-agent、snmp、支持用户主动push、用户自定义插件支持

  2. 支持每个周期上亿次的数据采集、告警判定、历史数据存储和查询

  3. 高效的portal、支持策略模板、模板继承和覆盖、多种告警方式、支持callback调用

  4. 单机支撑200万metric的上报、归档、存储

  5. 采用rrdtool的数据归档策略,秒级返回上百个metric一年的历史数据

  6. 多维度的数据展示,用户自定义Screen

  7. 通过各种插件目前支持Linux、Windows、Mysql、Redis、Memache、RabbitMQ和交换机监控。

6、Lepus(天兔)

官方网站:http://www.lepus.cc/    

简洁、直观、强大的开源数据库监控系统。

Lepus监控系统部署配置:强大的开源企业级数据库监控利器Lepus

面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_10

MySQL/Oracle/MongoDB/Redis一站式性能监控,企业级数据库监控工具首选。

注:中文开源软件,监控mysql和redis可以精确到sql语句,因为只有监控数据库和非关系数据库,监控项不能统一,不能结合其他监控平台,适用范围较小。

7.2 商用产品

1、听云

官方网站:http://www.tingyun.com

听云是帮助客户实时监控定位从崩溃报错、慢交互到网络环境出错等多维度复杂的性能问题。听云致力于用户视角的IT管理创新服务,为不同行业提供最终用户端到端的完整应用链的性能管理解决方案,帮助客户不断优化系统性能及用户体验,提高用户满意度和企业竞争力。

面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_11

2、监控宝

官方网站:http://www.jiankongbao.com

监控宝是云智慧为用户提供IT性能监控(IT Performance Monitoring)的SaaS产品,包含网站监控、服务器监控、中间件监控、数据库监控、应用监控、API监控和页面性能监控等功能。包含免费版、畅 享版和企业版,目前用户约40万,监控宝app也是国内唯一提供移动监控服务的产品。

面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_12

注:监控宝通过遍布全球的300多个分布式监测节点,对网络进行稳定性和可用性的主动监控和实时分析,支持http(https)、ftp、ping、udp、tcp、smtp、traceroute等多种协议,测量CDN效果及DNS状态,全网全地域性能趋势分析。最大的缺点就是收费!

3、阿里云监控

官方网站:https://aliyun.com 

阿里云监控是一款免费网站监控产品,可监控站点和服务器,并提供多种告警方式:短信,旺旺,邮件。

面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_13

注:只限阿里产品。

8.总结(附思维导图)

最终使用何种监控产品,监控方法,监控流程等,一切都需要以实际生产环境需求为主。

架构也是不断在演变的过程,随着业务系统的迭代而迭代。此文章不一定适合所有的企业架构,比如说:大数据量、大规模业务流量、对预警有较高要求的场景。

本文只是对监控体系做一个初步的宏观的基础介绍与认识,让大家知道一个监控体系或监控平台如何从0到1的一个演变过程建设监控告警是一条持续且漫长的路,坑也很多本文介绍的一些基本的方法和规律仍然是可以遵循的。

同时,也欢迎小伙伴们留言分享你的运维监控体系构建之路上的点点滴滴!

面试装逼系列|这篇文章,让运维监控不再成为你的短板!_Java_14

注:需要此图原版文件的可联系民工哥。

如果此文章对你了解监控系统有所帮助,请转发分享给更多需要的小伙伴,因为他们面试也需要此装逼指南壮胆!

推荐阅读

精心整理|公众号文章目录大全

MySQL误删数据救命指南:必收藏

如何打造应对超大流量的高性能负载均衡?

从你在浏览器输入url到发起http请求,这过程到底发生了什么?

技术人如果不懂性能优化,怎么玩....?

10 个实战及面试常用 Shell 脚本编写

一组漫画完美总结互联网人生

·end·