当前位置: 首页 > Web前端 > HTML

KubernetesIngress日志分析与监控最佳实践

时间:2023-04-02 22:23:23 HTML

Ingress主要提供HTTP层(七层)路由功能,是目前K8s中HTTP/HTTPS服务的主流暴露方式。为了简化用户分析和监控Ingress日志的门槛,阿里云容器服务和日志服务打通了Ingress日志,只需要申请一个yaml资源就可以完成一整套Ingress日志解决方案的部署,例如日志收集、分析和可视化。前言目前,Kubernetes(K8s)已经真正占领了容器编排市场,是默认的云无关计算抽象。越来越多的企业开始在K8s集群上搭建服务。在K8s中,组件通过Service对外暴露服务,常见的有NodePort、LoadBalancer、Ingress等。其中Ingress主要提供HTTP层(七层)路由功能,相比TCP(四层)负载均衡(路由)有很多优势规则更加灵活,支持金丝雀、蓝绿、A/BTest发布模式、SSL支持、日志、监控、支持自定义扩展等),是目前K8s中HTTP/HTTPS服务的主流暴露方式。Ingress简介在K8s中,一个Ingress只是一个API资源的声明。具体实现需要安装相应的IngressController,接管Ingress的定义,将流量转发给相应的Service。目前IngressController的实现有很多(具体可以参考IngressController官方文档),比较流行的有Nginx、Traefik、Istio、Kong等,国内接受度最高的是NginxIngress控制器。日志和监控日志和监控是所有IngressController提供的基本功能。日志一般包括访问日志、控制器日志和错误日志。Monitoring主要是从logs和Controllers中提取一些metrics。信息。在这些数据中,访问日志量级最大、信息量最大、价值最高。一般七层的访问日志包括:URL、源IP、UserAgent、状态码、入站流量、出站流量、响应时间等。对于IngressController转发的日志还包括转发的Service名称、Service响应时间等附加信息.从这些信息中,我们可以分析出很多信息,比如:网站访问的PV和UV;访问的地域分布、设备端分布;网站访问的错误率;后端服务响应延迟;不同URL访问的分布。我们的开发、运维、运维、安全等人员可以根据这些信息完成各自的需求,比如:新旧版本发布前后数据指标对比;网站质量监控、集群状态监控;恶意攻击检测,防作弊;网站访问流量统计,广告转化率统计。然而,手动构建和维护一套完整的Ingress日志分析和监控系统是非常复杂的。系统所需模块包括:部署日志采集Agent,配置采集分析规则;由于K8s集群访问量比较大,需要建立一个缓冲队列,如Redis、Kafka等;部署实时数据分析引擎,如ElasticSearch、clickhouse等;部署可视化组件,构建报表,如grafana、kibana等;部署告警模块并配置告警规则,如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异常检测中心。不同角色的人可以根据需要使用不同的报表,每个报表都提供了一个过滤框,用于过滤特定的服务、URL、状态码等。所有报表均基于日志服务提供的基础可视化组件实现,可根据公司实际场景进行自定义调整。Ingress概览Ingress概览报告主要展示当前Ingress的整体状态,主要包括以下几类信息:整体架构状态(1天),包括:PV、UV、流量、响应时延、移动端占比、错误率,ETC。;网站实时状态(1分钟),包括:PV、UV、成功率、5XX比例、平均延迟、P95/P99延迟等;用户请求信息(1天),包括:1天/7天访问PV对比、访问地域分布、TOP访问省/市、移动端占比、Android/IOS占比等;TOPURL统计(1小时),包括:访问TOP10、延迟TOP10、5XX错误TOP10、404错误TOP10。IngressAccessCenterIngressAccessCenter主要统计访问请求相关的信息,一般用于运营分析,包括:当日UV/PV、UV/PV分布、UV/PV趋势、TOP访问省/市、TOP访问浏览服务器、TOP访问IP、移动端占比、Android/IOS占比等。、错误率、5XX率、请求未转发率、平均时延、P95/P99/P9999时延、状态码分布、Ingress压力分布、ServiceaccessTOP10、ServiceerrorTOP10、ServicedelayTOP10、ServicetrafficTOP10等IngressBlue-GreenReleaseMonitoringCenterIngress蓝绿发布监控中心主要用于版本发布过程中的实时监控对比(前后版本对比和当前蓝绿版本对比),快速发现异常并回滚服务已发布。在该报表中需要选择蓝绿版本(ServiceA和ServiceB)进行对比,报表会根据选择动态展示蓝绿版本的相关指标,包括:PV、5XX比例、成功率、平均时延、P95/P99/P9999时延、流量等Ingress异常检测中心Ingress异常检测中心基于日志服务提供的机器学习算法,通过多种时序分析算法自动检测Ingress指标的异常点,提高效率的问题发现。实时监控告警Ingress是K8s网站请求的主要入口,实时监控告警是必不可少的Ops手段之一。在日志服务上,根据以上报表,只需要三个简单的步骤就可以完成告警的创建。以下示例为Ingress配置了5XX比率的警报。警报每5分钟执行一次,当5XX比例超过1%时触发。日志服务除了通用的告警功能外,还额外支持:多维数据关联,即通过多组SQL结果交叉判断告警,提高告警准确性;除了支持短信、语音、通知中心、邮件外,还支持钉钉机器人通知、自定义WebHook扩展;报警记录也以日志的形式记录,实现报警故障的双保险。订阅报表日志服务不仅支持通过告警通知,还支持报表订阅功能,可以周期性的将报表渲染成图片,通过邮件、钉钉群等方式发送。比如将昨天的网站访问情况发送给运营每天早上10:00分组,发送周报到邮件组存档,有新版本发布时每5分钟发送一次监控报告...自定义分析如果容器服务默认提供的Kubernetes版本Reports不能满足你的需求分析需求,可直接使用日志服务SQL、仪表盘等功能进行自定义分析和可视化。尝鲜为了让大家体验Kubernetes的审计日志功能,我们特地开设了体验中心,大家可以通过https://promotion.aliyun.com/ntms/act/logdoclist.html进入。该页面提供了大量与Kubernetes相关的信息。报告。参考文档[1]https://www.aliyun.com/product/sls[2]https://www.aliyun.com/product/kubernetes[3]https://help.aliyun.com/document_detail/86532.html[4]https://help.aliyun.com/document_detail/48162.html[5]https://help.aliyun.com/document_detail/107758.html[6]https://kubernetes.io/docs/concepts/services-networking/ingress/[7]https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/本文作者:jessie小姜阅读原文云栖社区原创内容,未经许可不得转载。