监控系统,是通过持续信息采集、收敛、分析来发现问题,并对解决问题提供数据依赖的一种科学技术。通过监控技术可以实现对故障进行 “事前预警,事后追踪”。
监控,是运维工作中的重要技术,如果没有监控,运维人员就相当于盲人摸象,发现问题会变得很被动;监控也是整个产品生命周期中最重要的一环,如果没有监控,产品中存在的问题就只能等用户反馈(客诉),严重降低用户体验。
目前,互联网行业的监控技术已经很成熟,业界有很多不错的开源产品可供选择,运维在开展监控工作时,选择一款开源监控系统,是一个省时省力,效率最高的方案。
监控的目的是通过采集准确的监控指标、配置合理的告警机制,提前或者尽早发现问题,并做出响应、解决问题,进而保证产品的稳定性,提升用户体验。
具体可分为以下几方面:
在了监控的重要性及监控目的之后,我们来聊聊到底如何做监控。
监控指标是立足于监控对象至上的,如何确定监控指标?
监控指标,即监控对象相关的关键性指标。
那么,哪些算是关键性指标呢?
这个仁者见仁智者见智,在我看来,对服务稳定运行带来严重影响的才算关键指标。
那么,怎么算严重影响呢?
这个问题可以通过用户体验来反推,哪些问题能带来用户体验的不适?比如,请求响应慢、请求错误、请求报异常等等。
在我看来,站在用户体验的角度来反推监控指标是一个不错的办法。
以下监控指标仅供参考。
监控对象监控指标硬件CPU温度、主板温度、物理磁盘、磁盘阵列等系统CPU负载、磁盘使用率、内存使用率、网络带宽等应用状态(端口)、进程、应用内部指标(如MySQL、redis连接数、内存使用)等业务API、状态码、QPS等日志访问日志、错误日志、运行日志、网络日志等
确定监控指标后,遍可以奔着高效、可用的原则来选择监控工具了。
目前业界监控工具很多,常用的开源监控工具:Zabbix、Open-falcon、Prometheus、Grafana(图)等。
相关的文章太多了,在此不做赘述,想要学习推荐官方网站。
了解了监控指标、监控工具之后,接下来就需要确定一个合理、可行的监控方案了。如何确定监控方案?
监控系统不可能做的尽善尽美,真正想把监控做的尽量完善,依靠开源软件都很难满足。有条件的公司会根据自己的业务需求开发自己的监控系统,如小米的Open-falcon。
原文:https://my.oschina.net/adailinux/blog/3158941