ACK部署场景-应用日志

本文介绍托管版服务,ACK部署场景下应用日志的配置流程。

原理介绍

在ACK场景中,计算巢基于ACK日志插件实现日志管理功能。

您的应用表现形式为集群中的一个Deployment或StatefulSets,计算巢通过给应用添加环境变量和伪参数的方式实现租户应用日志的动态打标签和日志的统一收集。原理可查看下列示意图:

image

创建包含应用日志功能的全托管服务

概述流程

  1. 服务商准备服务所需要的SLS相关资源。包含日志仓库Project、日志库Logstore、日志采集配置(视不同部署场景可能需要)。

  2. 如需授予用户查看服务实例应用日志的权限,需要配置代运维权限。

完整流程

该部分完整讲述每个场景下的具体配置步骤。

步骤一. 准备SLS资源

因为不同地域间的SLS传输价格不菲,因此对于您的服务支持部署的地域,需要每个地域配置一个SLS Project,应用相关的Sls logstore和日志采集配置。为了简化该步骤的流程,计算巢提供了通用日志资源准备服务,可帮助您初始化日志SLS Project和Logstore。

举例说明,假设您的服务需要支持在北京和上海部署,且该应用需要收集slow*.log和error*.log。则您需要做的如下:

ACK单租/多租场景:

  1. 需要的资源:ACK集群,北京和上海两个SLS Project。对于上述两个SLS Project,需要每个SLS Project下创建两个Logstrore,比如一个Logstore叫slow对应收集slow*.log,一个Logstore叫error对应收集error*.log。

  2. 对于上述资源,可使用计算巢提供的SLS资源快速准备服务完成配置。

    1. 如果已有集群:

      1. 选择部署的地域和部署场景为ACK场景image

      2. 配置日志项目名称和Logstore名称数组image

      3. 重要

        如果集群没有安装日志插件logtail-ds,则安装ACK Logtail。已安装需忽略。ACK集群控制台组件管理-日志与监控部分查看

        image

    2. 如果没有集群。

      1. 填写如图所示的日志配置。image

      2. 选择新建ACK集群,并填写参数image

      3. 等待该服务实例创建完成

步骤二. 创建全托管服务

  1. 登录计算巢控制台

  2. 在左侧导航栏中,选择我的服务,并在我的服务页面中选择我创建的服务,然后单击创建新服务

  3. 创建新服务界面,配置服务信息。

    此处只列举自定义运维需要特别配置的参数,其他参数,请参见创建全托管服务

    1. 服务模板处进行修改。

      1. ACK场景。在您通过Deployment或者StatefulSets的模板处,添加环境变量。

        • 示例模板如下:模板中${key}为动态传入的日志库名,即LogstoreName,也就是之前创建的“日志库名称”。

        • 下图示例中的前三个环境变量中只需将${key}动态替换,而保持其余部分不变,并复制到您的ROS部署模板即可。

        • 固定配置部分不用修改,直接添加到ROS部署模板环境变量即可。

        重要

        ACK部署情形中,环境变量中的${key}名称必须和创建的logstore名称保持一致,且不要包含下划线"_"。

        - |
          apiVersion: apps/v1
          kind: StatefulSet
          metadata:
            name: '{{ serviceInstanceId }}'
          spec:
            serviceName: '{{ serviceInstanceId }}'
            replicas: ${Replicas}
            selector:
              matchLabels:
                app: mysql
            template:
              metadata:
                labels:
                  app: mysql
              spec:
                containers:
                  - name: mysql
                    image: mysql:latest
                    env:
            	      # 指定该应用投放的日志project
                      - name: 'aliyun_logs_{{ serviceSls.slow-log.Logstore }}_project'
                        value: '{{ serviceSls.LogProject }}'
                      # 设置日志文件路径
                      - name: aliyun_logs_{{ serviceSls.slow-log.Logstore }}
                        value: '{{ serviceSls.slow-log.LogPath }}{{ serviceSls.slow-log.LogFilePattern }}'
                      # 表示日志的存储库logstore
                      - name: 'aliyun_logs_{{ serviceSls.slow-log.Logstore }}_logstore'
                        value: '{{ serviceSls.slow-log.Logstore }}'
                      # 固定配置部分。表示日志投递标签
                      - name: aliyun_logs_serviceinstanceid_tags
                        value: _service_instance_id={{ serviceInstanceId }}
                      # 固定配置部分。表示日志被投递到sls携带的tag,key=value形式
                      - name: aliyun_logs_tenantid_tags
                        value: _ali_uid_={{ aliUid }}
                     
      2. 服务运维(选填)区域的日志处,配置应用日志信息。

        1. 开启应用日志,根据要支持的部署地域选择不同的SLS project,然后单击添加日志收集地域image

          说明

          如开启了应用日志,则支持的部署地域会同步为应用日志支持地域。

        2. 添加logstore弹窗中,设置应用日志信息。image

          配置项

          配置说明

          地域

          应用日志支持的地域

          日志项目

          选择地域下的日志项目

          日志库名称

          应用日志保存到的SLS logstore的日志库名字。

          路径

          应用日志储存的文件路径。

          指定文件夹下所有符合文件名称的文件都会被监控(包含所有层次的目录)。

          文件名

          设置应用日志库的文件名称。

          文件名称可以是完整名,也支持通配符模式匹配,支持使用环境变量。

        • 需要配置日志库名称、文件路径和文件名信息。计算巢会按照已配置的信息,在用户账号下使用日志服务SLS极简模式采集文本日志。

4.单击创建服务,并在弹出的确认弹窗中单击确定

步骤三. 服务商授予用户查看日志权限(可选)

在服务运维勾选需要给用户授权,在下拉框中选择只读权限或全部权限。

image

创建服务实例并查看应用日志

  1. 创建服务实例。

更多信息,请参见创建全托管服务实例

  1. 查看应用日志。服务创建完成后,

    1. 在已创建的服务实例详情页,单击日志管理 > 应用日志

    2. 应用日志页签中,查看服务实例的应用日志信息。

您可以指定一个日志库,可以查看具体的日志内容;也可以单击查看SLS控制台,转跳到日志服务控制台,查看详细信息。

image