Kubernetes Ingress 日志分析与监控的最佳实践

前言

目前Kubernetes(K8s)已经真正地占领了容器编排市场,是默认的云无关计算抽象,愈来愈多的企业开始将服务构建在K8s集群上。在K8s中,组件经过Service对外暴露服务,常见的包括NodePort、LoadBalancer、Ingress等。其中Ingress主要提供HTTP层(7层)路由功能,相比TCP(4层)的负载均衡具有很是多的优点(路由规则更加灵活、支持金丝雀、蓝绿、A/B Test发布模式、SSL支持、日志、监控、支持自定义扩展等),是目前K8s中HTTP/HTTPS服务的主流暴露方式。html

Ingress简介

K8s中Ingress只是一种API资源的声明,具体的实现须要安装对应的Ingress Controller,由Ingress Controller接管Ingress定义,将流量转发到对应的Service。目前Ingress Controller的实现有很是多种(具体能够参考Ingress Controller官方文档),比较流行的有Nginx、Traefik、Istio、Kong等,在国内接受度最高的是Nginx Ingress Controller。算法

日志与监控

日志和监控是全部Ingress Controller都会提供的基础功能,日志通常包括访问日志(Access Log)、控制日志(Controller Log)和错误日志(Error Log),监控主要从日志以及Controller中提取部分Metric信息。这些数据中访问日志的量级最大、信息最多、价值也最高,通常7层的访问日志包括:URL、源IP、UserAgent、状态码、入流量、出流量、响应时间等,对于Ingress Controller这种转发型的日志,还包括转发的Service名、Service响应时间等额外信息。从这些信息中,咱们可以分析出很是多的信息,例如:后端

  1. 网站访问的PV、UV;
  2. 访问的地域分布、设备端分布;
  3. 网站访问的错误比例;
  4. 后端服务的响应延迟;
  5. 不一样URL访问分布。

咱们的开发、运维、运营、安全等人员能够基于这些信息完成各自的需求,例如:浏览器

  1. 新老版本发布先后的数据指标对比;
  2. 网站质量监控、集群状态监控;
  3. 恶意攻击检测、反做弊;
  4. 网站访问量统计、广告转化率统计。

然而手动搭建、运维一整套的Ingress日志分析与监控系统很是复杂,系统所须要的模块有:安全

  1. 部署日志采集Agent并配置采集、解析规则;
  2. 因为K8s集群中,访问量相对较大,所以须要搭建一个缓冲队列,例如Redis、Kafka等;
  3. 部署实时数据分析引擎,例如Elastic Search、clickhouse等;
  4. 部署可视化组件并搭建报表,例如grafana、kibana等;
  5. 部署告警模块并配置告警规则,例如ElastAlert、alertmanager等。

阿里云日志服务Ingress解决方案

为简化广大用户对于Ingress日志分析与监控的门槛,阿里云容器服务和日志服务将Ingress日志打通(官方文档),只须要应用一个yaml资源便可完成日志采集、分析、可视化等一整套Ingress日志方案的部署。架构

Ingress可视化分析

日志服务默认为Ingress建立5个报表,分别是:Ingress概览、Ingress访问中心、Ingress监控中心、Ingress蓝绿发布监控中心、Ingress异常检测中心。不一样角色的人员可根据需求使用不一样的报表,同时每一个报表均提供筛选框用于筛选特定的Service、URL、状态码等。全部的报表均基于日志服务提供的基础可视化组件实现,可根据公司实际场景进行定制化调整。负载均衡

Ingress概览

Ingress概览报表主要展现当前Ingress的总体状态,主要包括如下几类信息:运维

  1. 总体架构状态(1天),包括:PV、UV、流量、响应延迟、移动端占比、错误比例等;
  2. 网站实时状态(1分钟),包括:PV、UV、成功率、5XX比例、平均延迟、P95/P99延迟等;
  3. 用户请求类信息(1天),包括:1天/7天访问PV对比、访问地域分布、TOP访问省份/城市、移动端占比、Android/IOS占比等;
  4. TOPURL统计(1小时),包括:访问TOP十、延迟TOP十、5XX错误TOP十、404错误TOP10。

Ingress访问中心

Ingress访问中心主要侧重于用于访问请求相关的统计信息,通常用于运营分析,包括:当日UV/PV、UV/PV分布、UV/PV趋势、TOP访问省份/城市、TOP访问浏览器、TOP访问IP、移动端占比、Android/IOS占比等。机器学习

Ingress监控中心

Ingress监控中心主要侧重于网站实时监控数据,通常用于实时监控与告警,包括:请求成功率、错误比例、5XX比例、请求未转发比例、平均延迟、P95/P99/P9999延迟、状态码分布、Ingress压力分布、Service访问TOP十、Service错误TOP十、Service延迟TOP十、Service流量TOP10等。学习

Ingress蓝绿发布监控中心

Ingress蓝绿发布监控中心主要用于版本发布时的实时监控与对比(版本先后对比以及蓝绿版本当前对比),以便在服务发布时快速检测异常并进行回滚。在该报表中须要选择进行对比的蓝绿版本(ServiceA和ServiceB),报表将根据选择动态显示蓝绿版本相关指标,包括:PV、5XX比例、成功率、平均延迟、P95/P99/P9999延迟、流量等。

Ingress异常检测中心

Ingress异常检测中心基于日志服务提供的机器学习算法,经过多种时序分析算法从Ingress的指标中自动检测异常点,提升问题发现的效率。

实时监控与告警

Ingress做为K8s网站请求的主要入口,实时监控与告警是必不可少的Ops手段之一。在日志服务上,基于上述的报表,只需3个简单的步骤便可完成告警的建立。下述示例为Ingress配置5XX比例的告警,告警每5分钟执行一次,当5XX比例超过1%时触发。

除了通用的告警功能外,日志服务还额外支持:

  1. 多维度数据关联,即经过多组SQL结果交叉判断进行告警,增长告警准确度;
  2. 除支持短信、语音、通知中心、email外,还支持钉钉机器人通知、自定义WebHook扩展;
  3. 告警的记录也以日志的形式记录,能够实现对告警失败进行告警的双保险。

订阅报告

日志服务除支持经过告警方式通知外,还支持报表订阅功能,可以使用该功能将报表按期渲染成图片并经过邮件、钉钉群等方式发送。例如天天早上10点向运营群中发送昨日网站访问状况、每周发送报告到邮件组中存档、新版本发布时每5分钟发送一次监控报表...

自定义分析

若是容器服务Kubernetes版提供的默认报表没法知足你的分析需求,能够直接使用日志服务SQL、仪表盘等功能进行自定义的分析和可视化。

尝鲜

为了让你们能够体验Kubernetes审计日志功能,咱们特别开通了体验中心,你们能够经过 https://promotion.aliyun.com/ntms/act/logdoclist.html 进入,该页面提供了很是多和Kubernetes相关的报表。


原文连接 本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索