Ingress 访问日志分析与监控
阿里云Ingress除了提供外部可访问的 URL、负载均衡、SSL、基于名称的虚拟主机外,还支持将所有用户的HTTP请求日志记录到标准输出中。同时Ingress访问日志与阿里云日志服务打通,您可以使用日志服务快速创建日志分析和监控大盘。
前提条件
- 安装日志组件。
集群创建时,默认会安装日志组件,如未安装,请参考 使用日志服务进行Kubernetes日志采集进行手动安装。
- 升级Log Controller。
升级kube-system命名空间下的无状态应用(Deployment)alibaba-log-controller,替换以下内容:
- 镜像名称:registry-vpc.{region-id}.aliyuncs.com/acs/log-controller ,将其中的
{region-id}
替换为您集群所在Region ID,例如cn-hangzhou、cn-beijing、ap-southeast-1等。 - 镜像版本(Tag):版本不低于0.2.0.0-76648ee-aliyun。
以下两种升级方法您可任选其一:
- 通过执行kubectl命令
kubectl edit deployment alibaba-log-controller -n kube-system
进行升级。 - 通过容器服务控制台升级。进入应用 > 无状态(Deployment),选择对应集群的命名空间kube-system,编辑alibaba-log-controller并保存。
- 镜像名称:registry-vpc.{region-id}.aliyuncs.com/acs/log-controller ,将其中的
部署Ingress采集配置
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
# your config name, must be unique in you k8s cluster
name: k8s-nginx-ingress
spec:
# logstore name to upload log
logstore: nginx-ingress
# product code, only for k8s nginx ingress
productCode: k8s-nginx-ingress
# logtail config detail
logtailConfig:
inputType: plugin
# logtail config name, should be same with [metadata.name]
configName: k8s-nginx-ingress
inputDetail:
plugin:
inputs:
- type: service_docker_stdout
detail:
IncludeLabel:
io.kubernetes.container.name: nginx-ingress-controller
Stderr: false
Stdout: true
processors:
- type: processor_regex
detail:
KeepSource: false
Keys:
- client_ip
- x_forward_for
- remote_user
- time
- method
- url
- version
- status
- body_bytes_sent
- http_referer
- http_user_agent
- request_length
- request_time
- proxy_upstream_name
- upstream_addr
- upstream_response_length
- upstream_response_time
- upstream_status
- req_id
- host
NoKeyError: true
NoMatchError: true
Regex: ^(\S+)\s-\s\[([^]]+)]\s-\s(\S+)\s\[(\S+)\s\S+\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)\s(\d+)\s"([^"]*)"\s"([^"]*)"\s(\S+)\s(\S+)+\s\[([^]]*)]\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s*(\S*).*
SourceKey: content
- 请确保日志组件 alibaba-log-controller版本不低于
0.2.0.0-76648ee-aliyun
。更新版本后,若已经应用了该CRD配置,请删除该配置并重新应用。 - 上述配置只针对阿里云Kubernetes默认Ingress Controller中的日志格式生效,若您修改过Ingress Controller的访问日志格式,请根据Kubernetes-CRD配置日志采集修改上述CRD配置中的正则表达式提取
processor_regex
部分。
查看Ingress日志与报表
- 登录日志服务控制台。
- 单击左侧导航栏中的Project管理,选择创建集群时设置的日志Project,单击名称进入日志Project页面(默认创建的project名称为 k8s-log-{cluster-id})。
- 在Project详情页面,默认进入日志库页面。名称为nginx-ingress的日志库(logstore)存放着所有的Ingress访问日志。单击左侧导航栏中的仪表盘进入仪表盘列表,可查看到所有Ingress的分析报表。
Ingress概览
Ingress概览报表主要展示当前Ingress的整体状态,主要包括以下几类信息:
- 整体架构状态(1天),包括PV、UV、流量、响应延迟、移动端占比和错误比例等。
- 网站实时状态(1分钟),包括PV、UV、成功率、5XX比例、平均延迟和P95/P99延迟等。
- 用户请求类信息(1天),包括1天/7天访问PV对比、访问地域分布、TOP访问省份/城市、移动端占比和Android/IOS占比等。
- 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的指标中自动检测异常点,提高问题发现的效率。
配置告警
日志服务除提供交互式分析、可视化报表之外,您可直接基于上述报表快速配置告警,告警支持通知钉钉WebHook、短信、邮件和自定义WebHook等。
告警详细配置方法请参考设置告警。
- 进入Ingress监控中心报表,鼠标滑动到图表5XX比例的右上角,在弹出的提示框中单击新建告警。
- 在告警页面中,填入告警名称、查询区间和执行间隔,查询语句中的
total
为5XX的百分比,因此触发条件填入:total > 1
。 - 在下一步的通知选项中,根据您的需求选择对应的通知方式,并填入对应参数即可完成告警创建。
订阅定时报告
日志服务除支持通过告警方式通知外,还支持报表订阅功能,您可使用该功能将报表定期渲染成图片并通过邮件、钉钉群等方式发送。
订阅功能详细使用方法请参考订阅仪表盘。
- 进入Ingress概览报表,单击报表右上角的订阅按钮。
- 在弹出的配置页面中,频率选择每天、10:00,关闭添加水印选项。
- 通知类型中选择钉钉机器人,填入钉钉机器人的WebHook地址(WebHook地址请参见自定义机器人获取)即可完成订阅。
最新文章
- 一张图说懂java中 private default protected public 的区别
- Mysql中将日期转化为毫秒
- java.lang.IllegalStateException: getWriter() has already been called for this response问题解决
- springmvc中@PathVariable和@RequestParam的区别(百度收集)
- 使用Mysql命令一次性备份多个数据库(所有数据库)
- ORA-14450
- [认证授权] 5.OIDC(OpenId Connect)身份认证授权(扩展部分)
- 认识Linux分区
- python中的赋值与深浅拷贝
- vue-router 重难点总结笔记
- django 多线程下载图片
- python全栈开发day44-js、DOM、BOM
- 检测三种不同操作系统的Bash脚本
- Android控件之ImageSwticher
- System.DllNotFoundException:“无法加载 DLL“librfc32.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。”
- 准确率,召回率,F值
- JavaScript之Web通讯
- mongoDb,下载及启动
- JavaScript (JS) 函数补充 (含arguments、eval()、四种调用模式)
- 集训第六周 数学概念与方法 J题 数论,质因数分解
热门文章
- 数据库迁移Flyway
- Spring Boot-初学01 -使用Spring Initializer快速创建Spring Boot项目 -@RestController+spEL -实现简单SpringBoot的Web页面
- 51nod 2489 小b和灯泡
- python开发应用之-时间戳
- Sql操作时间
- 网站安全DDOS攻击及监测
- mysql udf提权
- MATLAB中运算符优先级
- S1_搭建分布式OpenStack集群_03 Mysql、MQ、Memcached、ETCD安装配置
- CDH 版本 6.0.1 升级到 6.2.0 当前最新版本(CentOS 7.x)