事件监控

更新时间:2025-02-14 09:33:26

事件监控是Kubernetes中的一种监控方式,可以弥补资源监控在实时性、准确性和场景上的不足。您可以通过使用kube-eventer将集群的事件离线到钉钉、SLS、EventBridge等系统,并提供不同等级的过滤条件,实现事件的实时采集、定向告警、异步归档。

背景信息

ASK提供开箱即用的容器场景事件监控方案,通过容器服务团队维护的kube-eventer组件提供容器事件监控能力。

image

kube-eventer是容器服务团队维护的开源Kubernetes事件离线工具,可以将集群的事件离线到钉钉、SLS、EventBridge等系统,并提供不同等级的过滤条件,实现事件的实时采集、定向告警、异步归档。更多信息请参见kube-eventer

本文将通过以下三种场景为您介绍事件监控:

前提条件

已安装kube-eventer组件。

说明

您可以在集群管理页的左侧导航栏选择运维管理 > 组件管理,在日志与监控页签下安装kube-eventer组件。组件本身不收取费用,但会占用您的Pod资源。

场景一:使用SLS离线Kubernetes事件

阿里云日志服务SLS(Log Service)可以将Kubernetes的事件以更持久的方式进行存储,从而提供更多的事件归档、审计的能力。详情请参见创建并使用K8s事件中心

  1. 创建ProjectLogstore。

    1. 登录日志服务管理控制台

    2. Project列表区域,单击创建Project,填写Project的基本信息并单击确认进行创建。

      本示例创建一个名为k8s-log4jProject,与Kubernetes集群位于同一地域(华东1)。

      说明

      为降低成本并提高效率,通常建议将日志服务与Kubernetes集群配置在同一地域。这样可以使日志数据通过内网进行传输,避免因地域不一致产生的外网数据传输费用,并减少传输延迟,实现日志的实时采集和快速查询。

    3. 创建完成后,k8s-log4j出现在Project列表下,单击该Project名称,进入Project详情页面。

    4. 默认进入日志库页面,在页面左侧,单击加号+,弹出创建Logstore对话框。

    5. 填写日志库配置信息并单击确定

      本示例创建名为k8s-logstore的日志库。

      image

    6. 创建完毕后,页面会提示您使用数据接入向导。单击数据接入向导,弹出接入数据对话框。

    7. 选择Log4j 1/2,根据页面引导进行配置。

      本示例使用了默认配置,您可根据日志数据的具体使用场景,进行相应的配置。

      自定义数据

  2. Kubernetes集群中配置log4j。

    1. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Helm

    2. Helm页面,找到kube-eventer组件,然后在组件对应的操作列单击更新,修改以下内容,然后单击确定

      • npd下方的enabled设置为false

      • eventer.sinks.sls.enabled设置为true

      • eventer.sinks.sls.logstore设置为 步骤1创建好的Logstore名称。

      • eventer.sinks.sls.project设置为 步骤1创建好的Project名称。

  3. 操作集群(例如,删除Pod或者创建应用等)产生事件后,登录日志服务控制台查看数据采集。请参见通过API消费

    查看采集数据

  4. 设置索引与归档。请参见创建索引

    1. 在日志服务控制台Project列表区域,单击Project名称。

    2. 单击日志库名称后的日志库管理图标图标,选择查询分析

    3. 单击右上角的开启索引

    4. 查询分析对话框中配置索引,然后单击确定

      此时会出现日志查询与分析页面。日志分析页面

      说明
      • 索引配置在1分钟之内生效。

      • 开启或修改索引后,新的索引配置只对新写入的数据生效。

    5. (可选)在需要设置离线归档与计算的场景下,在Logstore上将数据投递给MaxCompute或者OSS,请参见创建MaxCompute投递任务(新版)创建OSS投递任务(新版)

场景二:使用EventBridge离线Kubernetes事件

事件总线EventBridge是阿里云提供的一款无服务器事件总线服务,支持阿里云服务、自定义应用及SaaS应用以标准化、中心化的方式接入,容器服务事件可支持通过离线到EventBridge实现构建松耦合、分布式的事件驱动架构。关于EventBridge的详情,请参见什么是事件总线EventBridge

  1. 开通事件总线EventBridge。具体操作,请参见开通事件总线EventBridge并授权

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Helm

  3. Helm页面,定位kube-eventer组件,然后在组件对应的操作列单击更新,将eventer.sinks.eventbridge.enable修改为true,以配置事件中心并开启EventBridge事件离线数据链路,然后单击确定

    image

  4. 数据链路开启成功后,在事件总线EventBridge控制台查看容器事件。

    1. 登录事件总线EventBridge控制台

    2. 在左侧导航栏,单击事件总线

    3. 事件总线页面,单击目标总线名称。

    4. 在左侧导航栏,单击事件追踪

    5. 选择事件查询方式,设置查询条件,单击查询

    6. 在事件列表操作列,单击事件详情,查看事件详细内容。

      更多信息,请参见查询事件

场景三:使用钉钉机器人实现Kubernetes监控告警

使用钉钉机器人监控并告警Kubernetes的事件是一个非常典型的ChatOps实现。具体的操作步骤如下。

  1. 配置钉钉机器人

    1. 单击钉钉群右上角的群设置图标,进入群设置页面。

    2. 单击机器人,然后单击添加机器人,选择需要添加的机器人。此处选择自定义机器人。

      自定义机器人

    3. 机器人详情页面,单击添加,进入添加机器人页面。

      添加机器人

      根据以下信息配置群机器人后,阅读并同意服务及免责条款,然后单击完成

      参数

      说明

      参数

      说明

      编辑头像

      (可选)为群机器人设置头像。

      机器人名字

      添加的机器人名称。

      添加到群组

      添加机器人的群组。

      安全设置

      安全设置支持3种方式:自定义关键词、加签和IP地址(段)。

      目前集群的事件监控仅支持第一种方式,即自定义关键词

      选中自定义关键词,填入Warning可接收所有监控报警。如果发现机器人消息发送过于频繁,可增加关键词进行过滤,最多支持设置10个关键词。ASK发送消息时也会同步此关键词。

    4. 单击复制,复制webhook地址以备后续使用。

      复制webhook

      说明

      群机器人页面,选择目标群机器人,单击右侧设置按钮图标可以进行以下操作:

      • 修改群机器人的头像及机器人名字。

      • 开启关闭消息推送。

      • 重置webhook地址。

      • 删除群机器人。

  2. 更新kube-eventer组件的配置。

    1. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Helm

    2. Helm页面,找到kube-eventer组件,然后在组件对应的操作列单击更新,修改以下内容,然后单击确定

      • npd下方的enabled设置为false

      • eventer.sinks.dingtalk.enabled设置为true

      • 通过步骤1. 配置钉钉机器人创建webhook地址查看Token,填入Token字段。

预期结果:

部署成功后30秒,eventer生效,当事件等级超过阈值等级时,即可在钉钉群收到如下告警。消息提醒

  • 本页导读 (1)
  • 背景信息
  • 前提条件
  • 场景一:使用SLS离线Kubernetes事件
  • 场景二:使用EventBridge离线Kubernetes事件
  • 场景三:使用钉钉机器人实现Kubernetes监控告警
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等