白话运维监控系统-1.1 运维监控系统概述
写在前面
笔者从Open-Falcon开源到现在,从事运维监控领域相关工作差不多7年,在做Open-Falcon和Nightingale的社区答疑过程中发现,有大量的小白问题,很多是因为对这个领域缺乏基础认识,所以,想写一个针对入门级用户的系列文章,做一下知识的普及。
另外,监控这个事情,其实也是研发人员走到某个段位之后必须要了解的。因为监控是稳定性体系建设中最重要的一环,普通研发人员往架构师转变,需要了解更多横向的知识,比如持续集成、服务治理、稳定性保障等等,所以了解一下监控,也很有必要。
这是一个很公益的事情,希望大家一起参与讨论,分享经验,为小白领路,功德无量~
监控的价值
监控是保障业务稳定性的重要手段,那怎么提升稳定性呢?简单来说,就是减少故障,一个是减少故障的数量,一个是减少单一故障的影响时长,即出现故障后快速止损。减少故障这个方面,更多的要诉诸于鲁棒的业务系统架构和稳定的基础设施,监控在这个方面没有办法提供太多助力。对于减少单一故障的影响时长,监控是非常有价值的。
在出现故障时,监控系统可以及时感知,及时发告警通知相关人员,让值班的人快速响应,处理故障。处理故障的第一步就是要定位问题,定位问题需要有数据支撑,监控系统的另一个重要职能,就是要提前收集详实的数据,比如日志数据、指标数据等等。
另外,有人可能会想,监控系统能不能通过数据分析手段,提前预测未来可能发生的故障,不要等到故障发生了才来通知我。这个想法很性感,但是,现实很骨感,据笔者了解,业界目前有这方面的尝试,但是场景相对有限,姑且可以作为一个噱头跟不懂的老板吹牛吧。
监控都是在监控什么
监控分很多方向,总体来看,所有影响终端用户使用体验的方面,都可以考虑增加监控。比如某个手机app的产品,要监控哪些东西?比如:app本身是不是crash了、app是不是有卡顿、app到服务端的网络链路是不是质量差了、服务端公网出口是不是拥塞了、多个机房之间专线是不是抖动了、服务提供的接口成功率是不是下降了、服务依赖的第三方组件是不是挂了、机器负载是不是太高了、磁盘空间是不是满了、系统是不是打印了一些错误日志、硬件是不是产生了故障事件,等等等等
笔者主要精力在服务端监控,要监控的方向整体如下:
基础设施类:网络链路、网络设备、硬件、操作系统
存储中间件:MySQL、Redis、RabbitMQ、Kafka、Tomcat、Zookeeper、Ceph等等等等
应用层监控:接口QPS、成功率、延时等
业务层监控:订单量、交易支付量、在线用户量等等
监控系统分类
监控大致分四个方向:指标监控、日志监控、链路追踪、事件监控,即metrics、logging、trace、event。指标监控相关的开源软件比如:Zabbix、Prometheus、Open-Falcon、Nightingale,日志监控相关的开源软件比如:ELK、Grafana Loki,链路追踪相关的开源软件比如:Zipkin、Skywalking,事件监控相关的开源软件比如:呃,笔者没找到专门针对这个方向的开源软件。
指标监控主要是监控数值类型的时序数据,比如某个机器的CPU空闲率、某个机器的内存使用率、某个接口的QPS,这些数据通常是按照一个固定的频率采集上报给监控系统,上报的时候会带上指标名字、时间戳、值等信息。
日志监控主要是收集日志的,比如操作系统日志、各类中间件的日志、业务系统打印的日志,日志收集到中心之后,提供检索分析能力,可以从日志中提取到一些指标,辅助业务决策,也可以用这些指标做告警。
链路追踪即Trace,是说把用户端触发的一次请求,分配一个requestid,这个请求相关的所有的模块,都可以用这个requestid串联起来,然后我们就可以拿着这个requestid,去追踪这个请求,看这个请求流经的各个模块的耗时情况、成功失败情况。
事件监控比较典型的是ipmi吐出的硬件故障事件,或者交换机trap事件,或者在应用程序的逻辑里遇到一个异常状况,也可以生成一个事件,所有的事件统一发给事件监控管理系统,在这个系统里做分类通知、合并降噪等。
其中,指标监控系统通常是最基础的监控系统,也是笔者最有经验的一个系统,后续的文章大都是围绕指标监控的体系来进行讲解。
欢迎大家转发、参与讨论、分享经验~

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
图算法系列之深度优先搜索(一)
吐血整理程序员必读书单:https://github.com/silently9527/ProgrammerBooks 微信公众号:贝塔学Java 前言 在上一篇中我们把图通过邻接表数组表示出来了,这个数据结构将会做我们实现图算法的基础,本篇我们将一起开始学习图算法的第一个搜索算法 - 深度优先搜索 搜索API的定义 public class Search { Search(Graph graph, int s); boolean marked(int v); int count(); } 在开始实现算法之前,我们依然先来定义搜索的API 构造方法提供了一个图对象,以及一个起点s,需要找到与s连通的所有顶点 marked判断顶点s与v是否相邻 count返回与顶点s相连的总顶点数 深度优先搜索 假如上图是一个迷宫,我们需要从顶点0开始找到一条出路,假设我们有一条无限长的绳子,和一支粉笔,那么可以这样考虑找到出路: 先选择一条通道走,在走的路上放上一根绳子 每遇到一个路口就用笔标记一下,继续选择一条未走过的通道 当遇到一个已经被标记的路口时就退回到上一个路口继续选择一个未走过的通道 当回...
- 下一篇
设计模式之单例模式
单例模式,是一种比较简单的设计模式,也是属于创建型模式(提供一种创建对象的模式或者方式)。 要点: **1.**涉及一个单一的类,这个类来创建自己的对象(不能在其他地方重写创建方法,初始化类的时候创建或者提供私有的方法进行访问或者创建,必须确保只有单的对象被创建)。 **2.**单例模式不一定是线程不安全的。 **3.**单例模式可以分为两种:懒汉模式(在第一次使用类的时候才创建,可以理解为类加载的时候特别懒,要用的时候才去获取,要是没有就创建,由于是单例,所以只有第一次使用的时候没有,创建后就可以一直用同一个对象),饿汉模式(在类加载的时候就已经创建,可以理解为饿汉已经饿得饥渴难耐,肯定先把资源紧紧拽在自己手中,所以在类加载的时候就会先创建实例) 关键字: 单例:singleton 实例:instance 同步: synchronized 饿汉模式(2种): 第一种single是public,可以直接通过Singleton类名来访问 publicclassSingleton{ //私有化构造方法,以防止外界使用该构造方法创建新的实例 privateSingleton(){ } //默...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS6,7,8上安装Nginx,支持https2.0的开启