AliyunLogConfig是日志服務自定義的一類CRD,您可以通過配置YAML文件創建對應的CR,從而管理iLogtail采集配置。本文主要介紹通過AliyunLogConfig管理iLogtail采集配置的操作步驟。
前提條件
已安裝iLogtail組件。具體操作,請參見安裝Logtail組件(阿里云Kubernetes集群)。
目標容器持續產生日志。
重要iLogtail只采集增量日志。如果下發iLogtail配置后,日志文件無更新,則iLogtail不會采集該文件中的日志。更多信息,請參見讀取日志。
使用限制
通過AliyunLogConfig CR創建的配置,在控制臺上對其修改不會同步到CR中。因此,如需修改由AliyunLogConfig CR創建的配置內容,只能修改CR資源,不能直接在控制臺操作,避免配置不一致。
配置步驟
創建iLogtail采集配置
您需要創建AliyunLogConfig
的CR,alibaba-log-controller
會根據CR自動創建iLogtail采集配置。創建完成后,系統自動應用該iLogtail采集配置。
執行如下命令創建一個YAML文件。
cube.yaml
為文件名,請根據實際情況替換。
vim cube.yaml
在YAML文件中輸入如下腳本,并根據實際情況設置其中的參數。CR結構的詳細參數請參見CR參數說明。
apiVersion: log.alibabacloud.com/v1alpha1 # 使用默認值,無需修改。
kind: AliyunLogConfig # 使用默認值,無需修改。
metadata:
name: test-config # 設置資源名,在當前Kubernetes集群內唯一。
spec:
logstore: k8s-stdout # 設置Logstore名稱。如果您所指定的Logstore不存在,日志服務會自動創建。
logtailConfig: # 設置iLogtail采集配置。
inputType: plugin # 設置采集的數據源類型。
configName: test-config # 設置iLogtail采集配置的名稱。
inputDetail: # 設置iLogtail采集配置的詳細信息。
...
執行如下命令創建
AliyunLogConfig
的CR,會根據該CR自動創建iLogtail采集配置,從而使iLogtail采集配置生效。iLogtail采集配置生效后,Logtail開始采集數據,并發送到日志服務中。cube.yaml
為文件名,請根據實際情況替換。
kubectl apply -f cube.yaml
查看iLogtail采集配置
查看當前Kubernetes集群中所有由
AliyunLogConfig
創建的iLogtail采集配置。您可以執行以下命令,查看所有由
aliyunlogconfigs
創建的iLogtail采集配置。kubectl get aliyunlogconfigs
查看由AliyunLogConfig創建的iLogtail采集配置的詳細信息和狀態。
您可以執行
kubectl get aliyunlogconfigs <config_name> -o yaml
命令進行查看。其中,<config_name>
為AliyunLogConfig
的名稱,請根據實際情況替換。返回結果參考如下所示,執行結果中的
status
字段和statusCode
字段表示iLogtail采集配置的狀態。如果
statusCode
字段的值為200,表示應用iLogtail采集配置成功。如果
statusCode
字段的值為非200,表示應用iLogtail采集配置失敗。
apiVersion: log.alibabacloud.com/v1alpha1 kind: AliyunLogConfig metadata: name: example-k8s-file namespace: kube-system spec: project: k8s-log-test logstore: k8s-file logtailConfig: inputType: file configName: example-k8s-file inputDetail: logType: common_reg_log logPath: /data/logs/app_1 filePattern: test.LOG dockerFile: true status: status: OK statusCode: 200
更新iLogtail采集配置
您只需要修改已有的AliyunLogConfig
的YAML文件并重新應用,就可以更新iLogtail采集配置。
編輯已有的
AliyunLogConfig
YAML文件。cube.yaml
為文件名,請根據實際情況替換。
vim cube.yaml
在YAML文件中修改配置參數。關于詳細參數配置,請參見CR參數說明。
執行如下命令使iLogtail采集配置生效。
cube.yaml
為文件名,請根據實際情況替換。
kubectl apply -f cube.yaml
刪除iLogtail采集配置
如果您要刪除iLogtail采集配置,只需刪除對應的CR即可。其中,<config_name>
為AliyunLogConfig
的名稱,請根據實際情況替換。
kubectl delete aliyunlogconfigs <config_name>
CR刪除后,iLogtail采集配置也會自動被刪除。
CR參數說明
ApiVersion
固定為
log.alibabacloud.com/v1alpha1
。Kind
固定為
AliyunLogConfig
。Metadata
參數
數據類型
是否必填
說明
name
string
是
CR 的唯一標識,建議與Spec.logtailConfig.configName相同。
namespace
string
否
CR 所在的命名空間。
Spec
參數
數據類型
是否必填
說明
project
string
否
目標 Project 名稱。集群默認配置的 Project,alibaba-log-controller 環境變量
ALICLOUD_LOG_PROJECT
的值。說明如果您所指定的Project不存在,日志服務會自動創建。
logstore
string
是
目標 Logstore 名稱。
說明如果您所指定的Logstore不存在,日志服務會自動創建。
如果您所指定的Logstore已存在,后續所有Logstore相關的參數將不會生效。
logtailConfig
是
iLogtail采集配置詳情。
uid
string
否
目標賬號的 uid。如果是跨賬號投遞日志,需要配置該參數,并在 alibaba-log-controller 的環境變量中配置
ALICLOUD_LOG_ACCOUNT_INFOS={"<uid>":{"accessKeyID":"<your_access_key_id>","accessKeySecret":"<your_access_key_secret>"}}
說明該參數需要alibaba-log-controller 0.3.2及以上版本支持。
該參數僅控制Project所屬的賬號,iLogtail數據投遞到該賬號需要另外配置iLogtail的用戶標識,詳情請參見配置用戶標識。
endpoint
string
否
目標Project的服務入口。更多信息,請參見服務入口。默認為當前集群所在的地域,如果目標Project 與集群不在同一地域,需要配置該參數。
說明該參數需要alibaba-log-controller 0.4.1及以上版本支持。
該參數僅控制采集配置所在的region,iLogtail數據投遞到該region需要另外配置iLogtail的config_server_address、data_server_list,參考Logtail配置文件和記錄文件。
logstoreMode
string
否
目標Logstore的類型。更多信息,請參見Logstore類型。默認值為standard,可選值:
query:查詢型Logstore。
standard:標準型Logstore。
說明該參數需要alibaba-log-controller 0.3.3及以上版本支持。
shardCount
int
否
目標 Logstore 的 shard 數量。更多信息,請參見管理Logstore。默認值為2,取值范圍為1~10。
logstoreMaxSplitShard
int
否
目標 Logstore 的最大自動分裂 shard 數量。更多信息,請參見自動分裂Shard。默認值為32,取值范圍為1~256。
logstoreAutoSplit
bool
否
目標 Logstore 是否開啟自動拆分 shard 功能。更多信息,請參見自動分裂Shard。默認值為true。
lifeCycle
int
否
目標 Logstore 的數據存儲的時間(以天為單位)。更多信息,請參見數據保存時間。默認值為180,取值范圍為1~3650,如果配置為3650,表示永久保存。
logstoreHotTTL
int
否
目標 Logstore 的熱數據存儲的時間(以天為單位)。更多信息,請參見智能存儲分層。默認值為0,需要小于 lifeCycle 且大于等于 7。
logstoreTelemetryType
string
否
目標 Logstore 的可觀測數據類型。更多信息,請參見telemetryType。默認值為None,可選值:
None:日志類型。
Metrics:Metrics 類型。
logstoreAppendMeta
bool
否
目標 Logstore 是否開通記錄外網IP功能。更多信息,請參見記錄外網IP。默認值為true。
logstoreEnableTracking
bool
否
目標 Logstore 是否啟用 Web Tracking。更多信息,請參見WebTracking。默認值為false。
logstoreEncryptConf
object
否
目標 Logstore 的加密配置信息。更多信息,請參見通用數據結構。默認值為空。
logstoreMeteringMode
string
否
目標 Logstore 的計費模式。更多信息,請參見計費模式。默認值為空,可選值:
ChargeByFunction:按功能計費
ChargeByDataIngest:按寫入量計費。
說明該參數需要alibaba-log-controller 0.4.3及以上版本支持。
如果 Logstore 的 logstoreMode 為 query,只支持按功能計費。
如果賬號未開通寫入量計費,只能配置為ChargeByFunction。
machineGroups
array
否
iLogtail采集配置關聯的機器組列表。更多信息,請參見機器組簡介。安裝logtail-ds組件時,日志服務會自動創建名為
k8s-group-${your_k8s_cluster_id}
的機器組,默認值為該機器組。configTags
map
否
用于標記iLogtail采集配置的自定義標簽。
說明該參數需要alibaba-log-controller 0.4.2及以上版本支持。
AliyunLogConfigDetail
詳細的參數說明請參見Logtail配置,AliyunLogConfigDetail的數據格式與Logtail配置一致。
參數
數據類型
是否必填
說明
configName
string
是
Logtail配置的名稱,在其所屬Project內必須唯一。創建Logtail配置成功后,無法修改其名稱。建議與資源名相同(metadata.name)。
命名規則如下:
只能包括小寫字母、數字、短劃線(-)和下劃線(_)。
必須以小寫字母或者數字開頭和結尾。
長度必須在2~128字符之間。
logSample
string
否
日志樣例。需要小于1500字節。
inputType
string
是
日志輸入的方式。可選值如下:
plugin:通過Logtail插件采集標準輸出、MySQL Binlog等日志。
file:通過固定模式(正則模式、分隔符模式等)采集文本文件中的日志。
inputDetail
Object
是
日志輸入的相關配置。更多信息,請參見inputDetail參數說明。