这套连载课程,纵观整个行业的解决方案,做出横评对比,然后以夜莺监控系统为蓝本,介绍一个监控系统的方方面面。学习完本教材,会对监控系统有个非常全面的认知。适合人群:DevOps工程师、SRE、研发工程师。作者有10余年DevOps研发经验,8年监控系统开发经验,所以本课程不止讲解操作,还会讲解很多原理。

监控概述

监控系统到底是解决什么问题的?大家通常所谓的监控系统,其实只是可观测性三大支柱之一,何为可观测性三大支柱?作为支柱之一的指标监控系统,具体有哪些特点?本章重点来回答这些问题。

需求来源

最初始的需求,其实只有一句话,就是系统出问题了我们能及时感知。当然,随着时代的发展,我们对监控系统提出了更多的诉求,比如:

  • 通过监控了解到趋势,知道系统在未来的某个时刻可能出问题
  • 通过监控了解系统的水位情况,可以在资源不足的时候及时扩容
  • 通过监控来把脉系统,感知到哪里需要优化,比如一些中间件的参数的调优
  • 通过监控来洞察业务,知道业务发展的情况,业务异常了也能及时感知

监控系统的重要性越来越高,不但可以解决上面这些诉求,还能沉淀知识,沉淀在监控系统中的稳定性相关的知识,可能要比很多工程师的大脑更为丰富。当然,这得益于对监控体系的持续运营,特别是一些资深工程师的持续运营成果。

可观测性三大支柱

我们通常所谓的监控系统,其实只是指标监控,体现在图表上的一条折线图,比如某个机器的CPU利用率,或者某个数据库实例的流量,或者网站的在线人数,都体现为随着时间变化的一条线,比如:


指标监控只能处理数字,历史数据存储成本较低,实时性好,生态庞大,是可观测性领域里最重要的一根支柱。有很多系统都是只处理指标数据,比如 Zabbix、Open-Falcon、Prometheus、Nightingale 这些系统在业内有很广泛的应用。

除了指标监控,另一个重要的可观测性支柱,是日志。从日志中也可以得到很多信息,对于了解软件的运行情况、业务的运营情况,都很关键。比如操作系统的日志、接入层的日志、服务日志,都是重要的数据源,从操作系统的日志中,可以得知很多系统级的事件发生了,从接入层的日志中,可以得知有哪些域名、IP、URL 收到了访问,是否成功以及延迟情况等,从服务日志中可以查询到 Exception 的信息,调用堆栈等,对于排查问题,非常关键。

处理日志这个场景,也有很多专门的系统,开源产品首推ELK,商业产品比如 Splunk、Datadog 等,下面是ELK中查询日志的一张截图:


了解了指标和日志,可观测三大支柱还有一环,即:链路追踪。随着微服务的普及,原本的单体应用被拆分成很多个小的服务,服务之间有错综复杂的调用关系,一个问题,是因哪个模块导致的,排查起来并不容易。

链路追踪的思路是,以请求串联上下游模块,为每个请求生成一个随机字符串作为请求ID,服务之间调用的时候把这个ID逐层往下传递,各层分别花费了多久时间,是否正常处理,都可以收集起来附到这个请求ID上,后面追查问题时,拿着请求ID就可以把串联的所有信息提取出来。链路追踪这个领域也有很多产品,比如 Skywalking、Jaeger、Zipkin 等,都是个中翘楚。下面是Zipkin的一张截图:


虽然我们把可观测性领域划分了3大支柱,实际上他们之间是有很强的关联关系的。比如我们经常会从日志中提取指标,转存到指标监控系统,或者从日志中提取链路信息来做分析,这在业界都有诸多实践。

指标监控产品特点

我们重点探讨的是指标监控,不讨论日志和链路追踪,要了解指标监控,首先要了解何为指标,说白了,指标就是衡量目标的数值。比如 Linux 操作系统,我们可以从多个方面去衡量它的负载情况,比如 CPU 的使用率方面有 cpu_usage_system(CPU内核态时间占比)、cpu_usage_user(CPU用户态时间占比)、cpu_usage_idle(CPU空闲时间占比) 等指标,内存方面则有 mem_available_percent(内存可用率)、mem_used(内存使用量)等指标,磁盘方面则有 disk_used_percent(磁盘使用率)、diskio_write_bytes(磁盘写入量)等指标。

一般,会在OS内安装一个客户端软件,作为一个常驻进程运行,按照一个固定的频率来采集(比如15秒),采集到数据之后,发给服务端存储和分析展示。

故而,指标监控的几个特点:

  1. 一般只处理数值数据,不处理字符串(个别监控系统也可以处理字符串,大部分都不处理)
  2. 指标数据是时序数据,每隔一个固定的间隔就采集一次,把采集到的数据上报,永不停歇
  3. 指标数据是采样数据,比如15秒采集一次,只能拿到采集的那一时刻的数据,如果把采集频率调小,可以获取更丰富的更精确的数据,但是代价会更大,需要更多存储,更多算力来处理,实际生产环境,30秒或者60秒就够了,如果对精度要求高,15秒就够了,再小的频率,意义不大,因为监控数据的核心是感知异常和感知趋势,如果出现异常,一般异常会持续一段时间,偶尔的异常通常也不需要关注,所以采样数据通常也可以感知到异常,而对于趋势,如果查看的时间越大,采集频率可以越大,如果看1小时的数据,15秒一个点是可以的,如果看1年的数据,每小时一个点的频率也完全够用,太多的数据点,可能会把浏览器打爆
  4. 因为是处理的时序数据,每个值都带有一个时间戳,这种数据很有规律,行业内出现了专注于这类数据处理的数据库,称为时序数据库,比如InfluxDB、VictoriaMetrics、M3DB等,监控系统依赖一个时序数据库,也就变成了一个典型的架构特点

架构上来说,指标监控系统除了依赖一个时序库,还必然需要一个采集器去采集各种指标数据,其次就是告警引擎和可视化展示,典型的系统架构如下:


Collector表示采集器,专门做采集器的开源项目也有很多,比如 Telegraf、Grafana-Agent、Datadog-Agent、Categraf,以及,Prometheus 生态的各种 Exporter。橙色部分是监控的服务端,通常包括UI展示能力和服务端告警引擎。最后,依赖一个时序数据库:Time Series Database。

本章就介绍到这里,后面的内容会在作者博客持续更新,欢迎大家持续关注。

  • 作者:龙渊秦五,网络ID: UlricQin,欢迎关注
  • 夜莺:一款云原生监控系统,国产开源,隶属中国计算机学会开源发展委员会,项目主站: https://n9e.github.io/

本文由 mdnice 多平台发布

【连载】说透运维监控系统01-监控系统概述相关推荐

  1. 使用TDengine快速搭建运维监测系统

    使用TDengine快速搭建运维监测系统 提到监测,有很多成熟的解决方案,似乎已经没有再讨论的必要,但随着计算机技术的发展,越来越多的场景开始需要监测,它会向着更深更广的方向发展.从业务领域来看,运维 ...

  2. 深入探讨运维驱动的可监控性设计

    "外部质量验收驱动技术债务消除"的理念: 技术债务的形成往往是由于赶进度忽略了非功能质量特性而导致的,由于内部质量的不佳(设计或代码质量不高)导致外部质量的低下. 传统IT领域通常 ...

  3. Linux运维-服务器系统篇

    Linux运维-服务器系统篇 开篇导读: 本篇博文是此系列教程的第二课,在这一课中将大概的介绍一下服务器上的操作系统,了解一下它的基本概念和发展历程. 服务器系统的概念和作用 如何理解服务器操作系统? ...

  4. 江南科友 hac linux shell,运维安全审计系统(HAC 1000E、HAC 1000P)

    "运维安全审计系统(HAC 1000E.HAC 1000P)"详细介绍 堡垒机.HAC.运维安全审计系统.江南科友堡垒机.内控堡垒机.运维堡垒机.HAC 1000-E.HAC 10 ...

  5. 运维服务器手段(监控宝,Nagios,百度通告平台)

    站在"巨人"的肩膀上运维 现实问题 之前在论坛看到一个运维工程师的帖子,内容如下: "现在的一个IT工作者最头疼的就是加班,秃顶的是IT工作者最多.单身的是IT工作者最多 ...

  6. 中国服务器审计系统,OSA 运维安全审计系统

    方案简介 OSA 运维安全审计系统扮演着看门者的职责,所有对网络设备和服务器等资源的请求都要从这扇大门经过.因此运维安全审计系统能够拦截非法访问和恶意攻击,保护核心服务器.数据库等重要系统,对不合法命 ...

  7. 应用程序性能监测—云安虚拟化运维监测系统

    今天讲讲应用程序性能的监测,应用程序性能监测的三大指标:用户体验.网站的性能.网络的性能的三大指标,无论哪一项出了问题,都会对整体影响很大.所以如何通过性能监测预防故障发生或在故障发生后能够迅速精确定 ...

  8. 绿色双碳目标发展:ZTMap三维融合渲染平台打造数字孪生智慧电力运维保障系统

    前言 2021年3月,中央财经委员会第九次会议正式提出"构建以新能源为主体的新型电力系统" 深化电力体制改革,实现"双碳"目标.面对 下半年双碳目标政策的爆发性 ...

  9. liunxs运维_Linux系统运维之运维规范.pdf

    <Linux 系统运维之运维规范> <Linux系统运维之运维规范> <Linux系统运维之运维规范> <<LLiinnuuxx系系统统运运维维之之运运 ...

  10. Kubernetes CKA认证运维工程师笔记-Kubernetes监控与日志

    Kubernetes CKA认证运维工程师笔记-Kubernetes监控与日志 1. 查看集群资源状况 2. 监控集群资源利用率 3. 管理K8s组件日志 4. 管理K8s应用日志 1. 查看集群资源 ...

最新文章

  1. USEARCH11命令大全,200+命令中文简介,快速查找需要功能
  2. zookeeper-01
  3. 2014 ACM/ICPC 鞍山赛区网络赛(清华命题)
  4. php 502.88,Nginx+PHP-FPM 访问出现 502错误
  5. C# dataGridView控件实用属性及事件总结
  6. ap6212 Linux 蓝牙,替代正基AP6212、AP6330的SDIO WiFi+UART蓝牙组合
  7. redis 缓存有效期
  8. Linux 操作系统下常见信号详解
  9. 嵌入式系统中的几个关键基本概念!
  10. 计算机组成原理感想,学习计算机组成原理的感想
  11. 好用靠谱的人事管理软件推荐?
  12. 计算机服务中无spool,打印服务SPOOLSV.EXE自动停止
  13. 网络基础知识之报文格式介绍
  14. java项目需求文档,干货整理
  15. 重磅!腾讯优图11篇论文入选AI顶会AAAI 2021
  16. 软件测试零基础入门好学吗?
  17. Windows每次开机键盘无法使用,需要重新拔插键盘USB接口的解决方案
  18. 区块链教程Fabric1.0源代码分析Ledger(账本)二
  19. 手机上可以拍一寸证件照吗
  20. java所用到的英语单词_JAVA常用英语单词

热门文章

  1. Score-based Generative Model:一统DDPM和SMLD两大生成式模型
  2. VoNR来了,它到底是什么技术?
  3. 极客评论:使用TeraCopy加快文件复制
  4. java从屏幕输入数据_java键盘输入/屏幕输出练习
  5. 关于xp使用4G内存的问题
  6. 好文推荐!LLM技术精要;美图发全员激励股✦票;百度/微信大会精华笔记;Flink商✦业化再起波澜;GitHub今日热榜 | ShowMeAI资讯日报
  7. 无线控制模块c语言编程,基于STM32F103ZET6无线语音控制小车设计与实现.doc
  8. 最新速卖通开店入驻流程及费用详解
  9. fastjson复杂json转换为java对象
  10. oracle SQL记录