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中查看日志,日志樣例如下圖所示。