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

Ingress 主要提供 HTTP 层(7 层)路由功能,是目前 K8s 中 HTTP/HTTPS 服务的主流暴露方式。为简化广大用户对于 Ingress 日志分析与监控的门槛,阿里云容器服务和日志服务将 Ingress 日志打通,只需要应用一个 yaml 资源即可完成日志采集、分析、可视化等一整套 Ingress 日志方案的部署。

前言

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

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 日志打通(官方文档https://help.aliyun.com/document_detail/86532.html[](https://help.aliyun.com/document_detail/86532.html)),只需要应用一个 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 小时),包括:访问 TOP10、延迟 TOP10、5XX 错误 TOP10、404 错误 TOP10。

Ingress 访问中心

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

Ingress 监控中心

Ingress 监控中心主要侧重于网站实时监控数据,一般用于实时监控与告警,包括:请求成功率、错误比例、5XX 比例、请求未转发比例、平均延迟、P95/P99/P9999 延迟、状态码分布、Ingress 压力分布、Service 访问 TOP10、Service 错误 TOP10、Service 延迟 TOP10、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相关的报表。

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot之AOP详解

面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP)。 OOP中模块化的关键单元是类,而在AOP中,模块化单元是方面。 文章目录准备工作1. Pointcut 切入点2.Before前置通知3.After 后…

HUAWEI华为笔记本电脑MateBook D 14 2022款 i5 集显 非触屏(NbDE-WFH9)原装出厂Windows11系统21H2

链接:https://pan.baidu.com/s/1-tCCFwZ0RggXtbWYBVyhFg?pwdmcgv 提取码:mcgv 华为MageBookD14原厂WIN11系统自带所有驱动、出厂状态主题壁纸、Office办公软件、华为电脑管家、华为应用市场等预装软件程序 文件格式:esd/wim/swm 安装方式…

远程办公首日企业通讯软件崩溃、紧急扩容,云办公怎么了?

作者 | 阿文责编 | 伍杏玲来源 | 程序人生(ID:coder_life)受新型冠状病毒性肺炎的疫情影响,各地实施了严格的控制手段:封村、封路、封小区、暂停省际、县级、村级班车等措施。1月27日,国务院办公厅发布关于…

我在阿里云做前端

前言 今年是我毕业的第10个年头,半路出家做了前端,title一直是前端,你可以说我很专注,有时候也有些遗憾。一直以来,当别人问起你是做什么的,我说前端或者全栈,别人说:哦&#xff0c…

Mybatis-Plus的SQL语句组拼原理

前言:记录查找自动组拼SQL语句的过程 首先在BaseMapper其中的一个方法下打个断点 在断点显示的值栏找到相关的SQL 发现SQL语句在MappedStatement对象中,而sqlSource存的就是相关的sql语句 然后在MappedStatement这个对象打断点,看看到底是…

云漫圈 | 什么是字符串匹配算法?

作者 | 程序员小灰来源 | 程序员小灰(ID:chengxuyuanxiaohui )————— 第二天 —————什么意思呢?让我们来举一个例子:在上图中,字符串B是A的子串,B第一次在A中出现的位置下标是2&#…

MSSQL实践-数据库备份加密

摘要 在SQL Server安全系列专题月报分享中,我们已经分享了:如何使用对称密钥实现SQL Server列加密技术、使用非对称密钥实现SQL Server列加密、使用混合密钥实现SQL Server列加密技术、列加密技术带来的查询性能问题以及相应解决方案、行级别安全解决方…

Kubernetes 如何打赢容器之战?

Kubernetes 近几年很热门,在各大技术论坛上被炒的很火。它提供了强大的容器编排能力,与此同时 DevOps 的概念也来到大家身边,广大的开发同学也能简单地运维复杂的商业化分布式系统,打破了传统开发和运维之间的界限。 本文会以初学…

一行Python代码能干什么?有意思!

我下班最大的乐趣就是刷抖音一开始刷的都是一些无聊小剧场后来看看能不能刷一些技术上的内容因为本人觉得Java是世界上最好的编程语言可是我在刷抖音的时候刷到了一行Python代码能干什么我突然觉得爱上Python了之前是听说Python比较简单同样的内容Java、C语言需要十几行Python只…

自然语言生成(NLG)的好处是什么,它如何影响BI?

近年来,我们已经看到了大数据的成功应用,但根据研究,只有20%的员工能够真正的使用BI工具。此外,由于在统计思维方面缺乏培训且图表和图表形式的数据不是很清晰,决策者往往会出现误解和决策失误。而这背后的…

ida 字符串查找_IDA 搜索中文字符串

IDA 的字符串窗口默认只能显示英文,网上的一些方法是指定启动时的参数可以显示中文ida64 -DCULTUREallida -DCULTUREall还有就是修改 cfg/ida.cfg 文件,但是这两种方法都没试成功。实际上没有那么麻烦,IDA 7.0 操作很方便,在字符串…

“练好内功坚持被集成”,阿里云发布SaaS加速器

在3月21日的2019阿里云峰会北京上,阿里云发布新产品SaaS加速器:人工智能、虚拟现实等技术能力被集成为模块,ISV和开发者只要简单拖拽,就可以快速搭建SaaS应用。 发布现场,阿里云智能产品管理部总经理马劲进行简单演示…

2020 年,云游戏将爆发?各大科技公司云游戏布局大曝光!

作者 | 年素清责编 | 伍杏玲出品 | CSDN云计算(ID:CSDNcloud) 伴随5G技术加速落地,云游戏作为5G应用落地的最佳场景,已经成为全球游戏厂商和云服务厂商布局的重要战场。根据艾媒咨询数据显示,2018年中国云游…

Springboot整合Quartz集群部署以及配置Druid数据源

参考链接: https://blog.csdn.net/wangmx1993328/article/details/105441308 https://blog.csdn.net/qq_39669058/article/details/90411497 参数配置连接:https://github.com/wangmaoxiong/quartzjdbc/blob/master/src/main/resources/application-clu…

我是如何拿到蚂蚁金服实习 offer 的

我是2018年3月入职蚂蚁的应届前端工程师,来自于北京邮电大学。2年前的此刻,我也是实习求职大潮中的一员,在这里,分享一下我从准备面试到实习,再到最终正式入职的经历。 选择蚂蚁 阿里的前端水平在业界有着很高的评价…

java 客户化排序_第八部分_客户化JSP标签

EL语言(减少JSP页面中的Java代码)String password request.getParameter("password");%>username: password: username: ${param.username }password: ${param.password }属性范围->在EL中的名称Page->pageScope;Request->requestScope&…

十大类疫情服务紧缺 阿里广发英雄帖抗疫小程序开发者最高可获50万元奖励

全民积极响应国家抗击新冠肺炎疫情的号召,正催生出越来越多新的互联网服务缺口。基于对用户、政府、企事业单位抗疫服务需求的紧缺情况调查,支付宝今日面向社会各界开发者发布“10大疫情期最急需服务开发清单”,号召更多开发者投入进来开发更…

信用算力基于 RocketMQ 实现金融级数据服务的实践

微服务架构已成为了互联网的热门话题之一,而这也是互联网技术发展的必然阶段。然而,微服务概念的提出者 Martin Fowler 却强调:分布式调用的第一原则就是不要分布式。 纵观微服务实施过程中的弊端,可以推断出作者的意图&#xff…

六年打磨!阿里开源混沌工程工具 ChaosBlade

阿里妹导读:减少故障的最好方法就是让故障经常性的发生。通过不断重复失败过程,持续提升系统的容错和弹性能力。今天,阿里巴巴把六年来在故障演练领域的创意和实践汇浓缩而成的工具进行开源,它就是 “ChaosBlade”。如果你想要提升…

jmeter-5.3 测试http接口动态数据 windows+Linux双环境

文章目录一、基础组件1. 企业需求2. 创建线程组:3. 创建HTTP请求4. CSV 数据文件组件5. 响应断言二、添加监听器2.1. 添加察看结果树2.2. 添加聚合报告2.3. 监听每秒事务数2.4. 监听 随时间变化的响应时间三、HTTP请求配置3.1. 基础参数四、 响应断言配置四、 CSV 数…