开发者学堂课程【DevOps 日志分析实战 :容器监控与分析实践(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/736/detail/13101
容器监控与分析实践(二)
二、基础指标监控-Prometheus 的前世今生
(基础指标监控主要依赖于 Prometheus)
2012年成立,初始成员 Matt、Julius
主要受谷歌监控系统启发(Borg 监控系统,Borg 是谷歌内部的一套容器架构,最后发展到开源也就是 Kubernetes,所以说 Prometheus 搭配 K8s 是一个非常好的搭配方式)
1.主要目标:
监控动态的云上环境
对现有的监控数据模型、查询、效率等不满意
2.目前的地位:
CNCF 第二大 Project(第一大是 K8s,其与 Prometheus 是在一个大的组织下,无论金融还是各方面的支持都非常的优秀)
Kubernetes 标准化监控方案
开源首选监控方案之一
3.基础指标监控-Prometheus 架构
主要通过 pull 的方式从各个地方拉取数据(pull 的方式相对来说更加简洁),只需要对应的系统提供 http 的一个端口。内部是单机的架构,包括数据的接收(里面有服务发现,服务发现中的重要模块是 K8s 的服务发现,可以动态的监控需要的 pull 、Server等等)、存储(依赖于内部单机的 HDD 的存储)、查询。
后面会对接 Alertmanger ,Alertmanger 一般用来做告警,还有部分对接 Web uUI 等等。
4.Prometheus 的特点
是 pull 模型;有非常强的服务发现机制;是单机的架构;存储主要依赖于 SSD(如果用 HDD 是标准的机器硬盘的话其性能会较差);可视化提供的功能较少。
5.Prometheus 生产环境上的一些痛
·内存占用:近两小时数据保存内存,时间线膨胀
·异常恢复:binlog replay 时间过长,无限 OOM
·长期存储︰单机存储受限,无法长期对比指标
·单机问题︰抓取、计算单点执行,很难大规模扩展
·Pull 模型∶很难覆盖实时场景(定期 pull ,没办法实时推送指标)
. PromQL :不支持与外部维表关联(是内部查询的引擎,有时机器要关联机房、机器状态或者其他信息时,PromQL 不支持实时的关联)
6.SLS 时序存储-兼容 Prometheus 方案
SLS 提供了兼容 Prometheus 方案,其中对于时序数据的存储做扩展(从单机模式扩展到纯分布式的架构)
并且提供了默认的 PromQL 执行引擎,同时可以进行 SQL 的查询(对接各种 Web 数据延续做关联的分析),还提供了一些智能的算法,帮助做智能巡检等等场景
总体的特点:
上下游对接非常强,不仅仅包括 Prometheus ,其他数据源也可以使对接。
高性能,因为是纯分布式架构,其存储和计算完全分离,可以单独根据存储或计算去做扩容。
对开源非常友好,Prometheus 可以直接对接 Prometheus、HTTP、AQL、Grafana。
智能方面,提供了各种智能算法,可以加快运维效率。
基础指标监控-充分发挥 Prometheus 数据的价值
Prometheus 的数据如果默认在单机中是一个死的系统,不支持外部延续对接或者实时计算,所以扩展是去支持各种数据。
通过 Prometheus 写进,通过 OpenTelemetry (一个大的 project)也支持智能写入。
并且对接三个执行引擎,分别是 SQL 执行引擎、智能分析引擎、默认的 PromQL 执行引擎
还有一个数据队列的功能,支持用实时计算的方式去订阅数据,做实时的分析,这样可以降低对数据的延时,包括整个链路的延时。
7.基础指标监控-Prometheus 接入方式
只需要在 K8s 的 Prometheus Operator 中配置一些 Remote Write 的写入方式,然后配置 basicAuth 的鉴权并写入到 SLS 。
整体步骤如下:
创建 Namespace
配置保密字典
修改安装包参数
配置 Grafana 可视化
配置告警
三、基础事件监控-Kubernetes 事件中心
在 K8s 中有 API Server,会产生各种各样的事件,包括宿主机的事件,系统组件的事件,应用产生的事件,都能实时的采集到日志服务。
然后会提供一整套包括实时的告警、日志的查询、自定义的分析(包括可视化的报表)的方案,并且该方案开通的成本非常低,只需要在创建集群时勾选即可。
1.接入层监控-Kubernetes Ingress 监控
从 Ingress controller 得到 Ingress 的访问日志,然后提取各种指标,指标包括:
PV 同比/环比下跌
请求地域分布
TOP 省份、城市
TOP 延迟、失败 URL
成功率/5XX比例
平均延迟、P99/P9999延迟
后端请求失败率
蓝绿版本发布对比
该指标可以一键生成,安装方式也非常简单(开通在默认集群上勾选即可)
2.中间件 /ServiceMesh 监控 -Istio 访问日志监控
ServiceMesh 目前以 Istio 为代表,这里主要是兼容 Istio 。
Istio 的访问日志可以直接对接,如果使用 ServiceMesh 可以非常方便的将数据对接并做可视化。
3.业务监控-Kubernetes 标准日志监控
业务监控需要依赖自己做日志的产生,用 SLS 做日志的采集。
日志采集的配置也非常简单,只需要定义几个环境变量或者部署一个 crd 就可以完成包括容器的文件、标准输出甚至该文件存储在宿主机上都支持实时的采集。采集后可以实时日志查看,包括上下文的查看、分析,也能做关键词的监控,也能根据日志去提取指标做业务指标的监控(例如下单的成功了、交易的金额、加入购物车的行为等等)