Kubernetes Ingress日志分析入门

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 本文主要介绍如何基于日志服务构建Kubernetes Ingress日志分析平台,并提供一些简单的动手实验方便大家快速了解日志服务相关功能。

本文主要介绍如何基于日志服务构建Kubernetes Ingress日志分析平台,并提供一些简单的动手实验方便大家快速了解日志服务相关功能。

部署Ingress日志方案

  1. 登录容器服务管理控制台
  2. 将上述CRD配置保存成编排模板。编排模板文档请参见创建编排模板
  3. 基于该模板创建应用,选择您所在集群的default命名空间
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

image.png

image.png

验证Ingress日志方案

  1. 登录容器服务控制台
  2. 进入路由页面,点击【Ingress概览】,若跳转出Ingress概览页则表示Ingress日志方案创建成功。

image.png
image.png

部署Ingress日志脚本

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mock-ingress
  namespace: default
  labels:
    app: mock-ingress
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mock-ingress
  template:
    metadata:
      labels:
        app: mock-ingress
    spec:
      containers:
      - name: mock-ingress
        image: registry.cn-shanghai.aliyuncs.com/log-service/mock-ingress:latest
        command: ["/data/replay_log"]
        args:
          - '-ecs=true'
          - '-project=k8s-log-{cluster-id}'
          - '-endpoint=cn-shanghai.log.aliyuncs.com'
          - '-source=/data/data.txt'
          - '-dist=/data/distribute.csv'
  1. 登录容器服务控制台,复制集群列表中的集群ID并保存到记事本。
  2. 替换上述配置模板中的{cluster-id}为您实际的集群ID。
  3. 使用上述配置模板创建无状态应用。

image.png

查看Ingress详细报表

  1. 登录日志服务控制台
  2. 单击左侧导航栏中的Project管理,选择创建集群时设置的日志Project,单击名称进入日志Project页面(默认创建的project名称为 k8s-log-{cluster-id})。
  3. 在Project详情页面,默认进入日志库页面。名称为nginx-ingress的日志库(logstore)存放着所有的Ingress访问日志。单击左侧导航栏中的仪表盘进入仪表盘列表,可查看到所有Ingress的分析报表。

设置告警

image.png

  1. 打开Ingress监控中心,在【请求成功率】图表右上角的菜单栏中点击【创建告警】
  2. 在弹出的告警框中输入告警名称,选择查询区间、执行区间
  3. 触发条件设置为: total < 100 ,即非100%就触发告警(实际场景中可设置的小一些)
  4. 点击【下一步】
  5. 在【通知类型】中选择【钉钉机器人】,填入钉钉机器人的WebHook地址 https://oapi.dingtalk.com/robot/send?access_token=a2c6d68cdb67dbe6ad38361b91f24bf669a551ccb6c4ceef9d6a0f8ced044676(WebHook地址请参见自定义机器人获取)即可完成告警设置。

订阅定时报告

日志服务除支持通过告警方式通知外,还支持报表订阅功能,您可使用该功能将报表定期渲染成图片并通过邮件、钉钉群等方式发送。
下述示例为Ingress概览配置订阅功能,每分钟将报表发送到指定钉钉群:

  1. 进入Ingress概览报表,单击报表右上角的订阅按钮。
  2. 在弹出的配置页面中,频率选择CronJob,输入 0/5 * * * *  (每5分钟发送一次报告,实际场景可设为每天固定时间),打开添加水印选项。
  3. 通知类型中选择钉钉机器人,填入钉钉机器人的WebHook地址 https://oapi.dingtalk.com/robot/send?access_token=a2c6d68cdb67dbe6ad38361b91f24bf669a551ccb6c4ceef9d6a0f8ced044676(WebHook地址请参见自定义机器人获取)即可完成订阅。

高级功能

自定义分析Ingress日志

  1. 登录日志服务控制台
  2. 单击左侧导航栏中的Project管理,选择创建集群时设置的日志Project,单击名称进入日志Project页面(默认创建的project名称为 k8s-log-{cluster-id})。
  3. 在Project详情页面,默认进入日志库页面。点击名称为nginx-ingress的日志库(logstore)右侧的【查询】链接进入查询页面。

日志服务支持丰富的查询与分析功能,详情参考日志查询与分析。在查询页面支持自定义的查询与分析,例如:

  1. 查询状态码大于200的请求: status > 200 
  2. 查询host(域名)为 inner.njkj.com 且响应延迟高于30ms的请求:host :  inner.njkj.com and request_time > 0.03
  3. 统计状态码非200的Top10服务: not status : 200 | SELECT proxy_upstream_name, count(1) as total group by proxy_upstream_name order by total desc limit 10 
  4. 统计各省份UV分布: * | select ip_to_province(x_forward_for) as province, approx_distinct(x_forward_for) as total group by province order by total desc limit 1000
  5. 统计host(域名)为 inner.njkj.com最近1天的访问平均延迟,并和昨天以及上周同一天的对比:host :  inner.njkj.com  |  select d[1] as "Today", d[2] as "Yesterday", d[1] - d[2] / d[2] as "Yesterday Delta",  d[3] as "Last Week", d[1] - d[3] / d[3] as "Last Week Delta"  from( select compare(val, 86400, 604800 ) as d from(select avg(request_time) as val from log ) )

Ingress报表均基于日志服务的分析功能实现,您可以从系统默认提供的Ingress报表中查找对应功能实现的SQL:点击对应图表的右上角菜单选项,选择【查看分析详情】,则会跳到对应的查询页面。

image.png
image.png

从审计日志中查询部署操作

  1. 登录日志服务控制台
  2. 单击左侧导航栏中的Project管理,选择创建集群时设置的日志Project,单击名称进入日志Project页面(默认创建的project名称为 k8s-log-{cluster-id})。
  3. 进入左侧导航栏中的仪表盘列表,选择【Kubernetes资源操作详细列表】进入。
  4. 在左上角【资源类型】筛选框中输入Deployments,即可查询到之前部署的Deployment。
  5. 可点击左下角【资源创建列表】中的事件ID查询详细的事件信息。

image.png
image.png
image.png

接入其他日志(会后作业)

您可以使用日志服务Logtail接入业务应用的日志来实现自定义的查询、分析、可视化、告警等功能,您可以使用以下任意一种方式接入日志:

1. 基于日志服务控制台创建采集配置:
2. 使用环境变量创建采集配置:
3. 使用CRD方式创建采集配置:

日志相关技术交流群

联系我们

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
|
6天前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
16天前
|
Kubernetes Cloud Native 开发者
云原生入门:从Docker到Kubernetes的旅程
【9月更文挑战第16天】 本文将带你进入云原生的世界,从理解Docker容器的基础开始,逐步深入到Kubernetes集群管理。我们将通过简单的代码示例和实际操作,探索这两个关键技术如何协同工作,以实现更高效、灵活的应用程序部署和管理。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供清晰的指导和实用的知识。
51 11
|
15天前
|
Kubernetes Cloud Native Linux
云原生入门:Kubernetes的简易部署与应用
【8月更文挑战第49天】在云原生的世界里,Kubernetes(K8s)是一颗璀璨的星。本文将带你走进K8s的世界,从安装到简单应用,轻松驾驭这个强大的容器编排工具。让我们一起探索云原生的奥秘,解锁新技能!
|
21天前
|
Kubernetes 应用服务中间件 nginx
Kubernetes上安装Metallb和Ingress并部署应用程序
Kubernetes上安装Metallb和Ingress并部署nginx应用程序,使用LoadBalancer类型的KubernetesService
86 3
|
26天前
|
Kubernetes 监控 Cloud Native
云原生入门:Kubernetes 集群部署与管理
【8月更文挑战第38天】在数字化浪潮中,云原生技术如同翱翔的雄鹰,引领着企业飞向灵活高效的未来。本文将带你一探究竟,从Kubernetes的基础概念到实际操作,深入浅出地介绍如何在云端构建和管理你的容器化应用。我们将一步步搭建起一个小型的Kubernetes集群,并通过代码示例和图解,让你轻松掌握云原生世界的钥匙。让我们一起开启这趟技术之旅,探索云原生的秘密花园,找到那把打开创新之门的金钥匙。
|
29天前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
66 0
|
2月前
|
API UED 开发者
超实用技巧大放送:彻底革新你的WinForms应用,从流畅动画到丝滑交互设计,全面解析如何在保证性能的同时大幅提升用户体验,让软件操作变得赏心悦目不再是梦!
【8月更文挑战第31天】在Windows平台上,使用WinForms框架开发应用程序时,如何在保持性能的同时提升用户界面的吸引力和响应性是一个常见挑战。本文探讨了在不牺牲性能的前提下实现流畅动画与交互设计的最佳实践,包括使用BackgroundWorker处理耗时任务、利用Timer控件创建简单动画,以及使用Graphics类绘制自定义图形。通过具体示例代码展示了这些技术的应用,帮助开发者显著改善用户体验,使应用程序更加吸引人和易于使用。
62 0
|
2月前
|
Kubernetes 监控 Cloud Native
云原生入门:Kubernetes 集群部署与管理
【8月更文挑战第31天】 在数字化浪潮中,云原生技术如同翱翔的雄鹰,引领着企业飞向灵活高效的未来。本文将带你一探究竟,从Kubernetes的基础概念到实际操作,深入浅出地介绍如何在云端构建和管理你的容器化应用。我们将一步步搭建起一个小型的Kubernetes集群,并通过代码示例和图解,让你轻松掌握云原生世界的钥匙。让我们一起开启这趟技术之旅,探索云原生的秘密花园,找到那把打开创新之门的金钥匙。
|
2月前
|
Kubernetes Cloud Native Linux
云原生入门:Kubernetes的简易部署与应用
【8月更文挑战第31天】在云原生的世界里,Kubernetes(K8s)是一颗璀璨的星。本文将带你走进K8s的世界,从安装到简单应用,轻松驾驭这个强大的容器编排工具。让我们一起探索云原生的奥秘,解锁新技能!

相关产品

  • 容器服务Kubernetes版
  • 下一篇
    无影云桌面