监控工具 - 监控杂记


1- 监控概述

系统监控是软件平台系统在生产运行过程中必不可少的一个环节,与需求、设计、开发、测试、部署、运维构成了软件工程完整的生命周期。
系统监控包括多个层次的监控,如主机监控、安全监控、中间件监控、业务监控、容器监控等。

## 主机监控 
主机监控就是对运行承载测试环境、生产环境的服务器进行监控,属于硬件级别和操作系统级别的监控。
主机监控主要关注CPU、内存、磁盘,以及网络的性能、可用性与使用情况。
操作系统级别的监控主要关注进程数、线程数、文件打开数、inodes使用情况等。 
CPU监控指标包括空闲(idle)、负载(load)、跳跃(jump)等
内存监控指标包括使用率和swap使用情况
磁盘监控指标包括各个挂载点的磁盘使用情况,如/根目录、/app目录、/data目录等
网络监控的主要指标包括流出流量 大、最小和平均的指标值

## 安全监控
安全监控主要涉及系统安全方面的监控,如常见系统安全入侵方式包括弱口令暴力破解、SQL注入、脚本文件注入、Shiro反序列化漏洞、DDoS攻击、WebShell木马等。 
安全监控既要监控系统外部的入侵,也要监控系统内部的漏洞。
常见漏洞入侵(如Weblogic安全漏洞、Shiro反序列化漏洞等)利用中间件版本更新不及时存在已知漏洞进行攻击。
漏洞入侵监控能够详细记录告警时间、攻击者IP地址、被攻击者IP地址、攻击类型、 攻击等级等信息。 

## 中间件监控
中间件监控是对软件系统中使用的核心中间件的状态、流量、资源等进行指标监控。 
常用的中间件包括Tomcat、Weblogic、Redis、Kafka、MySQL等。 
Tomcat中间件:可以监控其线程状态,主要指标包括活动线程、线程峰值和守护线程数、堆内存状态
MySQL关系数据库中间件:其监控的主要指标包括InnoDB操作、慢查询和全表扫描等。
InnoDB是MySQL的一种存储引擎,其行操作包括行删除、行插入、行读和行更新4种操作。
MySQL慢查询监控项主要包括最新值、最小值、平均值和最大值。
MySQL全表扫描会严重影响系统访问和数据库的修改,全表扫描说明没有使用索引, 每次查询对系统开销很大。

## 业务监控
主要关注系统的业务处理情况, 如访问量、出错量、错误类别、业务峰值等。
因不同系统的业务差异性比较大,所以没有统一的业务监控系统,一般需要结合业务特性进行个性化定制。 

## 容器监控 
主要是对基于Docker环境的容器监控以及基千Kubemetes的容器编排环境监控。
对于容器来说,主要监控容器中CPU、内存等的占用情况,以及容器的健康状态监控,同时对容器网络流量进行监控。
对于Kubernetes来说,主要监控集群节点状况,以及其上运行的容器清况。 

2 - 监控告警与事件响应

  • 明确事件的定义
  • 事件管理系统与监控系统:联动机制
  • 信息系统分级与告警分级:升级条件
  • 告警收敛的必要性:一个事件问题发生时,有可能多个监控维度都会出现告警信息,出现无用告警

3 - 全链路监控

全链路监控
- APM:应用性能管理,Application Performance Management
- 实现多维度实时分析和异常诊断,检测复杂链路环境中各服务组件的运行状态
- 动态展示多个服务间的调用关系和状态
- 分析和定位复杂链路中的瓶颈并调优
- 全链路监控组件可以实现对微服务调用链的追踪

业务调用链
- 对于微服务系统,从前端发起的每个请求都可能形成一个复杂的分布式服务调用链路,
- 一次调用可能涉及多个服务,一次请求的处理过程也就形成了调用链。
- 调用链记录了分布式系统中,一个请求从发起到结束所经过所有模块的全过程。

4 - 统一监控平台

立体化的监控体系能够在第一时间发现和预测问题。
通过建立自下而上的监控体系,覆盖基础、应用、业务层各项指标,以实现实时监控、状态预测等目的。

  • 对IaaS层IT基础设施硬件、虚拟化及容器云平台等进行基础监控
  • 对PaaS层进行应用系统关键日志监控、中间件监控、APM全链路监控和性能监控
  • 对业务层进行核心业务指标、大数据趋势监控

重要组成部分

  • 基础监控
  • 日志平台
  • 全链路监控
  • 核心指标监控

5 - 监控实践

## 所有的监控系统都是内部系统
## 关注监控整体过程和用户体验,建立和优化监控告警事件的处置机制

## 机房及硬件监控
- 基础监控
- 定期机房巡检:自动系统巡检、现场巡检
- 硬件设备:IPMI(智能平台管理接口)、Zabbix
- 各厂商的应对方案

## 系统监控
- 基础监控
- CPU使用率、内存(使用率、SWAP使用率)、磁盘使用率、I/O、网络运行情况(TCP连接数量与状态)、openfiles、进程数、端口等
- 告警阈值的设定

## 应用监控
- 服务器所运行各类应用服务的监控
- 中间件:Nginx、Tomcat、Redis、MySQL、Nacos、RocketMQ等
- 应用JVM状态
- Java线程数、端口
- 应用运行的性能指标

## 日志监控
- 通过日志统计UV/PV,分析流量来源,了解用户行为,快速进行日志查询、分析,排查故障并帮助定位和解决问题
- 手工命令:heda、less、tail、grep、wc、awk、sed、count、cut等
- 脚本:Shell或Python
- 工具平台:自动分析统计和展现,例如ELK
- 收集和过滤应用错误日志,通过配置关键字告警实现告警

## 用户体验监控
- 关注终端用户操作体验
- 访问页面处理性能、DNS响应时间、HTTP连接建立时间、元素大小等
- 从全局考虑,监控覆盖用户端、机房网络出口端、页面和接口监控、流量接入端、业务集群端等关键环节

## 业务监控
- 重点业务建立监控指标和阈值
- 每分钟交易量、每分钟注册数、对账异常笔数、日活用户、短信使用量等
- 关注交易指标状态,关注异常情况并保持关注,进一步分析和确认
- 业务指标的确定(开发团队配合)
- 如果选择基于日志方式,须约定日志文件的内容格式和规范,避免混乱

## 安全监控
- 网络安全监控 --》 重点
- 必备的安全防护设备:常规的 IDS/IPS/WAF/FW 等
- 开源的安全产品:网络控制、应用层攻击、代码审计、漏洞检测、代码检测等

## 大屏展示
- 各系统关键指标抽离在同一个平台统一展示
- 基于开源平台Grafana(支持多数据源的查询、分析与展现,易于对接和集成,模版插件丰富、社区支持等)

6 - 可观测性成熟度

关注点:

  • 步骤完整性:收集、观察、行动、分析
  • 覆盖率、准确性、响应速度
  • 分类、分级、分阶段

7 - 信息收集

  • 架构图:包含主机(cpu、内存、磁盘等)、网络(IP、端口等)、应用(名称、用途等)、业务承载等
  • 数据流向图: 业务运行图、链路调用图等
  • 配置信息:分布图、备份机制、恢复机制、关键参数列表等
  • 日志信息:产生目录、储存目录、分片策略、存储方案、查看方式等
  • 应用:设计性能(并发数、响应时间等)、容错机制、业务状态分布(高峰低谷)、进程信息、启停步骤、故障码、命名规则、版本管理、发布策略等
  • 监控:指标体系、告警响应、反馈机制、覆盖率、趋势预测、可视化等

8 -

posted @ 2024-07-24 16:13  Anliven  阅读(18)  评论(0编辑  收藏  举报