日志服务
参数 | 类型 | 是否必选 | 示例值 | 描述 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
RuleId | String | 是 | fa****** | 采集配置的 ID。 |
RuleName | String | 否 | testname | 在一个日志主题中唯一。 |
Paths | Array of String | 否 | / | 采集路径列表。
|
LogType | String | 否 | delimiter_log | 采集模式。
|
ExtractRule | 否 | / | 日志提取规则。 如果配置非 minimalist_log 或者非 json_log 的采集的日志类型,那么必须同时配置提取规则。 | |
ExcludePaths | 否 | / | 采集黑名单列表。
| |
LogSample | String | 否 | / | 日志样例。
|
UserDefineRule | 否 | / | 用户自定义的采集规则。 | |
InputType | Integer | 否 | 2 | 采集类型。
|
ContainerRule | 否 | / | 容器采集规则。 | |
Pause | Integer | 否 | 1 | 是否暂停采集配置。
|
参数 | 类型 | 是否必选 | 示例值 | 描述 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
Keys | Array of String | 否 | [ "time", "", "level", "msg" ] | 日志字段名称(Key)列表。
|
Quote | String | 否 | " | 引用符。被引用符包裹的内容不会被分隔而是会被解析为一个完整的字段。当且仅当 LogType 为 delimiter_log 时有效。 |
TimeKey | String | 否 | request_time | 日志时间字段的字段名称。如果将日志中的指定时间字段作为日志时间戳,则需要填写 TimeKey 和 TimeFormat。 TimeKey 和 TimeFormat 必须成对出现。 |
LogRegex | String | 否 | [(\d+-\d+-\w+:\d+:\d+,\d+)]\s[(\w+)]\s(.*) | 整条日志需要匹配的正则表达式。
|
TimeZone | String | 否 | GMT+08:00 | 时区,支持机器时区(默认)和自定义时区。其中,自定义时区支持 GMT 和 UTC。
|
Delimiter | String | 否 | # | 日志分隔符。当且仅当 LogType 为 delimiter_log 时有效。 |
BeginRegex | String | 否 | [(\d+-\d+-\w+:\d+:\d+,\d+)]\s[(\w+)]\s(.*) | 第一行日志需要匹配的正则表达式。
|
TimeFormat | String | 否 | %Y-%m-%dT%H:%M:%S,%f | 时间字段的解析格式。如果将日志中的指定时间字段作为日志时间戳,则需要填写 TimeKey 和 TimeFormat。
|
LogTemplate | 否 | { "Type": "Nginx", "Format": "format main '$remote_addr - $remote_user [$time_local] \"$request\" $request_time $request_length $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\"';" } | 根据指定的日志模板自动提取日志字段。 | |
UnMatchLogKey | String | 否 | LogParseFailed | 当上传解析失败的日志时,解析失败的日志的 key 名称。 UnMatchUpLoadSwitch=true 和 UnMatchLogKey 必须成对出现。 |
FilterKeyRegex | 否 | / | 过滤规则列表。
| |
TimeExtractRegex | String | 否 | [0-9]{0,2}\/[0-9a-zA-Z]+\/[0-9:,]+ | 提取时间的正则表达式,用于提取 TimeKey字段中的时间值并解析为对应的采集时间。 |
UnMatchUpLoadSwitch | Boolean | 否 | true | 是否上传解析失败的日志。UnMatchUpLoadSwitch=true 和 UnMatchLogKey 必须成对出现。
|
EnableNanosecond | Boolean | 否 | true | 是否启用纳秒精度时间功能。开启后,解析日志时间时会解析并上报纳秒精度的时间。
|
TimeSample | String | 否 | 2006-01-02T15:04:05Z07:00 | 时间样例。 用于判断填写的时间解析格式是否正确。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
Type | String | 否 | Path | 采集路径类型。
|
Value | String | 否 | /accesslog | 采集路径。必须指定为绝对路径。
|
参数 | 类型 | 是否必选 | 示例值 | 描述 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
Fields | JSON Map | 否 | {"ClusterID":"dabaad5f-7a10-4771-b3ea-d821f73e****"} | 为日志添加常量字段。常量字段需遵循以下限制:
|
Plugin | 否 | {"processors":[{"json":{"field":"__content__","trim_keys":{"mode":"all","chars":"#"},"trim_values":{"mode":"all","chars":"#"},"allow_overwrite_keys":true,"allow_empty_values":true} | LogCollector 插件配置。启用插件配置之后,可以添加一个或多个 LogCollector 处理器插件,解析结构复杂或不固定的日志。 | |
Advanced | 否 | { "CloseInactive": 10 } | LogCollector 扩展配置。 | |
RawLogKey | String | 否 | __raw__ | 原始日志字段名称。 仅在 EnableRawLog 设置为 true 时生效,RawLogKey 默认为 __raw__,表示原始的日志数据将被封装在 __raw__字段中,和解析后的日志数据一起上传到日志服务中。 |
TailFiles | Boolean | 否 | true | LogCollector 采集策略,即指定 LogCollector 采集增量日志还是全量日志。默认为 false,表示采集全量日志。
|
HostnameKey | String | 否 | hostname | hostname 字段名称。 仅在 EnableHostname 为 true 时需要设置。 |
EnableRawLog | Boolean | 否 | true | 是否上传原始日志。
|
ShardHashKey | 否 | { "HashKey": "3C" } | 路由日志分区的规则。
| |
ParsePathRule | 否 | { "PathSample": "/data/nginx/log/dabaad5f-7a10/tls/app.log", "Regex": "\\/data\\/nginx\\/log\\/(\\w+)-(\\w+)\\/tls\\/app\\.log", "Keys": ["instance-id", "pod-name"] } | 解析采集路径的规则。设置规则后,将通过规则中指定的正则表达式提取采集路径中的字段,并将其作为元数据添加到日志数据中。 说明 采集容器标准输出时,不支持指定该参数。 | |
EnableHostname | Boolean | 否 | true | 是否上传 hostname 字段,默认为关闭状态。
|
HostGroupLabelKey | String | 否 | host_group_label | 用于存储机器组 Label 信息的字段名称。 |
EnableHostGroupLabel | Boolean | 否 | true | 是否将机器组的 Label 信息上传到日志服务,默认为关闭状态。
|
TailSizeKb | Integer | 否 | 1024 | 增量采集的回溯阈值,单位为 KiB。 当 LogCollector 采集策略是增量采集时,对于首次采集的日志文件:
|
IgnoreOlder | Integer | 否 | 7 | 忽略多久没有更新的日志文件, 单位为小时。 |
MultiCollectsType | String | 否 | RuleID | 允许多次采集日志文件。
|
参数 | 类型 | 是否必选 | 示例值 | 描述 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
EnvTag | JSON Map | 否 | { "Key1": "Value1", "Key2": "Value2" } | 是否将环境变量作为日志标签,添加到原始日志数据中。开启后,日志服务将在日志中新增容器环境变量相关字段,设置多个键值对时,表示添加多个字段。 例如设置 Key 为 source,设置 Value为data_source,假设容器包含环境变量 source=DC,那么将在日志中新增字段 __tag__data_source__: DC。 |
Stream | String | 否 | all | 采集信息。
|
KubernetesRule | 否 | { "NamespaceNameRegex": ".*test.*", "WorkloadType": "Deployment", "WorkloadNameRegex": ".*test.*", "IncludePodLabelRegex": { "Key1": "Value1", "Key2": "Value2" }, "ExcludePodLabelRegex": { "Key1": "Value1", "Key2": "Value2" }, "PodNameRegex": ".*test.*", "LabelTag": { "Key1": "Value1", "Key2": "Value2" } } | Kubernetes 容器的采集规则。 | |
ContainerNameRegex | String | 否 | .*test.* | 待采集的容器名称。若未指定容器名称,表示采集机器组中全部容器。 支持正则匹配,例如设置容器名称为 ^(container-test)$,表示采集所有名称为 container-test的容器。 |
ExcludeContainerEnvRegex | JSON Map | 否 | { "Key1": "Value1", "Key2": "Value2" } | 容器环境变量黑名单用于指定不采集的容器范围,不启用黑名单时表示采集全部容器。 如果启用容器环境变量黑名单,则 Key 必选,Value 可选。
|
IncludeContainerEnvRegex | JSON Map | 否 | { "Key1": "Value1", "Key2": "Value2" } | 容器环境变量白名单通过容器环境变量指定待采集的容器,不启用白名单时表示指定采集全部容器。 启用容器环境变量的白名单时,需要填写键值对。其中 Key 必选,Value 可选。
|
ExcludeContainerLabelRegex | JSON Map | 否 | { "Key1": "Value1", "Key2": "Value2" } | 容器 Label 黑名单用于指定不采集的容器范围,不启用黑名单时表示采集全部容器。 如果启用容器 Label 黑名单,则 Key 必选,Value 可选。
|
IncludeContainerLabelRegex | JSON Map | 否 | { "Key1": "Value1", "Key2": "Value2" } | 容器 Label 白名单通过容器 Label 指定待采集的容器,不启用白名单时指定采集全部容器。 启用容器 Label 的白名单时,需要填写键值对。其中 Key 必选,Value 可选。
|
参数 | 类型 | 是否必选 | 示例值 | 描述 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
Type | String | 否 | Nginx | 日志模板的类型。支持如下类型:
|
Format | String | 否 | log_format main '$remote_addr - $remote_user [$time_local] "$request" $request_time $request_length $status $body_bytes_sent "$http_referer" "$http_user_agent"'; | 日志模板的格式。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
Key | String | 否 | __content__ | 过滤字段的名称。 |
Regex | String | 否 | .*ERROR.* | 过滤字段的日志内容需要匹配的正则表达式。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
processors | Array of JSON Map | 否 | { "processors":[ { "json":{ "field":"__content__", "trim_keys":{ "mode":"all", "chars":"#" }, "trim_values":{ "mode":"all", "chars":"#" }, "allow_overwrite_keys":true, "allow_empty_values":true } } ] } |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
CloseEOF | Boolean | 否 | true | 读取至日志文件的末尾之后,是否释放该日志文件的句柄。默认为 false。 |
CloseRemoved | Boolean | 否 | true | 日志文件被移除之后,是否释放该日志文件的句柄。默认为 false。 |
CloseRenamed | Boolean | 否 | true | 日志文件被重命名之后,是否释放该日志文件的句柄。默认为 false。 |
CloseTimeout | Integer | 否 | 1800 | LogCollector 监控日志文件的最大时长。单位为秒,默认为0秒,表示不限制 LogCollector 监控日志文件的时长。 LogCollector 开始监控日志文件时开始计时,超出指定时长后,无论日志文件是否读取完毕,立即释放该日志文件的句柄,结束监控。 |
CloseInactive | Integer | 否 | 10 | 释放日志文件句柄的等待时间。当日志文件超过指定时间仍然没有写入新的日志时,释放该日志文件的句柄。 单位为秒,取值范围为 1~300 秒,默认为 60 秒。 |
NoLineTerminatorEOFMaxTime | Integer | 否 | 5 | LogCollector 没有读到换行符时,最大等待时长。 单位为秒,默认为5s。 LogCollector 开始读取日志文件内容时开始计时,超出指定时长没有读到换行符时,将会发送缓冲区的日志。 当文件落盘间隔较大时,一条完整的日志可能会被分割成两部分分别落盘,可以根据您日志的落盘时间间隔调整此参数。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
HashKey | String | 否 | 3C | 日志组的 HashKey,用于指定当前日志组要写入的分区(Shard)。此参数的取值范围为 [00000000000000000000000000000000-ffffffffffffffffffffffffffffffff)。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
Keys | Array of String | 否 | ["instance-id","pod-name"] | 字段名称列表。 日志服务会根据正则表达式(Regex)将路径样例(PathSample)解析为多个字段,Keys 用于指定每个字段的字段名称。
|
Regex | String | 否 | /var/logs/([a-z]*)_any_([a-z]*)/test.log | 用于提取路径字段的正则表达式。必须和采集路径样例匹配,否则无法成功提取。 |
PathSample | String | 否 | /var/logs/instanceid_any_podname/test.log | 实际场景的采集路径样例。
|
参数 | 类型 | 是否必选 | 示例值 | 描述 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
LabelTag | JSON Map | 否 | { "Key1": "Value1", "Key2": "Value2" } | 是否将 Kubernetes Label 作为日志标签,添加到原始日志数据中。开启后,日志服务将在日志中新增 Kubernetes Pod Label 相关字段。设置多个键值对时,表示添加多个字段。 例如设置 Key 为 source,设置 Value 为 data_source,假设 Pod 包含 Labelsource=DC,那么将在日志中新增字段 __tag__data_source__: DC。 |
PodNameRegex | String | 否 | .*test.* | Pod名称用于指定待采集的容器。不指定 Pod 名称时,表示采集全部容器。 Pod名称支持正则匹配,例如设置 Pod 名称为 ^(http.*)$,表示采集以 http 开头的 Pod 下面的所有容器。 |
WorkloadType | String | 否 | Deployment | 通过工作负载的类型指定采集的容器,仅支持选择一种类型。未指定类型时,表示采集全部类型的容器。 支持的工作负载类型如下:
|
AnnotationTag | JSON Map | 否 | { "Key1": "Value1", "Key2": "Value2" } | 是否将 Kubernetes Annotation 作为日志标签,添加到原始日志数据中。开启后,日志服务将在日志中新增 Kubernetes Pod Annotation 相关字段。设置多个键值对时,表示添加多个字段。例如设置 Key 为 sink,设置 Value 为 data_sink,假设 Pod 包含 Annotation sink=ck,那么将在日志中新增字段 __tag__data_sink__: ck。 |
WorkloadNameRegex | String | 否 | .*test.* | 通过工作负载的名称指定待采集的容器。未指定工作负载名称时,表示采集全部容器。 工作负载名称支持正则匹配。例如设置工作负载名称为 ^(http.*)$,表示采集以 http 开头的工作负载下面的所有容器。 |
NamespaceNameRegex | String | 否 | .*test.* | 待采集的 Kubernetes Namespace 名称,不指定 Namespace 名称时表示采集全部容器。 Namespace 名称支持正则匹配。例如设置 Namespace 名称为 ^(tcp|udp)$,表示采集 tcp 命名空间、udp命名空间下面的所有容器。 |
ExcludePodLabelRegex | JSON Map | 否 | { "Key1": "Value1", "Key2": "Value2" } | 通过 Pod Label 黑名单指定不采集的容器,不启用表示采集全部容器。 如果需要设置 Pod Label 黑名单,则 Key 必填,Value 选填。
说明
|
IncludePodLabelRegex | JSON Map | 否 | { "Key1": "Value1", "Key2": "Value2" } | Pod Label 白名单用于指定待采集的容器。未开启 Pod Label 白名单时,表示采集全部容器。 如果需要设置 Pod Label 白名单,则 Key 必填:
说明
|
EnableAllLabelTag | Boolean | 否 | true | 是否将全部的 Kubernetes Label 作为日志标签,添加到原始日志数据中。开启后,日志服务将在日志中新增 Kubernetes Pod 中全部 Label 相关的字段。 例如 Pod 包含 Label source=DC 和 destination=CS,那么将在日志中新增字段 __tag__source__: DC 和 __tag__destination__: CS。 |
ExcludePodAnnotationRegex | JSON Map | 否 | { "Key1": "Value1", "Key2": "Value2" } | Pod Annotation 黑名单用于指定不采集的容器。 如果需要设置 Pod Annotation 黑名单,那么 Key 必填,Value 选填。
Value 默认为字符串匹配,即只有 Value 和 Pod Annotation 的值完全相同才会匹配。如果该值以 ^ 开头并且以 $ 结尾,则为正则匹配。例如设置 Key 为 app,设置 Value 为 ^(test1|test2)$,表示匹配 Pod Annotation 中包含 app:test1、app:test2 的Pod 下的容器。 说明
|
IncludePodAnnotationRegex | JSON Map | 否 | { "Key1": "Value1", "Key2": "Value2" } | Pod Annotation 白名单用于指定待采集的容器。 如果需要设置 Pod Annotation 白名单,则 Key 必填,Value 选填。
Value 默认为字符串匹配,即只有 Value 和 Pod Annotation 的值完全相同才会匹配。如果该值以 ^ 开头并且以 $ 结尾,则为正则匹配。例如设置 Key 为 app,设置 Value 为 ^(test1|test2)$,表示匹配 Pod Annotation 中包含 app:test1、app:test2 的 Pod 下的容器。 说明
|
HTTP 状态码 | 错误码 | 错误信息 | 说明 |
HTTP 状态码 | 错误码 | 错误信息 | 说明 |
400 | InvalidArgument | Invalid argument key %s, value %s, please check argument | 参数不合法。 |
400 | PathQuotaExceed | Path Quota Exceeded | 超过采集路径限额。 |
400 | ExcludePathQuotaExceed | Exclude Path Quota Exceeded | 超过采集黑名单限额。 |
400 | ExtractRuleKeyQuotaExceed | ExtractRule Key Quota Exceeded | 超过提取规则的用户自定义的字段限额。 |
400 | ExtractRuleFilterKeyRegexQuotaExceed | ExtractRule FilterKeyRegex Quota Exceeded | 超过提取规则的过滤规则限额。 |
404 | RuleNotExist | Rule %s does not exist | 采集配置不存在。 |
409 | RuleAlreadyExist | Rule %s already exist | 采集配置已存在。 |
500 | InternalServerError | We encountered an unexpected server error, please try again later. | 服务器内部错误。 |