服务器能ping通,就说明业务正常吗?不一定。网站可能在返回5xx错误,数据库的连接数可能早已耗尽,某个后台进程也许已经悄悄退出了很久,而机器本身依然“在线”。很多运维事故,恰恰出在“看起来一切正常”的那段时间里。
实时监控和安全防护,常被一句“保障服务器稳定、安全运行”带过。这篇文章想把这句话拆开:监控到底能发现哪些问题,预警是怎么工作的,安全防护能处理哪几类风险,企业自己又该怎样把这些能力用起来。
服务器运维里有一些问题,几乎每个企业迟早都会遇到。下表把常见的几种现象,和监控里能看到的信号对应了起来:
常见现象 | 监控中可以看到的信号 | 可能的原因 |
应用处理速度下降 | CPU使用率持续升高,系统负载偏高 | 业务量增长,或某个进程占用了大量计算资源 |
程序异常退出 | 内存使用逼近上限,交换空间被大量使用 | 内存不足,或程序存在内存持续增长的问题 |
数据库写入失败 | 磁盘空间使用率接近100% | 日志、备份或上传文件占满了磁盘 |
访问时快时慢 | 出入口流量或连接数出现波动 | 访问量变化,或有异常流量进入 |
正常用户打不开页面 | 流量突然大幅升高,连接数异常 | 服务器可能正在遭受攻击 |
这些信号有一个共同点:它们都有一个逐步积累的过程。磁盘不是一夜之间满的,内存泄漏也是慢慢涨上去的。人工定期登录检查,也许能抓住其中一部分,但检查的间隔里发生的事,就看不到了,更不可能二十四小时盯着。持续监测的价值,正在于把“事后发现”变成“过程中发现”,这是人工巡检难以完全代替的。
除了CPU使用率,更值得看的是系统负载,它反映的是排队等待CPU的任务数量,使用率不高而负载很高,往往说明进程在等待磁盘等其他资源。还应该能看到不同进程各自占用了多少,这样才能判断是业务本身增长,还是某个异常的进程在作怪。
内存的看法有一点特殊:系统会用空闲内存做文件缓存,所以“已用内存很高”未必有问题,缓存是可以回收的,关键是看实际可用的内存有多少。需要重点关注的是交换空间的使用,一旦开始大量使用交换空间,性能会明显下降;还有就是各个进程占用内存的变化趋势,如果某个进程的内存只涨不降,通常说明有内存泄漏。
磁盘有两个维度:一是容量,包括使用率,以及容易被忽略的文件数量上限;二是性能,包括读写延迟、IOPS和吞吐量。容量用完,写入就会失败;延迟升高,数据库的响应就会跟着变慢。两方面都要看,只看容量,会漏掉“空间足够但读写很慢”的情况。
出入口带宽的使用情况,可以反映业务访问量,也能暴露异常的流量。连接数则能说明服务当前的承载状态,连接数突然成倍上升,可能是访问高峰,也可能是攻击。丢包和重传是衡量链路质量的信号,业务访问忽快忽慢时,这两项是首先要查看的。
只知道服务器在线,不足以证明业务正常。网站、数据库和API服务各有各的状态:端口是否在监听,页面返回的是不是200,接口响应时间有没有变长,数据库还能不能建立新的连接。这类监控更接近用户的真实感受,也是能发现“服务器没事、业务有事”这类问题的唯一办法。
监控解决“看得见”,预警解决“及时知道”。一套预警机制的运转,大致是这样的:
1. 先为CPU、内存、存储等指标设定阈值,比如磁盘使用率达到某个比例时触发提醒。
2. 除了固定阈值,还要识别持续异常或突发变化,例如某个指标连续几分钟处于高位,或在短时间内出现陡增。
3. 触发后通过邮件、短信或其他方式,通知相关的运维人员。
4. 运维人员结合系统日志,定位异常的原因。
5. 根据原因采取相应的措施,可能是调整资源、优化程序,也可能是安全方面的处置。
这里有两个细节值得留意。阈值不是设得越低越好,太敏感会带来大量无关紧要的告警,运维人员久而久之就会麻木,真正重要的告警反而会被忽略;一般要设置持续时间的条件,避免瞬时的抖动造成误报。另外,预警能够帮助企业更早发现一部分问题,却不能保证所有的故障都被提前识别,比如突发的硬件故障、程序逻辑错误,就很难靠阈值预判。预警是一道防线,不是万能的保险。
DDoS攻击通过大量请求占满目标的带宽或服务资源,让正常用户无法访问。攻击大致分为两类:一类是流量型的,目的是把网络带宽占满;一类是针对应用的,用大量看似正常的请求耗尽服务资源。
常见的处理思路有两种。一是流量清洗:把流入的流量先引到清洗设备上,识别并过滤掉攻击流量,再把正常流量送回服务器。二是黑洞处理:当攻击流量超过防护能力时,暂时丢弃发往被攻击地址的所有流量,以保护网络中的其他资源,代价是该地址在一段时间内无法被正常访问。所以,防护能力的上限、超过上限后如何处理,都是需要了解清楚的。
域名解析一旦被篡改,用户输入正确的网址,却被引导到了错误的地址,轻则访问出错,重则被引向仿冒的页面。DNS劫持检测,就是持续核对域名的解析结果,发现异常时及时提醒,以便企业尽快排查和恢复。
服务器面临的风险,主要来自三个方面:系统和应用中存在的已知漏洞,异常的登录行为,比如短时间内大量的密码尝试,以及被植入的恶意程序。入侵检测侧重于发现这些异常行为,漏洞扫描则侧重于发现系统里尚未修补的漏洞。需要强调的是,扫描只负责发现问题,修补漏洞、升级补丁,仍然需要企业自己去做。
对网站来说,网页文件被篡改、被植入木马,是比较常见的风险,可以通过检查网站文件的完整性来发现。登录防护则是对登录行为设置限制,比如限制连续失败的次数、对异常来源做拦截,减少被暴力破解的可能。
把监控和防护放在日常运营里看,它们带来的帮助,主要体现在几个方面。
其一,资源异常能被提前发现,故障排查的难度随之降低。出了问题,翻看历史曲线就能知道从什么时候开始变化,比凭空猜测要容易得多。其二,持续记录的运行数据,也为容量规划提供了依据,哪个资源增长最快,什么时候需要升级,数据里能看出端倪。
其三,异常流量和攻击行为能被及时发现,企业可以更快采取防护措施,而不是等到客户投诉才知道。其四,监控和告警代替了大量重复的人工检查,运维人员可以把精力放在真正需要判断的事情上。最后,也是更长远的一点,这些能力合在一起,让资源管理和安全管理变成一种持续的机制,而不再是出事之后的临时补救。
不同产品对监控和防护的说法差别很大,下单之前可以对照下面几个问题去核实。
监控方面:监控的指标是否完整,有没有覆盖CPU、内存、磁盘和网络;告警是否及时,通知方式是否明确,能不能通知到真正负责运维的人;是否支持查看历史运行数据,没有历史数据,就很难做趋势分析和事后复盘。
安全方面:安全防护具体覆盖哪些攻击类型,是只防流量型攻击,还是包括其他类型;防护的规格与适用的节点是否写得明确,同一个服务商不同节点的防护能力可能不同;发生安全事件时,服务商会提供什么样的处理支持,是只有通知,还是会协助处理。
还有一点容易被忽略:数据备份是否独立于安全防护体系。安全防护降低的是被攻击的概率,并不能代替备份,两者应该分开规划。
恒讯科技云主机可以从四个方面来了解。
监控管理。官网介绍了CPU、内存、硬盘I/O的实时监控及报表,管理方式上,支持通过控制台和API进行操作。对习惯把监控接入自己运维体系的企业来说,API是一个值得了解的入口。至于网络和服务状态方面的监控覆盖到什么程度,官网没有逐项列出,可以在咨询时确认。
异常预警。官网列有云监控、服务器监控和告警相关的功能。告警能设置哪些指标、有哪几种通知方式,同样建议向服务方了解具体细节。
安全检测。涉及DDoS防护、DNS劫持检测、入侵检测、漏洞扫描、网页木马检测以及登录防护,与前面谈到的几类风险基本对应。
攻击防护。官网云主机产品页面介绍了部分节点免费20G防御,最高可达300G防御峰值。需要注意的是,这一信息要以具体产品页为准,核对清楚适用的节点和防护方案,不能理解为所有产品、所有节点的标准配置。
服务商提供的监控和防护,是基础设施层面的能力。企业自己仍然需要承担一部分安全责任,这部分是平台代替不了的。
日常的维护上,操作系统和应用程序要定期更新,补上已知的漏洞,漏洞扫描发现了问题,就要有人去修复。账号方面,使用强密码,并开启多因素认证;远程管理的端口,尽量限制可以访问的来源,不要直接对公网开放。系统日志也要定期检查,很多入侵的痕迹,是在日志里先出现的。
再往后是备份和演练:建立独立的数据备份策略,并定期开展安全检查和恢复演练。备份是否真的能恢复,只有实际试过才知道。
监控帮企业看见异常,防护帮企业挡住或者缓解一部分风险,两者配合,才构成一套比较完整的运行保障。一台值得选择的云主机,除了提供CPU、内存和磁盘这些运行资源,还应该具备帮助企业识别风险、处理异常的基础能力,剩下的,就是企业自己把这些能力用起来、用到位。
Copyright © 2013-2020. All Rights Reserved. 恒讯科技 深圳市恒讯科技有限公司 粤ICP备20052954号 IDC证:B1-20230800.移动站


