关于监控—我们只是讲道理
前言
监控系统,是通过持续信息采集、收敛、分析来发现问题,并对解决问题提供数据依赖的一种科学技术。通过监控技术可以实现对故障进行 “事前预警,事后追踪”。
监控,是运维工作中的重要技术,如果没有监控,运维人员就相当于盲人摸象,发现问题会变得很被动;监控也是整个产品生命周期中最重要的一环,如果没有监控,产品中存在的问题就只能等用户反馈(客诉),严重降低用户体验。
目前,互联网行业的监控技术已经很成熟,业界有很多不错的开源产品可供选择,运维在开展监控工作时,选择一款开源监控系统,是一个省时省力,效率最高的方案。
监控目的
监控的目的是通过采集准确的监控指标、配置合理的告警机制,提前或者尽早发现问题,并做出响应、解决问题,进而保证产品的稳定性,提升用户体验。
具体可分为以下几方面:
- 对系统持续实时监控:指硬件系统,如服务器、路由器、交换机等;
- 对应用持续实时监控:指业务运行依赖的基础服务,如数据库、中间件等;
- 对业务持续实时监控:指产品运行情况,如状态码、接口响应时间、异常信息等。
监控方法
在了监控的重要性及监控目的之后,我们来聊聊到底如何做监控。
- 确定监控对象:明确是系统监控,还是应用监控,或者是业务监控;
- 确定监控指标:确定监控对象之后,需要明确具体监控指标,如果监控对象为服务器,那么监控指标有CPU、磁盘、内存等;
- 确定告警格式:监控的目的之一就是发出告警,所以,告警信息的格式要做到统一、简洁明了;
- 确定告警阈值:泛滥的告警就像”狼来了“,所以要设定合理的阈值,确保告警准确、有效;
- 确定负责人:确定监控指标后,明确告警负责人,可以让运维或测试人员更快的将事件分发到具体的业务负责人,以提升故障处理效率,同时降低对其他人的打扰;
- 确定事件处理流程:对于告警,“事事有回音,件件有着落” 很重要,让每个事件构成一个闭环。
监控指标
监控指标是立足于监控对象至上的,如何确定监控指标?
监控指标,即监控对象相关的关键性指标。
那么,哪些算是关键性指标呢?
这个仁者见仁智者见智,在我看来,对服务稳定运行带来严重影响的才算关键指标。
那么,怎么算严重影响呢?
这个问题可以通过用户体验来反推,哪些问题能带来用户体验的不适?比如,请求响应慢、请求错误、请求报异常等等。
在我看来,通过用户体验来反推监控指标是一个不错的办法。
常规监控指标
以下监控指标仅供参考。
监控对象 | 监控指标 |
---|---|
硬件 | CPU温度、主板温度、物理磁盘、磁盘阵列等 |
系统 | CPU负载、磁盘使用率、内存使用率、网络带宽等 |
应用 | 状态(端口)、进程、应用内部指标(如MySQL、redis连接数、内存使用)等 |
业务 | API、状态码、QPS等 |
日志 | 访问日志、错误日志、运行日志、网络日志等 |
监控工具
确定监控指标后,遍可以奔着高效、可用的原则来选择监控工具了。
目前业界监控工具很多,常用的开源监控工具:Zabbix、Open-falcon、Prometheus、Grafana(图)等。
相关的文章太多了,在此不做赘述,想要学习推荐官方网站。
监控方案
了解了监控指标、监控工具之后,接下来就需要确定一个合理、可行的监控方案了。如何确定监控方案?
- 首先,要了解公司的技术栈;
- 然后,对涉及到的各种组件进行全面了解;
- 其次,确定详细的监控指标,目前各种应用的官网基本都有提供监控相关的metrics;
- 最后,选定适应当前需求的监控工具、图形展示、告警方式等等。
总结
监控系统不可能做的尽善尽美,真正想把监控做的尽量完善,依靠开源软件都很难满足。有条件的公司会根据自己的业务需求开发自己的监控系统,如小米的Open-falcon。
监控系统知识体系很庞大,在此整理九牛之一毛,只是提供一点做事的思路。(不喜勿喷,谢谢!)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何让研发团队保持敏捷并不断进步?
正如 迭代、衡量和改进 是创造优秀软件的核心一样,团队及其工作方式也很重要。一个不尝试新事物的团队便会停滞不前,其团队工作方式也会成为“传统”。相反,一个乐于尝试新事物,摒弃传统并养成新习惯的团队会更有效率,并会在工作中获取更多快乐。 目前,绝大多数研发团队都在使用敏捷方法。敏捷方法的优点在于, 它强调个人的互动高于严格的流程方法。 团队工作的重点在于完成事务的人,而不是团队规定的具体方法,因为流程方法可以随时进行调整并改进。另外,团队应该允许个人使用其习惯的做事方法。这样一来,团队也可以试着进行改变,这也是持续改进的重要所在。 建立更有效率的团队 如果团队曾经进行过回顾会议,那么就会了解到:什么事情是需要保持的,什么事情是需要停止的,什么事情是需要开始做的,了解这些会使整个团队运转得更好。 但是有时候,仅仅使用回顾会议还不够,团队需要更进一步的改进。 只对产生问题的地方进行优化调整不会有太大帮助。 正如修复缺陷后并不能得到一个新的功能一样,所以需要尝试更多改进的方式方法。 团队为了追求更高的效率,就应该尝试新的工作方式。例如:整个迭代都使用结对编程;一段时间内放弃协作工具,只使用纸制...
- 下一篇
Javascript中的异步编程
Javascript最开始是用于浏览器中的前端编程语言。Javascript是单线程的,为了能及时响应用户操作,javascript对耗时操作(如Ajax请求、本地文件读取等)的处理是异步进行的,也即是所谓的异步编程。除了快速响应用户操作之外,另外一个让javascript采用异步方式的原因是,程序无法预知用户会进行哪些操作。比如说程序无法提前知道用户是点“取消”按钮还是“确定”按钮。所以,Javascript采用了事件注册的方式来处理这个问题。在程序编写时,可以给用户点击“取消”按钮和“确认”按钮注册不同的回调函数,这样当用户点击不同的按钮时,不同的回调函数会被执行。本文从回调函数开始,介绍了Promise、async/await几种Javascript主要的异步编程方式。 异步编程和回调函数 无论是Ajax请求,还是事件处理,Javascript都是通过回调函数来完成的。谈及异步编程和回调函数,可以回想一下操作系统中的中断及中断处理程序。由于CPU的速度比外设快出许多,为了提高CPU的处理效率,计算机系统引入了中断的概念,外设在读写数据的时候,CPU可以忙别的事情,等到外设读写完数...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7设置SWAP分区,小内存服务器的救世主