完善的监控流程体系是一个公司非常重要的部分。接下来会根据下图进行解释监控流程中的部分
1、监控系统设计(运维架构师):
这部分是由运维架构师进行设计,设计部分主要包括如下内容:
各个企业的产品不同、业务方向不同、程序代码不同、系统架构更不同,对各个地方细节需要有一定程度的认知。
一般可以分为:业务级别监控、系统级别监控、网络监控、程序代码监控、日志监控、用户行为分析监控以及其他种类监控。如:
2、监控系统搭建
3、数据采集编写
可选用脚本作为数据采集,如:shell/python/go等。作为监控数据采集,首推shell/python
数据采集的形式分类:
优势:稳定性好,不容易出现各种错误和性能瓶颈,且开发逻辑简单 实现快速
劣势:实现不够智能
优势:数据准确度高,采集密度惊喜,管理方便
劣势:如果开发不够仔细,可能会出现内存泄漏,僵尸进程,性能瓶颈等问题,且开发周期时间长
4、监控稳定测试
不管是一次性采集,还是后台采集,只要实在Linux上运行的定西都会多多少少对系统产生一定的影响。稳定性测试就是通过一段时间的单点部署观察,对线上有没有任何影响。
5、监控自动化
监控客户端的批量部署,监控服务端的HA再安装,监控项目的修改,监控项目的监控集群变化。这些地方需要大量的人工。这时,自动化引入会很大程度上缩短对监控系统的维护成本。如:Puppet(配置文件部署)、Jenkins(CI持续集成部署)、CMDB(运维自动化的最高资源管理平台和理念)等。
6、监控图形化工作
采集的数据和准备好的监控算法,最终需要一个好的图形展示,才能发挥最好的作用。监控的设计搭建需要大量的技术知识,但是对于一个观察者来说,往往不需要多少技术,只要能看懂图就好(老板想看看当前用户访问量情况,想看看整体CPU高不高)
Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源项目,并且独立于任何公司进行维护。为了强调这一点并阐明项目的治理结构,Prometheus 于2016年加入了 Cloud Native Computing Foundation,这是继Kubernetes之后的第二个托管项目。
时间序列(time series x,y)是一系列有序的数据。通常是等时间间隔的采样数据。
key/value键值 {disk_size: 80},最大的好处是数据格式简单、速度快、易维护开发。
完全基于数学运算,而不是其他的表达式,并且提供专有的查询输入console。所有的查询都是基于数学运算公式的,例如:(增量(A)+增量(B))/总增量(C)>固定百分比
所有的数据采集,都是基本采用HTTP,而且分为pull和push拉和推两种方式去写采集程序,非常方便。
https://prometheus.io, 很多Prometheus社区开发的插件已经非常强大和完善。如果公司对监控要求不是特别高的话,默认的几个成品插件就已经可以够用的了。
Prometheus本身自带了现成的图形成型界面,虽然最终肯定不能和grafana效果相比,但是这种自带图形形成图可以大大帮助运维做测试。
大多数市面上的开源监控,采样也就能精确到半分钟或一分钟的程度,但是Prometheus理论上可以达到秒采集,而且可以自行定制频率(不过强大的同时,不太建议细致到这个程度,因为会产生大量的数据)。
但是还有一些不足,需要加以改进