日志服务(Log Service,简称 LOG)是针对日志类数据的一站式服务。您无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能。在Knative中结合日志服务,能有效提升对Serverless应用的运维能力。本文介绍如何在Knative中使用日志服务收集Serverless应用容器日志,采用日志服务收集、分析业务日志,满足生产级别的Serverless应用运维的诉求。
前提条件
已开通日志服务。具体操作,请参见通过日志服务采集Kubernetes容器日志。
已为集群部署Knative。具体操作,请参见在ACK集群中部署Knative。
步骤一:部署服务
本文部署一个名称为helloworld-go
的Knative服务。具体操作,请参见快速部署Serverless应用。
步骤二:为服务接入日志采集
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息。
在集群信息页面,单击集群资源页签,然后单击日志服务 Project右侧的链接。
在helloworld-go项目页面的左下角,单击接入数据,为helloworld-go服务接入日志采集。
在快速数据接入页面的Docker标准输出 - 容器的卡片上,单击立即接入,然后根据页面提示进入Docker标准输出配置页面。
在选择日志空间配置中,确认日志空间信息并单击下一步。
设置创建机器组。
已在前提条件中安装ogtail-ds日志组件,因此请单击使用现有机器组。
您可以选择Kubernetes或者标准Docker采集进行日志采集。具体操作,请参见通过日志服务采集Kubernetes容器日志和采集标准Docker容器日志。
设置机器组配置,完成后单击下一步。
在数据源设置向导页面,单击切换为编辑器配置,然后设置插件配置。
本文针对helloworld-go服务,设置采集的环境变量为:
"K_SERVICE": "helloworld-go"
。并且通过processors分割日志信息,如这里"Keys": [ "time","level", "msg" ]
。插件配置示例如下。{ "inputs": [ { "detail": { "IncludeEnv": { "K_SERVICE": "helloworld-go" }, "IncludeLabel": {}, "ExcludeLabel": {} }, "type": "service_docker_stdout" } ], "processors": [ { "detail": { "KeepSource": false, "NoMatchError": true, "Keys": [ "time", "level", "msg" ], "NoKeyError": true, "Regex": "(\\d+-\\d+-\\d+\\s+\\d+:\\d+:\\d+)\\s+(\\w+)\\s+(.*)", "SourceKey": "content" }, "type": "processor_regex" } ] }
数据源设置完成后,单击下一步。
在查询分析配置页面,开启全文索引,设置查询字段索引属性。
单击下一步进入结束页面。
执行以下命令,访问helloworld-go示例服务。
此时会产生日志信息。
curl -H "Host: helloworld-go.default.example.com" http:<网关IP> # 网关IP和域名请以您的实际数据为准。
预期输出:
Hello Knative!
在日志库的目标日志右侧悬浮鼠标至图标上,选择 ,可以看该logstore的日志信息。
设置查询分析。
关于如何查询和分析日志,请参见查询和分析日志。