如何做好业务监控

本文详细介绍了业务监控的重要性、监控指标、监控精度、统计方式以及解决监控痛点的方法。重点关注了硬件层、系统层、应用层和业务层的监控指标,并推荐了秒级和分钟级的精度。此外,还探讨了监控工具如Zabbix、Grafana,并强调了建立有效的监控大盘和报警机制在稳定性建设中的关键作用。

系列文章目录

一、什么是监控?

1.1. 定义

     监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。

1.2. 目标

  1. 实时&持续的反馈系统情况

  2. 保证业务持续稳定&安全
    如果我们的监控做得很完善,即使出现故障,能第一时间接收到故障报警,在第一时间处理解决,从而保证业务持续性的稳定运行。

引言:
可以从三个方向去考虑:

1、减少故障发生的可能

2、减少故障恢复时间

3、降低故障的外部影响

系统可用性

99.999 5.25 min
99.99 52.5 min
99.9 8.75 hour

二、监控的指标

硬件层(主机)、系统层(容器层)、应用层、业务层;

2.1.指标

硬件层
 服务主机,主机层黄金指标包括:CPU使用率(Total,User,System),CPU load,Memory(total,used,rss),网络流量,Disk-IO count/Traffic(TX,RX),file_node

主机Top 命令使用详解https://blog.youkuaiyun.com/Rylan11/article/details/81608286

系统层(容器层)
容器资源被内核CGroup限制,它的黄金指标与主机系统指标接近。容器黄金指标包括 CPU使用率(Total, User, System), CPU Throttling Time,CPU Throttling Count ,网络流量(TX,RX),Memory(limit,used,rss),Disk-IO count/Traffic(TX,RX)

CPU 压制时间/压制次数,衡量CPU是否达到瓶颈的最直观指标。

参考:
cfs_period_us & cfs_quota_us
https://medium.com/omio-engineering/cpu-limits-and-aggressive-throttling-in-kubernetes-c5b20bd8a718

应用层
  关键的黄金指标包括 (1)响应时间(2)流量/吞吐(3)依赖 错误率/成功率(系
### 业务监控与报警系统的设计与优化方法 设计和优化一个高效的业务监控与报警系统需要从多个维度入手,包括但不限于关键指标的选择、数据收集与传输机制的优化、告警规则的合理设定以及可视化界面的设计。 #### 关键指标的选择 在设计监控系统时,首先需要明确哪些性能指标最为关键。例如,在高并发场景下,可能更加关注CPU和内存的峰值使用情况;而在批处理作业中,则应着重考察磁盘I/O效率[^2]。此外,对于大规模分布式系统,监控的复杂度成倍增加,需要有一个灵活、可扩展且高效的解决方案。常见的监控需求包括性能监控(如请求响应时间、吞吐量、错误率等)、资源监控(如CPU、内存、磁盘、网络带宽使用率等)、服务健康监控(如服务是否正常运行,是否有异常或宕机等)以及日志监控(通过分析日志文件,发现潜在的错误和警告信息)[^3]。 #### 数据收集与传输机制的优化 数据收集阶段涉及从不同的数据源收集指标数据,并确保这些数据能够高效准确地传输到监控系统中。为了提高效率,可以采用异步传输机制减少对生产环境的影响,同时利用压缩技术降低网络带宽消耗。此外,还需要考虑数据存储方案,选择合适的时间序列数据库来存储历史数据,以便后续分析和查询[^4]。 #### 告警规则的合理设定 自动化告警与通知是监控系统的重要组成部分。合理的阈值设置可以帮助及时发现问题并采取措施。例如,当检测到某个服务的响应时间超过预设阈值时,系统应能自动触发告警通知相关人员。同时,还应当定期回顾现有策略的有效性,适时作出调整以适应不断变化的需求[^2]。 #### 可视化界面的设计 最后,一个直观易用的可视化界面对于监控系统的用户体验至关重要。通过图形化展示,可以使运维人员快速理解当前系统的状态,从而做出相应的决策。可视化页面应该能够以图形、图表的形式呈现数据,帮助用户更好地理解和分析数据[^4]。 ```python # 示例代码:简单的Python脚本用于模拟发送告警邮件 import smtplib from email.mime.text import MIMEText def send_alert(subject, message, to_email): from_email = "your-email@example.com" password = "your-password" msg = MIMEText(message) msg['Subject'] = subject msg['From'] = from_email msg['To'] = to_email server = smtplib.SMTP('smtp.example.com', 587) server.starttls() server.login(from_email, password) server.sendmail(from_email, [to_email], msg.as_string()) server.quit() # 当检测到异常时调用此函数 send_alert("High CPU Usage Alert", "The CPU usage has exceeded the threshold.", "admin@example.com") ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值