Logtail配置叫做config,每个Project默认可以创建100个配置(config)。Config名称在Project下具备唯一性。

您可以通过config指定日志收集的位置、方式和参数。

Logtail配置命名规范:
  • 只能包括小写字母、数字、连字符(-)和下划线(_)
  • 必须以小写字母或者数字开头和结尾
  • 长度必须在2~128字节以内
配置示例如下:
{
    "configName": "logConfigName", 
    "outputType": "LogService", 
    "inputType": "file", 
    "inputDetail": {
        "logPath": "/logPath", 
        "filePattern": "access.log", 
        "logType": "json_log", 
        "topicFormat": "default", 
        "discardUnmatch": false, 
        "enableRawLog": true, 
        "fileEncoding": "gbk", 
        "maxDepth": 10
    }, 
    "outputDetail": {
        "projectName": "test-project", 
        "logstoreName": "test-logstore"
    }
}

此处以json模式为例,更多示例请参考配置示例

Lotail配置参数

参数 类型 是否必须 描述
configName string 配置名称,同一Project下配置名必须唯一。
logSample string 日志样例。
inputType string 配置类型,可选pluginfile
inputDetail object 输入类型配置。
outputType string 输出类型,目前只支持LogService
outputDetail object 输出类型配置。
createTime(output-only) int32 创建时间。 服务端返回参数,不支持设置。
lastModifyTime(output-only) int32 最后一次修改时间。 服务端返回参数,不支持设置。

inputDetail 基础配置

下述列表为所有类型的基础配置:

属性 类型 是否必须 描述
filterKey array 用于过滤日志所用到的 key,只有 key 的值满足对应 filterRegex 列中设定的正则表达式,日志才是符合要求的。
filterRegex array 与 filterKey 对应的正则表达式, filterRegex 的长度和 filterKey 的长度必须相同。
shardHashKey array 默认按照负载均衡模式写入,开启后按照ShardHashKey模式写入。支持的值包括 __topic____hostname__, __source__
enableRawLog bool 是否上传原始日志。
sensitive_keys array 脱敏功能配置,类型为数组,SensitiveKey详细介绍参考下述表格。
mergeType string 聚合方式,默认按照Topic方式聚合。取值为 topiclogstore
delayAlarmBytes int 采集进度落后的告警阈值,默认为209715200,即200 MB。
adjustTimezone bool 是否调整日志时区,仅在配置时间解析情况下使用。
logTimezone string 时区偏移量,例如若日志时间为东八区,则该值为GMT+08:00
priority int 日志发送优先级,默认为0,若需设置为高优先级,则设置为1

其中,SensitiveKey配置如下:

属性 类型 是否必须 描述
key string 日志Key名称。
type string 脱敏方式,取值为constmd5
  • 若取值为const,则将敏感内容替换成const字段取值内容。
  • 若取值为md5,则将敏感内容替换为其对应的MD5值。
regex_begin string 敏感内容的前缀。
regex_content string 敏感内容正则表达式。
all bool 是否替换该字段中所有的敏感内容。建议设置为true
const string type设置为const时必须填写。
例如日志中存在字段content,内容为 [{'account':'1812213231432969','password':'04a23f38'}, {'account':'1812213685634','password':'123a'}],现在需要将其中的password部分脱敏,则SensitiveKey配置为:
"key" : "content"
"type" : "const"
"regex_begin" : "'password':'"
"regex_content" : "[^']*"
"all" : true
"const" : "********"
				
最终脱敏后的日志内容为:
[{'account':'1812213231432969','password':'********'}, {'account':'1812213685634','password':'********'}]

inputDetail 文本类型配置

该部分为所有文本文件类型需要的基础配置:

属性 类型 是否必须 描述
logType string 如果选择文件类型,参数为必填项,目前可选:

Json(json_log

飞天格式(apsara_log

完整正则(common_reg_log

分隔符模式(delimiter_log

logPath string 日志所在的父目录,例如/var/logs/
filePattern string 日志文件的Pattern,例如 access*.log
topicFormat string Topic 生成方式,支持以下四种类型:
  • none,表示 topic 为空。
  • default,表示将日志文件路径作为 topic。
  • group_topic,表示将应用该配置的机器组 topic 属性作为 topic。
  • 其他值表示将日志文件路径的某部分作为 topic,如/var/log/(.*).log
timeFormat string 日志时间格式,如%Y/%m/%d %H:%M:%S
preserve bool true 代表监控目录永不超时,false 代表监控目录 30 分钟超时,默认值为 true。
preserveDepth integer 当设置 preserve 为 false 时,指定监控不超时目录的深度,最大深度支持 3。
fileEncoding string 支持两种类型:utf8gbk
discardUnmatch bool 是否丢弃匹配失败的日志。
maxDepth int 最大目录监控深度范围0-1000,0代表只监控本层目录。
delaySkipBytes int 采集落后的丢弃阈值,默认为0,即不丢弃。当采集落后超过该值时,则直接丢弃落后的数据。
isDocherFile bool 是否为容器内文件,默认为false。详细字段含义请参考容器内文件采集
dockerIncludeLabel object 容器label白名单,采集包含白名单中Label的Docker容器日志,为空表示全部采集。
dockerExcludeLabel object 容器label黑名单,不采集包含黑名单中Label的Docker容器日志,为空表示全部采集。
dockerIncludeEnv object 容器环境变量白名单,采集包含白名单中的环境变量的日志,为空表示全部采集。
dockerExcludeEnv object 容器环境变量黑名单,采集不包含黑名单中的环境变量的日志,为空表示全部采集。
  • 完整正则/极简日志配置

    下述为完整正则/极简模式特有的匹配:

    属性 类型 是否必须 描述
    key array 日志内容抽取结构的key。
    logBeginRegex string 行首正则表达式。
    regex string 提取字段的正则表达式。
    极简模式是完整正则模式的一个特例,极简模式配置方式如下:
    "key" : ["content"]
    "logBeginRegex" : ".*"
    "regex" : "(.*)"
  • JSON日志配置
    下述为JSON默认特有配置:
    属性 类型 是否必须 描述
    timeKey string 指定时间字段的key 名称。
  • 分隔符日志配置
    下述为分隔符模式特有配置:
    属性 类型 是否必须 描述
    separator string 分隔符。
    quote string 引用符。
    key array 日志抽取结果的key列表。
    timeKey string 指定时间字段key名称,必须在key列表里面。
    autoExtend bool 当日志中实际的key数量大于配置的key数量时,是否自动扩展。
  • 飞天日志配置
    下述为飞天模式特有配置:
    属性 类型 是否必须 描述
    logBeginRegex string 行首正则表达式。

inputDetail 插件配置

下述为插件模式特有的配置,具体请参考插件输入类型
属性 类型 是否必须 描述
plugin object 插件所需json对象,具体请参考插件输入类型

outputDetail

用于配置日志输出的Project、Logstore。
属性 类型 是否必须 描述
projectName string 项目名称,必须为请求的project名,否则报错。
logstoreName string 日志库名称。

配置示例

  • JSON模式:
    {
        "configName": "logConfigName", 
        "outputType": "LogService", 
        "inputType": "file", 
        "inputDetail": {
            "logPath": "/logPath", 
            "filePattern": "access.log", 
            "logType": "json_log", 
            "topicFormat": "default", 
            "discardUnmatch": false, 
            "enableRawLog": true, 
            "fileEncoding": "gbk", 
            "maxDepth": 10
        }, 
        "outputDetail": {
            "projectName": "test-project", 
            "logstoreName": "test-logstore"
        }
    }
  • 分隔符模式:
    {
        "configName": "logConfigName", 
        "logSample": "testlog", 
        "inputType": "file", 
        "outputType": "LogService", 
        "inputDetail": {
            "logPath": "/logPath", 
            "filePattern": "*", 
            "logType": "delimiter_log", 
            "topicFormat": "default", 
            "discardUnmatch": true, 
            "enableRawLog": true, 
            "fileEncoding": "utf8", 
            "maxDepth": 999, 
            "separator": ",", 
            "quote": "\"", 
            "key": [
                "test", 
                "test2"
            ], 
            "autoExtend": true
        }, 
        "outputDetail": {
            "projectName": "test-project", 
            "logstoreName": "test-logstore"
        }
    }
  • 完整正则模式:
    {
        "configName": "logConfigName", 
        "outputType": "LogService", 
        "inputType": "file", 
        "inputDetail": {
            "logPath": "/logPath", 
            "filePattern": "*", 
            "logType": "common_reg_log", 
            "topicFormat": "default", 
            "discardUnmatch": false, 
            "enableRawLog": true, 
            "fileEncoding": "utf8", 
            "maxDepth": 10, 
            "key": [
                "content"
            ], 
            "logBeginRegex": ".*", 
            "regex": "(.*)"
        }, 
        "outputDetail": {
            "projectName": "test-project", 
            "logstoreName": "test-logstore"
        }
    }
  • Plugin插件模式(docker标准输出类型):
    {
        "configName": "logConfigName", 
        "outputType": "LogService", 
        "inputType": "plugin",
        "inputDetail": {
            "plugin": {
                "inputs": [
                    {
                        "detail": {
                            "ExcludeEnv": null, 
                            "ExcludeLabel": null, 
                            "IncludeEnv": null, 
                            "IncludeLabel": null, 
                            "Stderr": true, 
                            "Stdout": true
                        }, 
                        "type": "service_docker_stdout"
                    }
                ]
            }
        }, 
        "outputDetail": {
            "projectName": "test-project", 
            "logstoreName": "test-logstore"
        }
    }