《一篇文章全面了解监控知识体系》要点:
本文介绍了一篇文章全面了解监控知识体系,希望对您有用。如果有疑问,可以联系我们。
作者简介
徐亮伟 江湖人称标杆徐,曾负责大规模集群架构自动化运维工作.擅长自动化运维,并且在分布式、Python自动化、云计算虚拟化等领域有较深入研究.个人博客:徐亮伟架构师之路;
前言
监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题.目前业界有很多不错的开源产品可供选择.选择一款开源的监控系统,是一个省时省力,效率最高的方案.当然对监控不是很明白的朋友们,看了以下文章可能会对监控整个体系有比较深刻的认识.
我们先来了解什么是监控、监控的重要性以及监控的目标,当然每个人所在的行业不同、公司不同、业务不同、岗位不同,对监控的理解也不同,但是我们需要注意,监控是需要站在公司的业务角度去考虑,而不是针对某个监控技术的使用.
既然我们了解到了监控的重要性、以及监控的目的,那么下面我们需要了解下监控有哪些方法.
我们了解了监控的方法、监控对象、性能指标、报警阈值定义、以及故障处理流程几步骤,当然我们更需要知道监控的核心是什么?
下面我们需要选择一款合适公司业务的监控工具进行监控,这里我对监控工具进行了简单的分类
老牌监控工具:
王牌监控工具:
三方监控工具:
现在市场上有很多不错的第三方监控,比如:监控宝、监控易、听云、还有很多云厂商自带监控,但是在这里我们不打算着重介绍,如果想了解三方监控可自行上官网咨询.(避免说广告植入)
上面介绍了这么多,那么到底选择什么监控工具最合适呢,我这里推荐几款开源监控工具:Zabbix、Open-Falcon、LEPUS 天兔(专用于监控数据库).
但是本文还是基于 Zabbix 来构建整个监控体系生态圈.
那么下面我们就来聊聊,Zabbix 的整个流程:
我们上面了解了监控方法、目标、流程、也了解了监控有哪些工具,可能有人会疑惑,我们具体要监控些什么东西?那么我在这里进行了分类整理:
早期我们通过机房巡检的方式,查看硬件设备灯光闪烁情况判断是否故障,这样非常浪费人力,并且是重复性无技术含量的工作,大家懂得.
当然我们现在可以通过IPMI对硬件详细情况进行监控,并对 CPU、内存、磁盘、温度、风扇、电压等设置报警阈值(自行对监控报警内容编写合理的报警范围)
IPMI监控硬件服务参考资料
IPMI
中小型企业基本全是 Linux 服务器,那么我们肯定要监控系统资源的使用情况,系统监控是监控体系的基础.
监控主要对象:
CPU 有几个重要的概念:上下文切换、运行队列和使用率.
这也是我们 CPU 监控的几个重点指标.
通常情况,每个处理器的运行队列不要高于3,CPU 利用率中“用户态/内核态”比例维持在70/30,空闲状态维持在50%,上下文切换要根据系统繁忙程度来综合考量.
针对 CPU 常用的工具有:htop、top、vmstat、mpstat、dstat、glances
Zabbix 提供系统监控模板:Zabbix Agent Interface
CPU整体状态
上下文切换
负载状态
内存:通常我们需要监控内存的使用率、SWAP 使用率、同时可以通过 zabbix 描绘内存使用率的曲线图形发现某服务内存溢出等.
针对内存常用的工具有: free、top、vmstat、glances
内存使用率
IO 分为磁盘 IO 和网络 IO.除了在做性能调优我们要监控更详细的数据外,那么日常监控,只关注磁盘使用率、磁盘吞吐量、磁盘写入繁忙程度,网络也是监控网卡流量即可.
常用工具有:iostat、iotop、df、iftop、sar、glances
磁盘使用率
磁盘读/写吞吐
网卡进出口流量
TCP11种状态信息
其它的系统监控还有运行的进程端口、进程数、登陆用户、Open File 等(详细查看 zabbix 自带 OS Linux 模板)
其他相关监控
把硬件监控和系统监控研究明白后,我们进一步操作是需要登陆到服务器上查看服务器运行了哪些服务,都需要监控起来.
应用服务监控也是监控体系中比较重要的内容,例如:LVS、Haproxy、Docker、Nginx、PHP、Memcached、Redis、MySQL、Rabbitmq 等等,相关的服务都需要使用zabbix监控起来
nginx_status
PHP-FPM_status
Redis_status
JVM 监控
笔者之前写过服务监控详细的操作过程,这里就不一一展示了.
Zabbix 提供应用服务监控:Zabbix Agent UserParameter
Zabbix 提供的Java监控:Zabbix JMX Interface
percona 提供 MySQL 数据库监控:percona-monitoring-plulgins
作为一个针对全国用户的电商网站,时刻掌握各地到机房的网络状态也是必须的.
网络监控是我们构建监控平台时必须要考虑的,尤其是针对有多个机房的场景,各个机房之间的网络状态,机房和全国各地的网络状态都是我们需要重点关注的对象,那么如何掌握这些状态信息呢?我们需要借助于网络监控工具 Smokeping.
Smokeping 是 rrdtool 的作者 Tobi Oetiker 的作品,是用 Perl 写的,主要是监视网络性能,www 服务器性能,dns 查询性能等,使用 rrdtool 绘图,而且支持分布式,直接从多个 agent 进行数据的汇总.
同时,由于自己监控点比较少,还可以借助很多商业的监控工具,比如监控宝、听云、基调、博瑞等.同时这些服务提供商还可以帮助你监控 CDN 的状态.
smokeping
监控宝
网站流量分析对于运维人员来说,更是一门必须掌握的知识了.比如对于一家电商公司来说:
通过对订单来源的统计和分析,可以了解我们在某个网站上的广告投入有没有收到预期的效果.
可以区分不同地区的访问人数、甚至商品交易额等.
百度统计、google 分析、站长工具等等,只需要在页面嵌入一个js即可.
但是,数据始终是在对方手中,个性化定制不方便,于是 google 出一个叫 piwik 的开源分析工具
piwik
百度统计
通常情况下,随着系统的运行,操作系统会产生系统日志,应用程序会产生应用程序的访问日志、错误日志、运行日志、网络日志,我们可以使用 ELK 来进行日志监控.
对于日志监控来说,最见的需求就是收集、存储、查询、展示.
开源社区正好有相对应的开源项目: logstash(收集) + elasticsearch(存储+搜索) + kibana(展示)
我们将这三个组合起来的技术称之为 ELK Stack,所以说 ELK Stack 指的是 Elasticsearch、Logstash、Kibana 技术栈的结合.
如果收集了日志信息,那么如果部署更新有异常出现,可以立即在 kibana 上看到.
Elk 日志展示
当然也可以通过Zabbix过滤错误日志来进行告警.
zabbix 日志展示
虽然Linux开源的安全产品不少,比如四层 iptables,七层WEB防护 Nginx+lua 实现 WAF,最后将相关的日志都收至 ELK Stack,通过图形化进行不同的攻击类型展示.但是始终是一件比较耗费时间的事情,并且个人认为效果并不是很好.这个时候我们可以选择接入第三方服务厂商.
某某三方安全
三方厂商提供全面的漏洞库,涵盖服务、后门、数据库、配置检测、CGI、SMTP 等多种类型
全面检测主机、Web 应用漏洞自主挖掘和行业共享相结合第一时间更新 0day 漏洞,杜绝最新安全隐患
由于 API 变得越来越重要,很显然我们也需要这样的数据来分辨我们提供的 API 是否能够正常运作.
监控 API 接口 GET、POST、PUT、DELETE、HEAD、OPTIONS 的请求, 可用性、正确性、响应时间为三大重性能指标
API监控
三方API监控
响应时间
全面监控网页性能,DNS 响应时间、HTTP 建立连接时间、页面性能指数、响应时间、可用率、元素大小等
Zabbix 提供 URL监控:Zabbix Web 监控
Zabbix 站点监控
终端响应时间
第三方监控的监控大盘.各类图表一目了然,全面体现网页性能健康状况.
没有业务指标监控的监控平台,不是一个完善的监控平台,通常在我们的监控系统中,必须将我们重要的业务指标进行监控,并设置阈值进行告警通知.
例如电商行业:
每分钟产生多少订单;
每分钟注册多少用户;
每天有多少活跃用户;
每天有多少推广活动;
推广活动引入多少用户;
推广活动引入多少流量;
推广活动引入多少利润;
等等 重要指标都可以加到 Zabbix 上,然后通过 screen 展示.
注:由于业务监控图表,涉及到隐私的数据太多,就不截图.
故障报警通知的方式有很多种,当然我们最常用的还是短信,邮件
短信报警
邮件报警
一般报警后我们故障如何处理,首先,我们可以通过告警升级机制先自动处理,比如Nginx服务down了,可以设置告警升级自动启动Nginx. 但是如果一般业务出现了严重故障,我们通常根据故障的级别,故障的业务,来指派不同的运维人员进行处理. 当然不同业务形态、不同架构、不同服务可能采用的方式都不同,这个没有一个固定的模式套用.
在运维面试中,常常会被问到监控相关的问题,那么这个问题到底该如何来回答,我针对本文给大家提供了一个简单的回答思路.
真正想做到更完整的监控体系,目前的开源软件,确实无法很好的满足,有条件的公司都开始自己开发自己的监控系统,比如小米开源的Open-Falcon.也有比较好的开源的监控框架如Sensu等,再加上influxdb、grafana可以用来定制符合自己企业的监控平台.
当然我说的还是很简单,经验有限、思路也仅能提供这么多. 以上就是我分享对监控的一些方法和心得.(老鸟勿喷)
文章来自微信公众号:高效运维
转载请注明本页网址:
http://www.vephp.com/jiaocheng/4266.html