本文介绍托管版服务,ACK部署场景下应用日志的配置流程。
原理介绍
在ACK场景中,计算巢基于ACK日志插件实现日志管理功能。
您的应用表现形式为集群中的一个Deployment或StatefulSets,计算巢通过给应用添加环境变量和伪参数的方式实现租户应用日志的动态打标签和日志的统一收集。原理可查看下列示意图:

创建包含应用日志功能的全托管服务
概述流程
-
服务商准备服务所需要的SLS相关资源。包含日志仓库Project、日志库Logstore、日志采集配置(视不同部署场景可能需要)。
-
如需授予用户查看服务实例应用日志的权限,需要配置代运维权限。
完整流程
该部分完整讲述每个场景下的具体配置步骤。
步骤一. 准备SLS资源
因为不同地域间的SLS传输价格不菲,因此对于您的服务支持部署的地域,需要每个地域配置一个SLS Project,应用相关的Sls logstore和日志采集配置。为了简化该步骤的流程,计算巢提供了通用日志资源准备服务,可帮助您初始化日志SLS Project和Logstore。
举例说明,假设您的服务需要支持在北京和上海部署,且该应用需要收集slow*.log和error*.log。则您需要做的如下:
ACK单租/多租场景:
-
需要的资源:ACK集群,北京和上海两个SLS Project。对于上述两个SLS Project,需要每个SLS Project下创建两个Logstrore,比如一个Logstore叫slow对应收集slow*.log,一个Logstore叫error对应收集error*.log。
-
对于上述资源,可使用计算巢提供的SLS资源快速准备服务完成配置。
-
如果已有集群:
-
选择部署的地域和部署场景为ACK场景。在创建服务实例页面,选择模板选择ack,填写服务实例名称(长度不超过64个字符,必须以英文字母开头,可包含数字、英文字母、短划线和下划线),地域选择华东2(上海)。
-
配置日志项目名称和Logstore名称数组。在 SLS项目配置 区域,设置 SLS项目名称 为
Log-Service-Shanghai(名称全局唯一,只能包含小写字母、数字和短划线,长度3-63字符)。在 SLS logstore名称数组 中添加两个 logstore:slow和error(名称只能包含小写字母、数字、短划线和下划线,长度3-63字符)。可通过 + 新增 按钮添加更多 logstore。 -
重要
如果集群没有安装日志插件logtail-ds,则安装ACK Logtail。已安装需忽略。ACK集群控制台组件管理-日志与监控部分查看
在 ACK集群配置 区域,根据需要打开 是否新建ACK集群 和 安装ACK logtail 开关,在 集群ID 下拉框中选择目标集群。如需新建集群,可单击 创建集群。
-
-
如果没有集群。
-
填写日志配置。在选择模板处选择ack,填写服务实例名称,选择地域。在SLS项目配置区域,设置SLS项目名称(例如
app-log-demo)和SLS logstore名称数组(例如slow-log,可单击+ 新增添加多个logstore)。 -
选择新建ACK集群,并填写参数。在 ACK集群配置 区域,开启 是否新建ACK集群 开关。付费类型 选择 按量付费。在 基础配置 区域,选择可用区(例如 可用区 J),专有网络IPv4网段 填写
192.168.0.0/16,交换机子网网段 填写192.168.1.0/24,并设置 实例密码(长度8-30位,须包含大写字母、小写字母、数字、特殊符号中的三项)。 -
等待该服务实例创建完成
-
-
步骤二. 创建全托管服务
-
登录计算巢控制台。
-
在左侧导航栏中,选择我的服务,并在我的服务页面中选择我创建的服务,然后单击创建新服务。
-
在创建新服务界面,配置服务信息。
此处只列举自定义运维需要特别配置的参数,其他参数,请参见创建全托管服务
-
服务模板处进行修改。
-
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 }} -
-
在服务运维(选填)区域的日志处,配置应用日志信息。
-
开启应用日志,根据要支持的部署地域选择不同的SLS project,然后单击添加日志收集地域。
说明如开启了应用日志,则支持的部署地域会同步为应用日志支持地域。
-
在添加logstore弹窗中,设置应用日志信息。
配置项
配置说明
地域
应用日志支持的地域
日志项目
选择地域下的日志项目
日志库名称
应用日志保存到的SLS logstore的日志库名字。
路径
应用日志储存的文件路径。
指定文件夹下所有符合文件名称的文件都会被监控(包含所有层次的目录)。
文件名
设置应用日志库的文件名称。
文件名称可以是完整名,也支持通配符模式匹配,支持使用环境变量。
-
需要配置日志库名称、文件路径和文件名信息。计算巢会按照已配置的信息,在用户账号下使用日志服务SLS极简模式采集文本日志。
-
-
-
4.单击创建服务,并在弹出的确认弹窗中单击确定。
步骤三. 服务商授予用户查看日志权限(可选)
在服务运维勾选需要给用户授权,在下拉框中选择只读权限或全部权限。
在策略标签中添加AliyunComputeNestPolicyForReadOnly只读策略。
创建服务实例并查看应用日志
-
创建服务实例。
更多信息,请参见创建全托管服务实例。
-
查看应用日志。服务创建完成后,
-
在已创建的服务实例详情页,单击日志管理 > 应用日志。
-
在应用日志页签中,查看服务实例的应用日志信息。
-
您可以指定一个日志库,可以查看具体的日志内容;也可以单击查看SLS控制台,转跳到日志服务控制台,查看详细信息。
在实例的日志管理页面,单击应用日志Tab,在日志库下拉框中选择slow-log,即可查看慢查询日志列表。每条日志包含时间、User@Host、Query_time、Lock_time、Rows_sent、Rows_examined及实际执行的SQL语句等信息。