采集ACK服务日志

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

阿里云Filebeat支持采集容器服务Kubernetes版ACK(Container Service for Kubernetes)日志,并将采集的日志输出到阿里云Elasticsearch中,进行分析展示。本文介绍如何配置ACK服务日志采集,以及如何查看ACK集群中的采集器资源。

前提条件

  • 创建阿里云Elasticsearch实例。

    具体操作,请参见创建阿里云Elasticsearch实例

  • 自定义自动创建索引。

    为避免索引滚动别名与索引名冲突,建议仅开启filebeat-*索引名,可配置为+.*,+filebeat-*,-*。具体操作,请参见配置YML参数自定义自动创建索引

    重要

    配置索引生命周期管理时,如果开启了索引滚动更新,为避免滚动更新后的别名与索引名冲突,需要确保关闭自动创建索引;如果未开启索引滚动更新,则需要开启自动创建索引。本文建议您设置自定义自动创建索引。

  • RAM用户进行相关操作时,需要为该用户授予Beats操作权限和ACK操作权限。

    详细信息,请参见创建自定义权限策略为RAM用户授权

  • 创建ACK集群,并运行Pod服务。本文以Nginx容器为例。

    具体操作,请参见创建Kubernetes托管版集群

注意事项

  • 阿里云Filebeat仅支持Docker运行环境,不支持其他运行环境,例如Containerd、安全沙箱等。如果使用的是非Docker环境,会导致在创建Filebeat后,采集器一直处于生效中状态。

  • 阿里云Filebeat仅支持安装在专有版ACK和托管版ACK上,不支持安装在其他版本上。

    重要

    仅1.18和1.20版本的Kubernetes支持远程构建。

操作步骤

  1. 登录阿里云Elasticsearch控制台
  2. 进入Beats数据采集中心。
    1. 在顶部菜单栏处,选择地域。
    2. 在左侧导航栏,单击Beats数据采集中心
    3. 可选:首次进入Beats数据采集中心页面,需要在服务授权对话框中查看提示信息,无误后单击确认,授权系统创建服务关联角色。
      说明 Beats采集不同数据源中的数据时,依赖于服务关联角色以及角色规则。使用过程中请勿删除服务关联角色,否则会影响Beats使用。详细信息,请参见Elasticsearch服务关联角色
  3. 创建采集器区域,将鼠标移至Filebeat上,单击ACK日志

  4. 选择目标ES集群配置向导中,配置采集器信息。

    选择目标ES集群

    参数

    说明

    采集器名称

    自定义输入采集器的名称。长度为1~30个字符,以大小写字母开头,可以包含字母、数字、下划线(_)或连字符(-)。

    安装版本

    目前Filebeat只支持6.8.13版本。

    采集器Output

    Filebeat采集内容的输出地址。直接关联已经创建的阿里云Elasticsearch实例。访问协议需要与所选Elasticsearch实例保持一致。

    重要

    不支持选择8.x版本的Elasticsearch实例。

    用户名密码

    访问阿里云Elasticsearch实例的用户名和密码。用户名默认为elastic,密码在创建实例时设定,如果忘记可重置。重置密码的注意事项和操作步骤,请参见重置实例访问密码

    启用Monitoring

    用来监控Filebeat的相关指标。采集器Output选择Elasticsearch,Monitor默认使用和采集器Output相同的阿里云Elasticsearch实例。

    启用Kibana Dashboard

    用来配置默认的Kibana Dashboard。由于阿里云Kibana配置在专有网络内,因此需要在Kibana配置页面开通Kibana私网访问功能。具体操作,请参见配置Kibana公网或私网访问白名单

  5. 单击下一步,在设置采集目标配置向导中,配置采集目标信息。

    1. ACK目标集群中,选择需要进行数据采集的目标集群。

      重要

      请选择与Elasticsearch实例在同一专有网络、Running状态和非边缘托管版(什么是容器服务 Edge 版)的ACK集群。

    2. 根据提示,单击安装,安装采集依赖的ES-operator。

      没有安装按钮,表示已经安装。安装后,安装按钮消失,代表安装成功。

    3. 单击+创建采集目标,配置采集目标信息(支持多个)。

      创建采集目标

      参数

      说明

      采集目标名称

      创建多个采集目标时,名称不可重复。

      命名空间

      选择采集Pod所在的命名空间。如果创建Pod时,未指定命名空间,则默认是default

      Pod Label

      添加Pod标签。添加多个标签时,多个标签之间为逻辑与关系。

      重要
      • 删除Pod标签时,需要至少存在两个标签。

      • 只能定义为Pod对应的Label,不能指定为其他Label,否则会创建失败(例如不能指定为Deployment Label)。

      容器名称

      指定完整的容器名称。不填时,Filebeat会采集命名空间下符合Pod标签的所有容器。

      说明

      获取Pod相关信息(命名空间、标签、名称)的具体操作,请参见管理容器组(Pod)

  6. 单击下一步,在日志采集配置配置向导中,单击+添加日志采集配置,配置日志采集信息(支持多个)。日志采集配置

    参数

    说明

    日志名称

    每个采集目标支持定义多个采集配置,每个采集配置对应一个日志名称,不可重复。日志名称可作为索引名的一部分,用于后续输出使用。

    采集器配置

    使用Docker容器日志采集通用模板。采集配置集成Autodiscover事件变量,支持Docker input,具体说明如下:

    • type:输入类型。采集容器日志时为docker,不同的数据采集支持不同的类型。详细信息,请参见Configure inputs

    • combine_partial:合并多行日志。详细信息,请参见Docker input(combine_partial)

    • containers.ids:Docker容器日志的ID列表。详细信息,请参见Docker input(containers.ids)

    • fileds.k8s_container_name:在采集器的输出信息中,添加k8s_container_name字段,引用变量${data.kubernetes.container.name}

      说明

      Docker容器配置集成了Filebeat Autodiscover,配置模板可引用Autodiscover事件变量。

    • fileds.k8s_node_name:在采集器的输出信息中,添加k8s_node_name字段,引用变量${data.kubernetes.node.name}

    • fileds.k8s_pod:在采集器的输出信息中,添加k8s_pod字段,引用变量${data.kubernetes.pod.name}

    • fileds.k8s_pod_namespace:在采集器的输出信息中,添加k8s_pod_namespace字段,引用变量${data.kubernetes.namespace}

    • fields_under_root:设置为true,fileds存储在输出文档的顶级位置。详细信息,请参见Docker input(fields_under_root)

    说明
    • 如果通用模板无法满足需求,建议您参见FileBeat Docker input修改。

    • 一个采集器配置仅支持一个Docker输出。如果需要使用多个配置,请单击添加日志采集配置

  7. 可选:单击下一步,在索引存储管理配置向导中,根据需求开启并配置索引存储管理功能。

    开启索引存储管理后,单击+添加索引管理策略,按照以下说明配置策略(支持多个)。索引存储管理

    参数

    说明

    策略名称

    定义策略名称,可自定义。

    选择目标日志

    选择待关联的目标日志,至少选择一个。一个策略可选择多个目标日志,每个日志仅可被一个日志管理策略选择。

    资源大小限制

    索引实际占用磁盘空间达到资源限制时(包括副本),将删除过旧数据,以保证不超过该资源大小限制。

    生命周期管理

    是否开启索引生命周期管理。生命周期管理可以实现数据节点冷热分离、过期自动删除数据等。

    重要
    • 开启滚动更新,Filebeat会将数据写入名称为<日志名称>-<日期>-<序号>的索引下,例如log-web-2021.01.22-000001

    • 不开启滚动更新,Filebeat会将数据写入名称为filebeat-<日志名称>-<日期>的索引下。

  8. 单击启动

    启动后,您可在采集器列表中查看对应的采集器。启动成功后,您还可以完成以下操作。

    说明

    ACK集群默认在名称为logging的空间下部署采集器资源,部署完成后,您可以访问对应ACK集群查看已部署的采集器资源,例如索引管理容器、索引生命周期滚动更新策略等,详细信息请参见查看ACK集群中的采集器资源

    操作

    说明

    配置预览

    可查看采集器Output、ACK目标集群及采集任务名称等信息,不支持修改这些信息。

    修改详情配置

    可修改采集目标、日志采集配置和索引存储管理策略。

    更多

    可启动、停止、重启、删除采集任务,并支持查看Dashboard和Helm状态。

查看ACK集群中的采集器资源

执行以下命令,通过kubectl访问ACK集群,并查看logging空间下的采集器资源,详细信息请参见获取集群KubeConfig并通过kubectl工具连接集群

kubectl get pods -n logging
fig01
警告

禁止删除或操作logging名称空间下已经部署的资源,否则会影响系统的正常使用。

pod name

说明

示例

实例名称-binding-序列号

索引管理容器,例如:定时删除老数据。

ct-cn-ew8qx563gu4ng4ot6-binding-7e245-1617347400-c****

实例名称-policy-序列号

索引生命周期滚动更新策略。

ct-cn-ew8qx563gu4ng4ot6-policy-696b7-hot-rollover-1g-16173v****

实例名称-序列号

Filebeat容器。

ct-cn-ew8qx563gu4ng4ot6-q****

es-operator-序列号

创建的ES-operator容器。

es-operator-cb63cc9a6302e4e90aeb2f79adf358b19-56fcd754db-b****