02-监控系统的浅析

前言:设计一个监控系统从哪入手呢?

前篇已经提到过监控系统的重要性,那么一个较为良好的监控系统应该从哪几方面上手的呢?我我的理解能够经过如下几个方面入手:算法

  • 评估业务类型,架构体系;
  • 分类监控;
  • 监控技术方案选型;
  • 监控人员规划;
  • 监控系统的部署;
  • 数据采集;
  • 监控数据分析与算法;
  • 系统测试;
  • 自动化管理;
  • 图形化展现。

大体从以上几点开始,下面咱们简单来介绍上面所说。服务器

一、评估业务类型与架构体系

当下各个企业的产品不一样,业务方向不一样,程序代码不一样,系统架构更不一样,对于各个地方的细节都须要有必定程度的认知才能够开启设计的源头。网络

好比,咱们以系统架构为例,若是你是老牌服务 VS 微服务 我相信面向服务的监控体系必定会比面向主机监控更加顺畅的多;又好比Python亦或者Java,更甚者PHP都有着不一样的监控体系,因此这里要根据自身状况相结合进行合理的选择。架构

二、分类监控

分类监控,咱们将须要的监控项进行整合分类便于后期管理实施的便捷性,那么通常可分为:业务级别监控、系统级别监控、网络监控、程序代码监控、日志监控、用户行为分析监控、其余种类监控。运维

举例来如,以下:微服务

  • 业务监控: 包含 用户访问QPS, DAU日活, 访问状态, 业务接口等
  • 系统监控: 主要是跟操做系统相关的 基本监控项 CPU/内存/硬盘/IO/TCP/带宽 等
  • 网络监控: 对网络状态的监控,丢包率,延迟 等
  • 日志监控: 监控中的重头戏,每每单独设计和搭建,所有种类的日志都有采集的需求;
  • 程序监控: 通常须要和开发人员配合,程序中嵌入各类接口直接获取数据;

三、监控技术的方案

目前各类监控软件层出不穷,包括开源的、商业的、自行开发的等几百种的可选方案;选取呢应该针对企业的架构特色,大小,种类,人员多少 等等 选取合适的技术方案,而不该该熟悉那个则上那个,那样可能会给后期扩展升级带来巨大的挑战。工具

四、监控人员

运维团队自身就应该将相关任务进行消化掉,同时划分相关项目功能模块,责任到人;中间难免须要开发团队的配合,不少监控设计的工做,也须要寻求开发人员配合才能够进行。性能

五、监控系统的部署

监控系统首选须要评估,存储周期,高可用问题,以及多AZ(多机房,多可用区)问题,根据存在的这个问题咱们进行选择部署形式。测试

六、数据采集

目前来讲,数据采起形式多为Agent采起;工具多为一下几种:lua

  • Shell:最快速清亮,不带有复杂逻辑的监控,最适合Get系统参数,或者搭载服务器上的应用参数;
  • Python:运维人员的必备语言,模块很是多适合不少的复杂逻辑,可是Agent部署过重;
  • awk:Linux的文本处理工具,通常搭配Shell使用;
  • lua:嵌入式监控首选,好比:OpenResty;
  • Go:将来有晋升为运维必回的另外一门高性能语言了,客户端很是轻量,缺点:目前相关库还不够完善;
  • 其余:。。。。

数据采集通常分为两种形式:

  • 频率性采集:每隔多长时间获取下对应监控项的数值;
  • 持续性采集:多用于网络监控,Log监控;

七、监控数据分析和算法

若是你不配置对数据的分析(有些分析须要算法的加持),那么存放在哪里的只是一堆没用的数据;当咱们可以把数据转化成为监控公式报警的阈值才能发挥出监控本该有的意义。

好比:CPU状态,传统监控多为采用系统负载load来判断系统繁忙状态, 那你如何肯定是用户态仍是系统态,以及更多的信息呢? 假如咱们经过算法对CPU使用状况统计5分钟的增加比率超过0.8,同时持续了30分钟呢?是否是比load更加能够清晰呢。

八、监控稳定测试

无论采集形式如何,只要运行才Linux上,多会对系统有或多或少的影响,因此稳定性测试,就是经过一段时间的观测,确保能平滑上线。

九、自动化管理

随着业务量增大,机器、服务增多咱们就须要对监控值进行管理以及Agent的扩展等问题,自动化的由于会很大程度上缩短咱们对监控系统的维护成本。

我这里推荐: Ansible,有兴趣的小伙伴能够了解下。

十、图形化

想想酷炫的大屏;采集的数据和准备好的算法相结合,就能够作出一个很是棒的图形展现,好比:多数据源聚合展现,多源对比等等。

因此,监控成图也是很重要的一个点。

小结

上面扯了一堆,其实咱们须要结合自身实际状况以及将来的发展趋势来作设计便可。

相关文章
相关标签/搜索