文章目录
- 监控流程架构体系
- 监控分类
- 监控发展和技术
- 企业中监控发展阶段
- 通用技术和工具
监控流程架构体系
监控流程架构体系是确保信息系统健康、稳定运行的重要组成部分,它包括监控系统的设计、搭建、数据分析、数据采集、稳定性测试、自动化集成、部署上线以及图形化展示等关键环节。
-
监控系统设计:监控系统设计是整个监控流程的基础,需要考虑系统架构、业务流程、业务种类、监控目标、监控指标、警报阈值、数据存储与分析需求等因素。设计阶段的主要任务是确立一个清晰的监控目标,选择合适的技术栈和工具,以及设计一个可扩展、高效的数据处理流程。
-
监控系统搭建:根据设计阶段的规划,选择合适的监控工具和技术(如Prometheus、Grafana、Elasticsearch等),搭建监控系统的基础架构。搭建流程可分为:单点服务端的搭建、单点客户端的部署、单点客户端服务器测试、采集程序单点部署、采集程序批量部署、监控服务端HA/cloud、监控数据图形化搭建、报警系统测试、报警规则测试、监控+报警联合测试、正式上线监控
-
监控数据分析/算法:监控数据分析是将收集到的数据转化为有用信息的过程,涉及到数据清洗、聚合、分析等步骤。使用算法(如异常检测、时间序列分析等)对监控数据进行处理,以识别潜在的问题和趋势。
- 监控数据的采集其实属于最基本的最小监控单位数据采集,例如,采集CPU的七种等待状态参数,采集用户每秒访问请求量QPS,对于这些采集属于“基本单位“的数据采集
- 监控的数据分析和算法非常依赖运维架构师对Linux操作系统的各种底层知识的掌握
-
数据采集编写:数据采集是监控系统的关键组成部分,需要开发或配置监控代理来收集系统、应用和服务的运行数据。可选用的脚本类型
- shell:运维的入门脚本,任何和性能/后台/界面无关的逻辑都可以实现最快速的开发(开发速度最快难度最低)
- python:各种扩展功能扩展库功能丰富,伴随各种程序的展示+开发框架(如django)可以实现快速的中高档次的平台逻辑开发(火爆)
- awk:在文本和标准输出处理上有很大的优势,结合shell脚本或者独立都可以使用。
- lua:多用于nginx的模块结合(较新的语言)
- php:老牌开发语言,在大型互联网开发中,在运维中工具开发依赖PHP
- perl:对文本处理最快的脚本语言(代码可读性不强)
- go:在各种后端服务逻辑的编写上开发速度快
- 数据采集形式:
- 一次性采集:开发逻辑简单、稳定性好,实现较容易,不容易出现性能瓶颈;不够智能、不准确、不直观
- 后台式采集:数据准确性高,采集密度精细,管理方便;开发周期长,难度大,容易出现内存泄漏,僵尸进程,性能瓶颈等问题
- 接式采集:以后台进程运行,但是采集不能独立,跟服务器关联以桥接方式收集采集数据。例如:NRPE for nagios
- 监控稳定测试:监控系统搭建完成后,需要对其进行全面的稳定性和性能测试,以确保监控系统在各种压力和故障情况下都能正常工作。测试内容可能包括数据采集的准确性、系统的处理能力、警报机制的响应时间等。
- 监控自动化集成:为了提高监控效率,需要将监控系统与CI/CD流程、告警通知系统(如Slack、Email)、票据系统等工具进行集成。自动化集成可以加快故障响应时间,提高系统的整体响应能力。
- 监控部署上线:在确保监控系统经过充分测试并且与其他系统集成后,将监控系统部署到生产环境。需要考虑监控系统的可用性、扩展性和安全性,确保监控系统的稳定运行。
- 监控图形化工作:图形化展示是监控系统的重要组成部分,将复杂的监控数据以直观的方式展示给用户。使用图表、仪表盘和地图等可视化工具(如Grafana)来展示实时数据、趋势分析和警报状态,帮助运维人员快速识别问题所在。
监控分类
- 监控分类(大类):业务级别监控、系统级别监控、网络监控、程序代码监控、日志监控、用户行为分析监控、其他种类监控
- 细小分类,例如:
- 业务监控:包含用户访问QPS,DAU日活,访问状态,业务接口,产品转化率,充值额度,用户投诉等等
- 系统监控:跟操作系统相关的基本监控项,CPU、内存、硬盘、IO、TCP链接、流量等等
- 网络监控:例如:丢包率,延迟等等
- 日志监控:往往单独设计和搭建,全部种类的日志都有需要采集·
- 程序监控:需要和开发人员配合,程序中嵌入各种接口直接获取数据或者特质的日志格式
监控发展和技术
企业中监控发展阶段
- 早期企业:无监控,基本是人工查看服务器
- 中前期企业:半自动脚本监控,利用shell脚本这种类似的形式,做简单的监控脚本。循环登陆机器查看状态,人工记录,无报警,无自动化,无监控图形
- 中期企业:自动化程序、脚本、软件、监控脚本更新换代开始使用各种开源非开源软件程序进行监控的搭建和开发;监控形成图形化,加入报警系统,有一定的监控自动化实现,监控开始逐步成型,但仍然缺乏精确度和稳定程度报警的精细度
- 中后期企业:集群式监控,各种外援监控方案,监控开始自成体系加入各种自动化;除去自身开发和搭建监控系统外,还会大量使用各种外围监控(各种商品监控,例如云计算监控监控宝友盟等等)。
- 监控发展出内监控,外监控。内监控是企业自己搭建的自用监控;外监控是使用外援的商业监控产品,往往对产品的最外层接口和用户行为进行更宏观的监控
- 未来的监控:监控准确性,真实性;监控高度集成,自动化无人值守;监控成本的日益降低,监控和CMDB的集成化以及自愈系统的发展
通用技术和工具
- 脚本监控(使用原始脚本运行的形式采集和监控)
- 开源、非开源工具监控:Nagios、Cacti、icinga、Zabbix、Ntop、prometheus、
- 报警系统:Pagerduty、自建语音报警系统、自建邮件系统、自建短信通知、各种商业报警产品