Linux监控系统方案(如何做好监控这件事)

2018年10月17日15:07:32 16 16,517 views
摘要

通过本人,让您整体了解监控是个什么东西? 如何做好监控,成体系介绍监控的各种套路,轻松愉快成为高大上的监控大师。

一、监控简介

作为运维、架构师乃至全公司,都离不开监控,监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。
目前业界有很多不错的开源产品可供选择。选择一款开源的监控系统,是一个省时省力,效率最高的方案。当然对监控不是很明白的朋友们,看了以下文章可能会对监控整个体系有比较深刻的认识。
传送门:
Zabbix 监控Nginx
Zabbix 监控PHP-FPM
Zabbix 监控Tomcat
Zabbix 监控MySQL
Zabbix 监控Redis
Zabbix 监控TCP状态
Zabbix 邮件报警
Zabbix 微信报警

作者简介:

鄙人:邱月涛,江湖人称《逗哥》,逗哥架构师之路系列博客,主要是关注互联网以及分享IT运维工作经验的个人博客,主要涵盖了基础运维、开源软件优化之路,数据库,监控报警、生产实战、Python、致力于实现自动化运维,Devops实践者,总结工作经验,帮助各位脱坑的实战经验。我的博客宗旨:把最实用的经验,分享给最需要的读者,希望每一位来访的朋友都能有所收获!

"学习讨论群":895107198  "→_→" 点击右边进群

感谢赵班长的传教,还有徐师哥,才有了此篇文章的诞生。
本文成体系的介绍了监控的知识体系,如果您需要学习 Zabbix相关文章,请点击。

二、监控基础介绍

2.1 监控目的

监控的重要性以及监控的目标
当然每个人所在的行业不同、理解也不同,但监控是需要站在业务角度去考虑,而不是针对某个监控技术的使用。
Linux监控系统方案(如何做好监控这件事)


7*24 实时监控:实际上是对系统不间断的实时监控(这就是监控) 实时反馈系统状态:我们监控某个硬件、或者某个系统,都是需要能实时看到当前系统的状态,是正常、异常、或者故障 保证服务安全可靠:我们监控的目的就是要保证系统、服务、业务正常运行 保证业务持续稳定运行:如果我们的监控做得很完善,即使出现故障,能第一时间接收到故障报警,在第一时间处理解决,从而保证业务持续性的稳定运行。

2.2 监控方法?

通过监控的目的,我们反推监控的重要性、以及监控的目的,那么下面我们需要了解下监控有哪些方法。
Linux监控系统方案(如何做好监控这件事)

了解监控对象:我们要监控的对象你是否了解呢?比如CPU到底是如何工作的? 
监控指标说明:我们要监控这个东西的什么属性?比如CPU的使用率、负载、用户态、内核态、上下文切换。 
报警阈值设置:怎么样才算是故障,要报警呢?比如CPU的负载到底多少算高,用户态、内核态分别跑多少算高? 
故障处理流程:收到了故障报警,那么我们怎么处理呢?有什么更高效的处理流程吗?

2.3 监控核心步骤

我们了解了监控的方法、监控对象、性能指标、报警阈值定义、以及故障处理流程几步骤,当然我们更需要知道监控的核心步骤是什么
Linux监控系统方案(如何做好监控这件事)

1.发现问题:当系统发生故障报警,我们会收到故障报警的信息 
2.定位问题:故障邮件一般都会写某某主机故障、具体故障的内容,我们需要对报警内容进行分析,比如一台服务器连不上:我们就需要考虑是网络问题、还是负载太高导致长时间无法连接,又或者某开发触发了防火墙禁止的相关策略等等,我们就需要去分析故障具体原因。 
3.跟踪解决:当然我们了解到故障的原因后,就需要通过故障解决的优先级去解决该故障。(一般我们分为A\B\C\D ) 
4.总结问题:当我们解决完重大故障后,需要对故障原因以及防范进行总结归纳,避免以后重复出现。

2.4 监控流程

通过上面的核心步骤,我们就知道监控的大方向,那么到底是通过怎样的流程进行的呢?我们下面详细说明;
已zabbix为例,我们就来聊聊,它的整个监控流程:
Linux监控系统方案(如何做好监控这件事)

采集信息: Zabbix通过SNMP、Agent、ICMP、SSH、IPMI等对系统进行数据采集 
存储数据: Zabbix存储在MySQL上,也可以存储在其他数据库服务 
分析问题: 当我们事后需要复盘分析故障时,zabbix能给我们提供图形以及时间等相关信息,方面我们确定故障所在。 
数据展示: web界面展示、(移动APP、java_php开发一个web界面也可以) 
监控报警:电话报警、邮件报警、微信报警、短信报警、报警升级机制等(无论什么报警都可以) 
跟踪处理:当接收到报警,我们需要根据故障的级别进行处理,比如:重要紧急、重要不紧急,等。根据故障的级别,配合相关的人员进行快速处理。

三、监控指标汇总

我们上面了解了监控方法、目标、流程、也了解了监控有哪些工具,可能有人会疑惑,我们具体要监控写什么东西,那么我在这里进行了分类整理:

硬件监控
系统监控 
应用监控 
网络监控 
流量分析 
日志监控 
安全监控 
API监控 
性能监控 
业务监控 

3.1 硬件监控

一般我们在IDC机房多见,比如机房巡检,空调温湿度、机柜的电量、监控摄像、硬盘、机器运行状态,异常时一般都会有红色指示灯,或报警声音等等。
Linux监控系统方案(如何做好监控这件事)
linux 通过IPMI工具,可以监控这些信息

[root@localhost ~]# yum install OpenIPMI ipmitool -y
[root@localhost ~]# rpm -qa OpenIPMI ipmitool
ipmitool-1.8.13-8.el7_1.x86_64
OpenIPMI-2.0.19-11.el7.x86_64  ##安装IPMI工具
[root@localhost ~]# systemctl start ipmi  #启动
[root@localhost ~]# ipmitool --help   ##查看使用方法

如果坚果的是交换机或者路由器,可以参考如下文章:
zabbix 监控-华为路由器(ASG2100

3.2 系统监控

系统监控是监控体系的基础,对系统资源的使用情况进行监控。
Linux监控系统方案(如何做好监控这件事)

用户态与内核态的说明

内核态(Kernel Mode)与用户态(User Mode)

内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序
用户态: 只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取

为什么要有用户态和内核态
由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 -- 用户态 和 内核态
至于如何切换,什么时候需要切换,请大家自行百度,还有关于系统调用的文章,也可参考。

CPU有几个重要的概念:上下文切换、运行队列和使用率。

这也是我们CPU监控的几个重点指标。
通常情况,每个处理器的运行队列不要高于3,CPU 利用率中用“户态/内核态”比例维持在70/30,空闲状态维持在50%,上下文切换要根据系统繁忙程度来综合考量。

针对CPU常用的工具有:htop、top、vmstat、mpstat、dstat、glances

zabbix提供系统监控模板:Zabbix Agent Interface
CPU整体状态 (图一)
Linux监控系统方案(如何做好监控这件事)
上下文切换 (图2)
Linux监控系统方案(如何做好监控这件事)
负载状态 (图3)
Linux监控系统方案(如何做好监控这件事)
内存使用率(图4)
内存:通常我们需要监控内存的使用率、SWAP使用率、同时可以通过zabbix描绘内存使用率的曲线图形发现某服务内存溢出等。
Linux监控系统方案(如何做好监控这件事)
针对内存常用的工具有: free、top、vmstat、glances
Linux监控系统方案(如何做好监控这件事)

3.3 应用监控

把硬件监控和系统监控研究明白后,我们进一步操作是需要登陆到服务器上查看服务器运行了哪些服务,都需要监控起来。
应用服务监控也是监控体系中比较重要的内容,例如:
LVS、Haproxy、Docker、Nginx、PHP、Memcached、Redis、MySQL、Rabbitmq等等,相关的服务都需要使用zabbix监控起来。
Nginx 7种状态监控
Linux监控系统方案(如何做好监控这件事)
PHP-FPM_status
Linux监控系统方案(如何做好监控这件事)
Redis_status
Linux监控系统方案(如何做好监控这件事)

3.4 网络监控

监控平台必须有网络监控,尤其是针对有多个机房的场景,各个机房之间的网络状态,我们需要借助于网络监控工具Smokeping。
Smokeping 是rrdtool的作者Tobi Oetiker的作品,是用Perl写的,主要是监视网络性能,www 服务器性能,dns查询性能等,使用rrdtool绘图,而且支持分布式,直接从多个agent进行数据的汇总。
同时,由于自己监控点比较少,还可以借助很多商业的监控工具,比如监控宝、听云、基调、博瑞等。同时这些服务提供商还可以帮助你监控CDN的状态。
Linux监控系统方案(如何做好监控这件事)

3.5 流量分析

网站流量分析对于运维人员来说,更是一门必须掌握的知识了。比如对于一家互联网金融公司来说:
通过借贷用户的来源的统计和分析,可以了解我们线上产品的销售及吸引力。
可以区分不同地区的访问人数、客户端类型,访问最多的url等。
一个叫piwik的开源分析工具可以参考使用,但目前我没有在用了,一直使用云上日志分析,或elk进行数据可视化。
当然公有云也有很好的案例,比如CDN,或者WAF防火墙等等,还有站长工具第三方的检测也可参考
Linux监控系统方案(如何做好监控这件事)

3.6 日志监控

通常情况下,随着系统的运行,操作系统会产生系统日志,应用程序会产生应用程序的访问日志、错误日志,运行日志,网络日志,我们可以使用ELK来进行日志监控。
对于日志监控来说,最见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:
logstash(收集) + elasticsearch(存储+搜索) + kibana(展示)
深入学习:ELKstack文章
Linux监控系统方案(如何做好监控这件事)
(ELK日志展示)
当然也可以通过Zabbix过滤错误日志来进行告警
Linux监控系统方案(如何做好监控这件事)

3.7 安全监控

安全监控不建议使用开源产品,因为本身漏洞无法实施修复,会影响业务,所以花适当的钱,做有意义的事,很重要,我们目前使用iptables + 阿里云安全组+ 微信验证码+秘钥+堡垒机 五重安全认证,来保证业务的登陆安全,其它安全还有 安骑士、云盾、WAF、CDN 等等安全产品。

3.8 API监控

由于API变得越来越重要,很显然我们也需要这样的数据来分辨我们提供的 API是否能够正常运作。
监控API接口GET、POST、PUT、DELETE、HEAD、OPTIONS的请求
可用性、正确性、响应时间为三大重性能指标
Linux监控系统方案(如何做好监控这件事)
Linux监控系统方案(如何做好监控这件事)

3.9 性能监控

全面监控网页性能,DNS响应时间、HTTP建立连接时间、页面性能指数、响应时间、可用率、元素大小等!

还有公有云也有 云监控 监控大盘可以显示各项数据
Linux监控系统方案(如何做好监控这件事)

3.10 业务监控

没有业务指标监控的监控平台,不是一个完善的监控平台,通常在我们的监控系统中,必须将我们重要的业务指标进行监控,并设置阈值进行告警通知。比如互联网金融行业:
每分钟的交易额?
每天的交易笔数?
每天投资人的分类?
投资人每天的投资时间分类?
活动期间产生的借贷金额?
用户投资地点分类?
等等 重要指标都可以加入zabbix上,然后通过screen展示。
注:由于业务监控图表,涉及到隐私的数据太多,就详细不截图,简单发2张。
Linux监控系统方案(如何做好监控这件事)

四、监控工具汇总

如何选择一款适合公司的监控工具呢?其实不难,下面我就为大家介绍几款简单使用的。
Linux监控系统方案(如何做好监控这件事)

4.1 开源监控工具:(免费、功能齐全、简单实用)

"Zabbix是一个分布式监控系统",支持多种采集方式和采集客户端,有专用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统所不能比的。相对来说,它的总体功能做的非常优秀。 
从以上各种监控系统的对比来看,Zabbix都是具有优势的,其丰富的功能、可扩展的能力、二次开发的能力和简单易用的特点,读者只要稍加学习,即可构建自己的监控系统。

"小米的监控系统:open-falcon"。open-falcon的目标是做最开放、最好用的互联网企业级监控产品。
"Cacti"(英文含义为仙人掌)是一套基于PHP、MySQL、SNMP和RRDtool开发的网络流量监测图形分析工具,它通过snmpget来获取数据使用RRDtool绘图,但使用者无须了解RRDtool复杂的参数。提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与LDAP结合进行用户认证,同时也能自定义模板。在历史数据展示监控方面,其功能相当不错。 
Cacti通过添加模板,使不同设备的监控添加具有可复用性,并且具备可自定义绘图的功能,具有强大的运算能力(数据的叠加功能)

"Nagios"是一个企业级监控系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机状态以及服务,同时提供异常告警通知功能等。 
Nagios可运行在Linux和UNIX平台上。同时提供Web界面,以方便系统管理人员查看网络状态、各种系统问题、以及系统相关日志等 
Nagios的功能侧重于监控服务的可用性,能根据监控指标状态触发告警。 
目前Nagios也占领了一定的市场份额,不过Nagios并没有与时俱进,已经不能满足于多变的监控需求,架构的扩展性和使用的便捷性有待增强,其高级功能集成在商业版Nagios XI中。

"Smokeping"主要用于监视网络性能,包括常规的ping、www服务器性能、DNS查询性能、SSH性能等。底层也是用RRDtool做支持,特点是绘制图非常漂亮,网络丢包和延迟用颜色和阴影来标示,支持将多张图叠放在一起,其作者还开发了MRTG和RRDtll等工具。 
Smokeping的站点为:http://tobi.oetiker.cn/hp

"开源监控系统OpenTSDB"Hbase存储所有时序(无须采样)的数据,来构建一个分布式、可伸缩的时间序列数据库。它支持秒级数据采集,支持永久存储,可以做容量规划,并很容易地接入到现有的告警系统里。 
OpenTSDB可以从大规模的集群(包括集群中的网络设备、操作系统、应用程序)中获取相应的采集指标,并进行存储、索引和服务,从而使这些数据更容易让人理解,如Web化、图形化等。

4.2 三方监控:

现在市场上有很多不错的第三方监控,比如:监控宝、公有云监控、听云、还有很多云厂商自带监控,但是在这里我们不打算着重介绍,如果想了解三方监控可自行上官网咨询。(避免说广告植入)

五、监控报警

故障报警通知的方式有很多种,当然我们最常用的还是短信,邮件
Linux监控系统方案(如何做好监控这件事)
邮件报警案例
Linux监控系统方案(如何做好监控这件事)
短信报警
Linux监控系统方案(如何做好监控这件事)

六、报警处理、故障自愈

一般服务出现异常,我们会收到报警,并且根据等级进行划分,因为运维是7*24服务的,所以我们必须要未雨绸缪,在一些小问题上,要做到故障自愈,否则工作量是非常大的。
如下是故障处理流程:【要原图可联系我】
Linux监控系统方案(如何做好监控这件事)
故障自愈,木目前我都已shell脚本形式,进行判断
详情参看 Shell相关文章

七、面试相关问题

1、原理方面,一定要深入理解
2、监控的类型:(硬件、系统、网络、应用、业务、安全、日志、web、流量、可视化、自动化、报警处理等等)
3、zabbix 运行模式有哪些? 优缺点
4、zabbix proxy 了解am? 如何做?
5、还有就是多实践、以上就是我对监控的理解,希望大家多多留言,关注Zabbix相关文章,有问题加群沟通,没事都来加群啊。。。。。。。。,看右边 点击加群

  • QQ精品交流群
  • weinxin
  • 微信公众号
  • weinxin
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:16   其中:访客  9   博主  7

    • avatar 曲黎敏 1

      棒棒哒😜😜

      • avatar 农高会 0

        厉害👍 :grin: :grin:

        • avatar 落第 1

          学习😜😜😜

          • avatar 鬼吹灯 0

            真实可靠,好细致。 :mad: :lol: :lol: :lol: :lol: :mad: :mad:

              • avatar admin Admin

                @鬼吹灯 感谢支持,哈哈,欢迎提出宝贵建议

              • avatar 广告语 1

                监控微信报警如何做?

                  • avatar admin Admin

                    @广告语 创建个公众号,然后获取api,调用接口就可以了,后续我在写一篇,专门说明微信报警,请关注。

                  • avatar 爱学习 2

                    我也想写博客,但是坚持不下去,博主传授下经验。

                      • avatar 爱学习 2

                        @爱学习 博主这个叫什么? WordPress

                          • avatar admin Admin

                            @爱学习 我这个是知更鸟的主题,环境是lnmp+wordprss,有需要可以联系我,帮你弄啊,或者扫描加群

                        • avatar 撕心 1

                          你这是linux下的监控? 可以监控Windows?

                            • avatar admin Admin

                              @撕心 zabbix 很全面 linux 与windows都可以监控,具体可以看我的博客,zabbix系列

                            • avatar dfs 0

                              太厉害了,希望有一天能达到博主的水平。

                                • avatar admin Admin

                                  @dfs 非常感谢,加QQ群大家一起努力