项目经验_之_服务巡检
前言
Github:https://github.com/HealerJean
一、服务巡检
1、什么是服务巡检
在软件系统和分布式架构中,服务巡检是一种系统性的检查活动,旨在确保各类服务的稳定、高效运行。它涵盖了对应用服务、中间件服务、数据库服务等整个技术栈中各环节的全方位监测与评估。
从微观角度:服务巡检关注每个服务实例的健康状态,例如进程是否正常运行、内存使用是否合理、CPU 利用率是否在正常范围。
从宏观层面:它涉及服务之间的交互关系,像服务调用的成功率、响应时间,以及整个服务集群的负载均衡状况等。本质上,服务巡检是通过主动探测和数据收集分析,来及时发现服务运行中潜在问题或已经出现的故障。
2、为什么要服务巡检
- 保障业务连续性:如今的业务高度依赖软件服务,一旦服务出现故障,可能导致业务中断,造成巨大的经济损失和用户流失。例如电商平台在促销活动期间,如果服务出现问题,会使订单无法正常提交,影响销售业绩,还可能损害品牌形象。通过服务巡检,能够提前发现并解决潜在问题,确保业务不受影响。
- 性能优化:随着业务量的增长和系统的演进,服务性能可能逐渐下降。服务巡检可以收集到详细的性能数据,如响应时间、吞吐量等,帮助架构师和程序员分析性能瓶颈所在,进而进行针对性的优化,提升用户体验。比如发现某个接口响应时间过长,经分析是数据库查询语句效率低,优化后能显著提升服务性能。
- 故障快速定位与修复:当故障发生时,通过服务巡检收集的历史数据和实时监控信息,能够快速定位故障点。例如服务出现异常,通过查看日志和性能指标,可以判断是某个服务实例崩溃,还是依赖的第三方服务出现问题,从而快速采取修复措施,减少故障恢复时间。
- 资源合理利用:了解服务的资源使用情况,如服务器的 CPU、内存、磁盘 I/O 等,避免资源浪费或过度分配。通过服务巡检,根据业务负载动态调整资源分配,提高资源利用率,降低运营成本。
3、怎么服务巡检
- 制定巡检策略
- 确定巡检指标:针对不同的服务和组件,定义关键的监测指标。对于应用服务,重点关注响应时间、错误率、吞吐量;对于数据库服务,关注连接数、查询耗时、磁盘空间等;对于中间件,如消息队列,关注消息堆积情况等。
- 设置巡检频率:根据服务的重要性和稳定性,设定不同的巡检频率。核心业务服务可能每隔几分钟巡检一次,而一些辅助性服务可以每小时或每天巡检一次。
- 选择巡检工具
- 监控系统:使用专业的监控工具,如 Prometheus + Grafana 组合。Prometheus 负责收集和存储时间序列数据,Grafana 用于可视化展示,方便直观地查看服务各项指标的变化趋势。
- 日志分析工具:像 ELK(Elasticsearch + Logstash + Kibana),用于收集、存储和分析服务日志,通过日志可以发现服务运行中的异常情况和错误信息。
- 自动化脚本:编写自定义的脚本,用于检查特定的服务状态,如通过脚本检查某个服务进程是否存活,端口是否正常监听等。
- 执行巡检操作
- 实时监控:利用监控系统实时获取服务的各项指标数据,一旦指标超出预设的阈值,立即触发告警通知。
- 定期检查:按照设定的巡检频率,定期执行巡检脚本或使用工具进行全面检查,生成巡检报告。
- 模拟用户行为测试:通过自动化测试工具,模拟真实用户对服务的请求,检查服务的功能是否正常,响应是否符合预期。
- 分析与处理巡检结果
- 数据分析:对收集到的巡检数据进行深入分析,找出指标变化的规律和潜在问题。例如通过分析一段时间内的响应时间数据,判断是否存在周期性的性能波动。
- 问题处理:对于发现的问题,及时进行处理。如果是资源不足导致的性能问题,考虑增加服务器资源;如果是代码缺陷,安排程序员进行修复。同时,对问题的处理过程和结果进行记录,形成问题处理文档,以便后续查阅和总结经验。
二、服务利用率
低利用率判断标准:以
38.5%
为基线,cpu
使用率7
天平均峰值低于38.5%
为低利用率(加白的应用不计入CPU
平均使用率计算范围);
1、维度
1)主机维度:
cpu
峰值:秒级监控,主机cpu
使用率的每日峰值;cpu
均值:秒级监控,主机cpu使用率的每日均值;cpu7
天平均峰值:主机 7日CPU
峰值累加 / 7;cpu14
天平均峰值:主机 14 日CPU
峰值累加 / 14;
2)应用维度:
a、应用计算时使用的容器 cpu
峰值说明:
1、cpu
峰值的最小时间粒度为分钟
2、每分钟 60
秒,每个容器每秒都会有一个 cpu
利用率数据,从这 60
个 cpu
利用率数据中取出最大值,这个最大值就是容器的每分钟的 cpu
峰值。
3、应用维度计算时使用的就是上边每个容器每分钟的 cpu
峰值。
b、字段说明:
- 应用
cpu
峰值:1、以分钟为粒度,每分钟计算一次应用所有容器的CPU
峰值的加权平均值,计算公式:SUM(cpu峰值*容器cpu核数)/SUM(容器cpu核数);2、每天1440分钟,经过第一步的计算,会有1440个值。从这1440个值中取出最大的一个值,这个值就是应用CPU利用率峰值; - 应用cpu7天平均峰值:应用的7日CPU峰值的均值 ;
- 应用cpu14天平均峰值:应用的14日CPU峰值的均值;
- 应用cpu7天最大峰值:应用的7日CPU峰值的最大值 ;
- 应用cpu14天最大峰值::应用的14日CPU峰值的最大值
2、服务器利用率提升
服务缩容:若服务器冗余,在满足基本的高可用情况下,缩容冗余机器;
服务减配:若服务器配置过高,超出实际需求,请对服务器规格进行降配;
服务下线:若应用不再使用,请及时提交下线申请;
服务上线:若服务器为新上线或新扩容,暂无流量,请缩短上线或扩容周期,尽快投产引入流量。
服务加白:不建议加白