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

示例二:通过Loggie采集Kubernetes集群日志

您可以在阿里云ACK集群或自建Kubernetes集群中部署Loggie,然后通过Loggie将日志上传到日志服务。

您可以通过kubectl或Helm工具部署Loggie。本文以通过Helm安装Loggie为例,介绍采集kube-system命名空间下的标准输出。必要的安装步骤如下所示,更多信息,请参见Loggie Kubernetes部署

  1. 在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
  2. 部署Loggie。

    其中,./loggieloggie-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中查看日志,日志样例如下图所示。Loggie

更多参考