监控系列讲座(九)从下到上思考监控架构

3. 从上到下思考整个架构

这里面包含下面几个问题

  • 客户要我们监控什么指标?
  • 客户要求我们的监控做成什么样子?
  • 我们可以监控哪些指标?
  • 监控这些指标需要哪些条件?
  • 使用什么软件能够轻松的实现客户要求
  • 不同的软件如何集成在一起
  • 怎样降低管理的复杂度

3.1. 客户要我们监控什么指标

这里的客户从四个角度来说

  • 业务部门。他们可能只需要某一个,或者某几个业务指标,比如:订单量,页面点击量。一般他们的需求比较明确,但是一般来说,都没有现成的模板可用,都需要额外开发,比如:查询数据库,获得订单数,然后展示出来。
  • 开发部门。他们的要求多而且散,因为他们关心的是整个系统或者整个功能的可用性,而为了实现某个功能,可以需要多个软件,比如:前端的web,后台,数据库都需要监控,而且,他们之前的连通性也需要监控。通常,运维工程师并不是非常熟悉业务,这个时候,最好的方式,就是给他们权限,自己去做。但是,我要说的是,好的运维人员也需要了解业务,就好像好的开发人员要了解系统一样。
  • 运维部门。他们可能更加关心的是具体的某个指标,比如:CPU使用率,内存使用率,网络是否在某个时间段不通,这样有利于定位系统问题。但是,一个问题可能会影响多个维度,比如:网络不通之后,软件和软件通信会中断,如果代码内没有做处理,会导致瞬间有很多session在wait,导致内存或者CPU使用率过高。这个时候,我们可能需要从多个角度去分析问题,这个时候,如果能把有问题的部分都放到一张图来展示的话,就可以非常清晰的看到问题所在。
  • 领导。领导基本都是结果导向的,他们会从上到下的来看待问题,他们更希望一览众山小,一眼看到所有的系统的情况,这个时候,就需要非常清晰的dashboard让领导知道目前的情况。

不通的客户的着眼点是不一样的,所以我们一定要先确定客户,以及他们的关注点。

3.2. 客户要求我们的监控做成什么样子?

我们也要从四个方面来说

  • 展示。客户要看到什么样的图,是饼图还是线图,还是说只要一个数。这个直接影响着我们的查询语句。
  • 报警。什么应该报,什么不应该报,应该报给谁,通过什么报(微信,邮件)。
  • 附加功能。比如我们刚才提到的,如果某个系统出了问题,我们只要点击红色的报警就可以直接定位到问题所在。
  • 流程。我们报警之后谁来处理,谁来回复,如果出现问题,我们是应该先提change,还是先解决问题。

满足客户的要求是我们工作的重点,一定要先确定工作范围,在完成指定的工作后再发挥,否则适得其反。

3.3. 我们可以监控哪些指标

我们通常会使用一些软件自带的模板或者别人开发好的模板作为基础做一些定制化修改。当然,如果有开发能力的话,是完全可以做成自己想要的样子。但是我们使用开源软件的原因就是减少开发成本,我们只需要做一些脚本级别的开发就可以满足客户需求。

我们后面会对一些常见指标进行详细说明。

3.4. 监控这些指标需要哪些条件

这里说的条件,主要是根据环境的不同而需要预先考虑的问题,比如:查询数据库的用户名和密码,为了访问某个特定指标,需要在网络上开端口。

  • 从软件角度考虑。被监控的目标是否会暴露指标,或者API供外部软件去采集。如果没有暴露指标,我们可不可以在目标设备上安装一些探针去采集指标。
  • 从环境角度考虑。这些指标可以不可以被送达到服务器端,其实这个更多的是网络的因素。
  • 从合规角度考虑。因为有些情况下,还要符合安全或者合规的要求。比如:在中国的法律中要求我们的信息是不可以送到国外去的;或者一些等保要求等等。而最多的还是安全传输,这就涉及到了SSL证书,就是签署证书的机构和证书有效期问题。

3.5. 使用什么软件能够轻松的实现客户要求

我们还是比较提倡使用开源工具,如果一定要花钱,就去买服务好了。这个时候,我们架构师的水平就完全体现了出来,见多识广的人总是有非常好的建议,踩过坑的人才能更好的避开我们可能会遇到的问题。

如果有条件的公司建议自己开发监控系统,因为监控系统和资产管理系统可以作为一个整体的平台集成在一起,或者使用开源软件作为框架,然后自己定制一下,这样就能不用重复的造轮子了。

3.6. 不同的软件如何集成在一起

google一下两个软件,会有很多的解决方案。千万不要用baidu或者bing,查出来的基本没有用。然后去官方文档确认,越成熟的软件兼容性越好,但是还是请大家要上手试一试,毕竟没有软件是万能的,好不好,坑不坑,试过才知道。

3.7. 怎样降低管理的复杂度

这里有两个方面的复杂度

  • 一个是管理端的,比如数据库的管理,后端监控服务的管理,包括扩展节点,数据备份,权限管理等等。
  • 另外一个是客户端的,比如那些需要安装agent的虚拟机或者物理机。想想一下,在一个拥有上万个agent的环境中,如果有一天安全部门要求运维部门每个月都要升级这些agent,那么如果没有合理的管理方式,那么这将会是灾难性的工作。

我们降低复杂度也有两个方面

  • 一个是管理软件的复杂度,比如升级,安装,删除等等。这就需要我们自动化的去做这些事情。我们通常会使用一些自动化工具,比如ansible或者镜像注入等方式来管理agent。

  • 另外一个是流程的复杂度,比如申请权限等等,我们通常会把权限交给ad来集成,这样就不用独立维护一套认证系统。即使是本地认证,在大规模应用的情况下还是非常难以维护。
    为了方便大家学习,请大家加我的微信,我会把大家加到微信群(微信群的二维码会经常变)和qq群821119334,问题答案云原生技术课堂,有问题可以一起讨论

  • 个人微信
    640.jpeg

  • 腾讯课堂
    640-20200506145837072.jpeg

  • 微信公众号
    640-20200506145842007.jpeg

  • 专题讲座

2020 CKA考试视频 真题讲解 https://www.bilibili.com/video/BV167411K7hp

2020 CKA考试指南 https://www.bilibili.com/video/BV1sa4y1479B/

2020年 5月CKA考试真题 https://mp.weixin.qq.com/s/W9V4cpYeBhodol6AYtbxIA

你可能感兴趣的:(监控系列讲座(九)从下到上思考监控架构)