Loggie是一个基于Golang的轻量级、高性能的云原生日志采集Agent。您可以使用Loggie的Sink配置,将采集到的日志上传到日志服务。本文介绍通过Loggie上传日志到日志服务的操作步骤。
前提条件
已创建Project和Logstore。具体操作,请参见创建项目Project和创建Logstore。
使用限制
支持的Loggie版本需为v1.2.0及以上。
配置参数说明
使用Loggie Sink上传日志时,您需要配置以下参数。更多信息,请参见SLS Sink。
参数 | 必填 | 说明 |
type | 是 | 固定为sls。 |
name | 否 | Loggie Sink的采集名称。 |
endpoint | 是 | 日志服务的服务入口。更多信息,请参见服务入口。 |
project | 是 | 目标Logstore所在的Project。 |
logstore | 是 | 用于存储日志的Logstore。 |
topic | 否 | 日志主题,自定义设置。 |
accessKeyId | 是 | 阿里云AccessKey ID。建议使用RAM用户的AccessKey,该RAM用户需具备Project、Logstore的写权限。更多信息,请参见RAM自定义授权示例。如何获取AccessKey ID,请参见访问密钥。 |
accessKeySecret | 是 | 阿里云AccessKey Secret。建议使用RAM用户的AccessKey,该RAM用户需具备Project、Logstore的写权限。更多信息,请参见RAM自定义授权示例。如何获取AccessKey Secret,请参见访问密钥。 |
示例一:通过Loggie采集ECS日志
采集ECS日志前,您需要在ECS中部署Loggie。具体操作,请参见主机部署。其中,在创建pipelines.yml文件时,需添加Sink配置,示例如下:
pipelines:
- name: test
sources:
- type: file
name: demo
addonMeta: true
paths:
- /tmp/log/*.log
sink:
type: sls
endpoint: ${endpoint}
accessKeyId: ${accessKeyId}
accessKeySecret: ${accessKeySecret}
project: ${project}
logstore: ${logstore}
topic: ${topic}
sources:通过sources指定日志的类型和日志所在位置。本示例是采集/tmp/log目录下所有文件名以.log结尾的文件中的日志。
sink:通过sink指定日志服务相关信息。各个参数说明,请参见配置参数说明。
通过Loggie采集ECS日志到日志服务后,您可以在目标Logstore中查看日志,日志样例如下图所示。
示例二:通过Loggie采集Kubernetes集群日志
您可以在阿里云ACK集群或自建Kubernetes集群中部署Loggie,然后通过Loggie将日志上传到日志服务。
您可以通过kubectl或Helm工具部署Loggie。本文以通过Helm安装Loggie为例,介绍采集kube-system命名空间下的标准输出。必要的安装步骤如下所示,更多信息,请参见Loggie Kubernetes部署。
在Kubernetes集群中,通过Helm安装Loggie。
helm pull https://github.com/loggie-io/installation/releases/download/v1.2.0/loggie-v1.2.0.tgz && tar xvzf loggie-v1.2.0.tgz
部署Loggie。
其中,./loggie为loggie-v1.2.0.tgz的解压目录。
helm install loggie ./loggie -nloggie --create-namespace
重要如果您要采集未挂载emptyDir/hostPath的Pod日志,请确保values.yaml文件的系统配置中的discovery.kubernetes.rootFsCollectionEnabled为true。
配置discovery.kubernetes.containerRuntime为匹配的Kubernetes集群的容器运行时,默认配置为containerd。
安装Loggie后,您需要创建一个Logconfig CRD文件,用于采集日志。更多信息,请参见Logconfig。本文以采集kube-system下的pod的标准输出为例,对应的CRD示例如下:
apiVersion: loggie.io/v1beta1
kind: LogConfig
metadata:
name: loggie-config
namespace: kube-system
spec:
selector:
labelSelector:
namespace: kube-system
type: pod
pipeline:
sources: |
- type: file
name: stdout
paths:
- stdout
sink: |
type: sls
endpoint: ${endpoint}
accessKeyId: ${accessKeyId}
accessKeySecret: ${accessKeySecret}
project: ${project}
logstore: ${logstore}
topic: myservice
sources:通过sources指定采集容器的标准输出。
sink:通过sink指定日志服务相关信息。各个参数说明,请参见配置参数说明。
通过Loggie采集Kubernetes日志到日志服务后,您可以在目标Logstore中查看日志,日志样例如下图所示。